2013-10-27 35 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可能更有效。