【问题标题】:Setting specific image brightness设置特定的图像亮度
【发布时间】: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


【解决方案1】:

使用 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:`

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

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

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

【讨论】:

    【解决方案2】:

    使用我的 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
    

    【讨论】:

    • matchimage 脚本上使用hsi colourspace 看起来很有希望,谢谢!我会在更多图像上使用它并报告
    • matchimage -c hsi 在没有任何伪影的情况下达到了预期的效果,非常感谢!我会接受这个作为答案。
    • 出于兴趣,你会把脚本放在 github 上吗?或者你有快速/简单的方法来下载它们吗?我可以看到它们中的许多将来对我有用。
    • 抱歉,目前没有将它们放在 GitHub 上的计划,而且我没有海量下载功能,因为我想跟踪其中有多少是真正感兴趣的。
    猜你喜欢
    • 2020-08-29
    • 2011-06-20
    • 2012-02-12
    • 2013-05-09
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多