【问题标题】:php imagemagick statistics usagephp imagemagick 统计使用情况
【发布时间】:2013-11-06 02:41:32
【问题描述】:

我正在尝试使用 Imagemagick 的 getImageChannelStatistics 函数计算图像的平均亮度。如果达到给定阈值,我将使用modulateImage 降低亮度。

array Imagick::getImageChannelStatistics ( void )

第一个问题: 每个通道的返回平均值大于 255,尽管颜色深度为 8。 如何解释这些值?

数组([平均值] => 27510.293108724 [最小值] => 0 [最大值] => 65535 [标准偏差] => 23761.909802897 [深度] => 8)

数组([平均值] => 22654.046931424 [最小值] => 0 [最大值] => 65535 [标准偏差] => 21085.309916751 [深度] => 8)

数组([平均值] => 21137.418988715 [最小值] => 0 [最大值] => 65535 [标准偏差] => 20369.810455127 [深度] => 8)

第二个问题: 图像的平均值和亮度之间有什么关系?

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

【问题讨论】:

    标签: php image-processing imagemagick statistics


    【解决方案1】:

    第一个问题:平均值是一个通道中所有像素的算术平均值(平均值)。它是相对于 量子深度 的,它是 8 位或 16 位,具体取决于编译时设置。您可以致电getQuantumRange 获取最小和最大量子值。范围应为0 - 2550 - 65535。如果您将 mean 值除以量子范围最大值,您将得到一个归一化为范围 0.0 - 1.0 的值。

    第二个问题modulateImage将图像转换为操作控件modulate:colorspace指定的色彩空间,默认为HSL(色相/饱和度/亮度),可以用setOption更改.然后每个像素的亮度值乘以亮度参数,饱和度值乘以饱和度参数,色调参数加上色调值。亮度参数b 将近似生成平均像素值乘以b 的图像。它取决于精确的色彩空间转换和像素值的潜在裁剪。更多详情可以在ImageMagick Color Modifications example page找到。

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

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多