専門用語については詳しく説明しませんので、興味のある方は記事の最後にある参考リンクをご覧ください。わかりやすい説明があります:
まずサンプル画像を探してみましょう (Canon 550D で撮影) ):
サンプル画像: Butterfly.jpg
Imagick を使用して画像ヒストグラムを実装する方法を見てみましょう:
コードをコピーします コードは次のとおりです:
$file = 'butterfly.jpg';
$size = array(
'width' => 256,
'height' => 100,
);
$image = new Imagick($file); range(0, 255), 0);
foreach ($image->getImageHistogram() as $pixel) {
$rgb = $pixel->getColor();
$histogram[$rgb['r'] ] += $pixel->getColorCount( );
$histogram[$rgb['g']] += $pixel->getColorCount();
$histogram[$rgb['b']] += $ピクセル->getColorCount();
$max = max($histogram);
$threshold = ($image->getImageWidth() * $image->getImageHeight()) / 256 * 12; ($max > $threshold) {
$max = $threshold;
$image = new Imagick()
$image->newImage($size' ], $size['height'], 'white');
foreach ($histogram as $x => $count) {
if ($count == 0) {
Continue
}
$draw-> ;setStrokeColor('black');
$ height = min($count, $max) / $max * $size['height']
$draw->line($x, $size['height']) , $x, $size['height' ] - $height);
$image->drawImage($draw);
}
$image->setImageFormat('png) ');
$image->writeImage ('histogram.png');
注: $threshold 値がコードに追加される理由は、一部のカラー レベルの値が異なる場合があるためです。非常に大きいため、処理しないと最終結果に影響を及ぼします。なぜ最初に 256 で割ってから 12 をかける必要があるのかについては、まったく理由はありません。他の方法を使用することもできます。
最終的なヒストグラムは基本的に Photoshop と同じ効果になります。これは Photoshop のものです:
Photoshop によって生成されたヒストグラム
注: Photoshop で画像を開いた後、ウィンドウを選択し、ヒストグラムを選択します。
この記事は、実際には RGB チャネルのヒストグラムの描画方法に関するものです。原則として、RGB ヒストグラムは、赤、緑、青の 3 原色のヒストグラムの累積結果です。 、青、上記のコードは少し変更できます。
注: XARG.ORG には、HTML5 で実装された画像ヒストグラムのオープンソース プロジェクトがあります。その効果は優れており、学ぶ価値があります。
最後に、ちなみに、写真の知識に興味がある場合は、「デジタル カメラのヒストグラムを解釈する方法」を参照してください。
http://www.bkjia.com/PHPjc/324322.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/324322.html技術記事専門用語について詳しく説明するつもりはありません。興味のある方は、記事の最後にあるわかりやすい説明がある参考リンクを参照してください。まず、サンプル画像を探してみましょう (Canon を使用して...)。