【发布时间】:2018-10-24 10:26:19
【问题描述】:
我会在一开始就解决这个问题:这可能是一个非常愚蠢的问题,而且它也可能属于不同的 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.
第二步
这是我的问题所在。有没有办法将图像变亮或变暗到指定的灰度?
ImageMagick 提供了modulate 函数,但我目前发现的示例需要一个百分比“变亮/变暗”,例如:
convert $file -modulate 200% ${file%.*}_bright.png
我是不是完全找错树了?
编辑
一些示例图片:
参考“足够亮”的图片:
“暗”图像示例:
【问题讨论】:
-
我认为你的问题适合这里。
-
我不知道如何在 ImageMagick 中执行此操作,因此不会发布答案。但是寻找直方图均衡。这是使多个图像具有均匀亮度的标准方法。它使图像具有近似均匀的强度分布(直方图或多或少是平坦的),但也可用于强制一个图像的强度分布与另一张图像匹配。
-
您可以通过多种方式进行图像匹配:直方图匹配、亮度/对比度(均值/标准)匹配或高斯重分布或直方图均衡。用于 histmatch、match image 和 redist 的 ImageMagick bash shell 脚本可以在我的网站fmwconcepts.com/imagemagick/index.php 上找到。 ImageMagick 有一个函数,-level,类似于 Photoshop/GIMP 的关卡。亮度/对比度调整通常是相对的(通常以百分比变化),而不是绝对的灰度级。在 ImageMagick 中,您可以使用 -fuzz ... -fill ... -opaque 将任何灰度级范围更改为一个特定值
-
@fmw42 这些脚本真的很有帮助,谢谢!我添加了一些示例图像,因为它会导致图像中出现一些白色伪影(我可以通过直接将亮度缩放一些 % 来避免这种情况),所以我想知道您是否对可能的稍微不同的方法有任何建议不给这些神器?
-
@Joe Healey。匹配图像脚本可能会更好。你试过吗?也正如 Mark Setchell 提到的使用另一个色彩空间或通道。可以在 histmatch 和 matchimage 脚本中选择。直方图均衡会产生粗糙的结果。根据我的 matchimage 脚本,我更喜欢对比度/亮度(均值/标准)方法。对于一个简单的命令,试试下面的 GeeMack 的命令。我注意到您的深色图像没有显示绿色区域。这是预期的吗?绿地有多重要?它们会随着图像的变化而变化吗?
标签: bash image-processing imagemagick image-manipulation