生成一个值以反映图像的平均亮度

时间:2010-11-21 22:29:45

标签: linux image bash brightness

我需要确定图像是否高于某个亮度。 使用0 - 255的比例我想在此范围内生成一个值以反映图像亮度。

即。白色图像为255,黑色图像为0。

所有这一切都需要通过我正在建立的bash脚本进行。 我不知道lib可以为我做什么图像。

2 个答案:

答案 0 :(得分:6)

一般来说,这是信号处理的经典问题之一,根据您如何定义“亮度”,有几种方法。对于图像的“亮度”,声音信号的“响度”等,它通常是相同的。

您可以用作通用“亮度”的一些想法是:

  • 所有像素的平均值(即将所有像素的所有亮度相加,然后除以像素的总量,即宽度*高度)。
  • 建立亮度分布的直方图,然后在该直方图中选择 x 这样的点<98>(95%,90%,70% - 这个数字可以变化)你的所有像素图像不如 x 亮。它被称为百分位数。
  • 计算所有像素的"root mean square" (RMS)(所有像素的总和方块,除以像素总数,从中提取平方根)。

有多个图像库可以产生良好的效果。从shell脚本中使用的最简单的可能是ImageMagick / GraphicsMagick - 你可以得到两个简单的平均值,并做一些更复杂的直方图来检查百分位数。

答案 1 :(得分:4)

尝试ImageMagick gray statshistogram

convert rose: -colorspace gray -format "%[fx:100*mean]%%" info: