设置特定图像亮度
Setting specific image brightness
我会在一开始就解决这个问题:这可能是一个非常愚蠢的问题,它也可能属于不同的 SE,所以如果是这样的话请随时告诉我。
我有一堆图像,它们是灰度和绿色通道的合并。有些图像比其他图像暗得多,而其余图像则大致相同。
我想 'homogenise' 尽我所能地调整图像集的亮度(不一定要完美)。
有谁知道是否有一种相当简单的方法来做到这一点?
这就是我目前考虑的方法,利用 ImageMagick(一些 bash
伪代码和实际代码,因为我在 OSX 上使用 CLI imagemagick,但是其他解决方案也可以):
第 1 步
阅读我的 'reference images' 集,brightness/grey 级别我还可以,得到平均灰度级别:
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
功能,但我目前找到的示例需要百分比 'brightening/darkening',例如:
convert $file -modulate 200% ${file%.*}_bright.png
我是不是完全找错树了?
编辑
一些示例图片:
参考 'bright enough' 图片:
示例'dark' 图片:
直方图均衡图像 - 这看起来效果很好,但在某些区域引入了一些白色伪像。
使用 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 命令行对此进行测试,但这个概念应该可行。
使用我的 ImageMagick 脚本 histmatch 和 matchimage,这里有一些使用您的两个图像的结果。 ImageMagick 6.9.9.43 Q16 和 Mac OSX Sierra.
histmatch -c rgb reference.jpg dark.png dark_histmatch_rgb.png
histmatch -c gray reference.jpg dark.png dark_histmatch_gray.png
matchimage -c hsi dark.png reference.jpg dark_matchimage_hsi.png
matchimage -c ycbcr dark.png reference.jpg dark_matchimage_ycbcr.png
我会在一开始就解决这个问题:这可能是一个非常愚蠢的问题,它也可能属于不同的 SE,所以如果是这样的话请随时告诉我。
我有一堆图像,它们是灰度和绿色通道的合并。有些图像比其他图像暗得多,而其余图像则大致相同。
我想 'homogenise' 尽我所能地调整图像集的亮度(不一定要完美)。
有谁知道是否有一种相当简单的方法来做到这一点?
这就是我目前考虑的方法,利用 ImageMagick(一些 bash
伪代码和实际代码,因为我在 OSX 上使用 CLI imagemagick,但是其他解决方案也可以):
第 1 步
阅读我的 'reference images' 集,brightness/grey 级别我还可以,得到平均灰度级别:
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
功能,但我目前找到的示例需要百分比 'brightening/darkening',例如:
convert $file -modulate 200% ${file%.*}_bright.png
我是不是完全找错树了?
编辑
一些示例图片:
参考 'bright enough' 图片:
示例'dark' 图片:
直方图均衡图像 - 这看起来效果很好,但在某些区域引入了一些白色伪像。
使用 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 命令行对此进行测试,但这个概念应该可行。
使用我的 ImageMagick 脚本 histmatch 和 matchimage,这里有一些使用您的两个图像的结果。 ImageMagick 6.9.9.43 Q16 和 Mac OSX Sierra.
histmatch -c rgb reference.jpg dark.png dark_histmatch_rgb.png
histmatch -c gray reference.jpg dark.png dark_histmatch_gray.png
matchimage -c hsi dark.png reference.jpg dark_matchimage_hsi.png
matchimage -c ycbcr dark.png reference.jpg dark_matchimage_ycbcr.png