设置特定图像亮度

时间:2018-05-14 17:18:16

标签: bash image-processing imagemagick image-manipulation

我一开始就把这个拿走了:这可能是一个非常愚蠢的问题,也可能属于不同的SE,所以请随时告诉我这是不是情况下。

我有一堆图像,它们是灰度和绿色通道的合并。有些图像比其他图像暗得多,而其余图像则大致相同。

我想要同质化'尽可能最好的图像集的亮度(它不是必须完美)。

有没有人知道是否有一种相当简单的方法可以做到这一点?

这就是我目前正在考虑使用ImageMagick(一些bash伪代码和实际代码,因为我在OSX上使用CLI imagemagick,但其他解决方案没关系):

第1步

阅读我的一组参考图片'亮度/灰度级别我可以使用并获得平均灰度级:

greyvals = ()
for file in an_array_of_image_files ; do
     # get array of grey values
     greyval=$(convert $file -colorspace Gray -format "%[mean]" info:)
     greyvals+=$greyval

# average the greyvals of the reference set through some mean function.

第2步

这是我的问题所在。有没有办法使图像变亮或变暗到指定的灰度级?

ImageMagick提供modulate功能,但到目前为止我发现的示例需要一个百分比“亮白/变暗”,例如:

convert $file -modulate 200% ${file%.*}_bright.png

我是否完全吠叫了错误的树?

修改

一些示例图片:

参考足够明亮'图像:

enter image description here

一个例子' dark'图像:

enter image description here

直方图均衡图像 - 这看起来效果很好,但在某些区域引入了一些白色文物。 enter image description here

2 个答案:

答案 0 :(得分:2)

使用ImageMagick 7我会考虑这种方法......

adjuster=`convert input.png -format %[fx:50-(mean*100)] info:`

这将调整每个输入图像,使整体平均亮度为50%。使用IM6,您可以使用类似这样的命令将所需的值转换为变量...

convert input.png -brightness-contrast $adjuster output.png

然后在上面的IM7示例中使用该变量作为“-brightness-contrast”运算符的参数,类似这样......

{{1}}

我没有从* nix命令行测试过这个,但这个概念应该可行。

答案 1 :(得分:1)

使用我的ImageMagick脚本,histmatch和matchimage,这里有一些结果使用你的两个图像。 ImageMagick 6.9.9.43 Q16和Mac OSX Sierra。

histmatch -c rgb reference.jpg dark.png dark_histmatch_rgb.png

enter image description here

histmatch -c gray reference.jpg dark.png dark_histmatch_gray.png

enter image description here

matchimage -c hsi dark.png reference.jpg dark_matchimage_hsi.png

enter image description here

matchimage -c ycbcr dark.png reference.jpg dark_matchimage_ycbcr.png

enter image description here