1

Imagemagick のgetImageChannelStatistics関数を使用して、画像の平均輝度を計算しようとしています。modulateImage次に、特定のしきい値に達した場合に明るさを下げるために使用します。

array Imagick::getImageChannelStatistics ( void )

1 番目の質問: 色深度は 8 ですが、返された各チャネルの平均値は 255 を超えています。これらの値をどのように解釈しますか?

配列 ([平均] => 27510.293108724 [最小] => 0 [最大] => 65535 [標準偏差] => 23761.909802897 [深さ] => 8)

配列 ([平均] => 22654.046931424 [最小] => 0 [最大] => 65535 [標準偏差] => 21085.309916751 [深さ] => 8)

配列 ( [平均] => 21137.418988715 [最小] => 0 [最大] => 65535 [標準偏差] => 20369.810455127 [深さ] => 8 )

第 2 問: 画像の平均値と明るさの関係は?

bool Imagick::modulateImage ( float $brightness , float $saturation , float $hue )
4

1 に答える 1

1

第 1 の質問: 平均値は、チャネル内のすべてのピクセルの算術平均 (平均) です。これは、コンパイル時の設定に応じて 8 ビットまたは 16 ビットの量子深度に相対的です。を呼び出しgetQuantumRangeて、最小および最大のクォンタム値を取得できます。範囲は または のいずれかである必要があり0 - 255ます0 - 65535。値を量子範囲の最大値で割るmeanと、範囲に正規化された値が得られます0.0 - 1.0

2 番目の質問:modulateImage操作コントロールによって指定された色空間に画像を変換します。この色空間はmodulate:colorspace、デフォルトで HSL (色相/彩度/明度) であり、 で変更できますsetOption。次に、すべてのピクセルの明度値に明るさパラメーターを乗算し、彩度値に彩度パラメーターを乗算し、色相パラメーターを色相値に追加します。明るさパラメータbは、平均ピクセル値に を掛けた画像になりますb。これは、正確な色空間変換と、ピクセル値のクリッピングの可能性に依存します。詳細については、ImageMagick Color Modifications のサンプル ページを参照してください。

明るさとコントラストのみを変更したい場合、levelImageまたはcontrastStretchImageおそらくより効率的です。

于 2013-10-27T16:06:57.440 に答える