2013-10-27 42 views
0

我試圖使用Imagemagick的getImageChannelStatistics函數來計算圖像的平均亮度。如果達到給定閾值,我將使用modulateImage降低亮度。php imagemagick統計使用情況

array Imagick::getImageChannelStatistics (void) 

第一問題: 每個通道的返回平均值是大於255,雖然顏色深度爲8 如何解釋這些值?

陣列([平均] => 27510.293108724 [最小值] => 0 [最大值] => 65535 [standardDeviation] => 23761.909802897 [深度] => 8)

陣列([平均] => 22654.046931424 [陣列([平均值] => 21137.418988715 [最小值] => 0 [最大值] => 65535 [標準偏差] => 65535 [標準偏差] => 21085.309916751 [深度] => 8)

[ ] => 20369.810455127 [depth] => 8)

第二個問題: 什麼是平均值和d圖像的亮度?

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

在此先感謝!

回答

0

第一個問題:平均值是通道中所有像素的算術平均值(平均值)。它與的量子深度相關,它可以是8位或16位,具體取決於編譯時間設置。您可以撥打getQuantumRange以獲得最小和最大量子值。範圍應該是0 - 2550 - 65535。如果將mean值除以量子範圍的最大值,則會得到一個歸一化爲範圍0.0 - 1.0的值。

第二問題modulateImage將圖像轉換爲通過運算控制modulate:colorspace其是HSL(色相/飽和度/亮度)由缺省,並且可以與setOption來改變所指定的色彩空間。然後,將每個像素的亮度值乘以亮度參數,將飽和度值乘以飽和度參數,並將色調參數加到色調值上。亮度參數b將近似產生平均像素值乘以b的圖像。它取決於精確的顏色空間轉換和像素值的潛在削波。更多細節可在ImageMagick Color Modifications example page上找到。

如果您只想更改亮度和對比度,則levelImagecontrastStretchImage可能更有效。