我会在一开始就解决这个问题:这可能是一个非常愚蠢的问题,而且它也可能属于不同的 SE,所以请随时告诉我是否是这种情况。
我有一堆图像,它们是灰度和绿色 channel 的合并。有些图像比其他图像暗得多,而其余图像则大致相同。
我想尽可能地“均匀化”这组图像的亮度(不一定是完美的)。
有谁知道是否有一种相当简单的方法可以做到这一点?
这就是我目前的想法,利用 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
我是不是完全找错了树?
编辑
一些示例图像:
引用“足够亮”的图像:
“深色”图像示例:
最佳答案
使用 ImageMagick 7 我会考虑这种方法...
magick input.png -brightness-contrast %[fx:50-(mean*100)] output.png
这会将每个输入图像的整体平均亮度调整为 50%。使用 IM6,您可以使用如下命令将所需的值放入变量中...
adjuster=`convert input.png -format %[fx:50-(mean*100)] info:`
然后使用该变量作为命令中“-brightness-contrast”运算符的参数,如上面的 IM7 示例,如下所示...
convert input.png -brightness-contrast $adjuster output.png
我还没有从 *nix 命令行测试过这个,但这个概念应该可行。
关于bash - 设置特定图像亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335759/