【问题标题】:Algorithm to detect the change in visible luminosity in an image检测图像中可见光度变化的算法
【发布时间】:2014-08-12 16:37:09
【问题描述】:

如果我可以计算 RGB、HSV、HSL 和 CMYK 颜色空间,我想要一个公式来检测/计算图像一部分中可见光度的变化。

例如:在上图中,我们会注意到图像的左侧比右侧更亮,右侧处于阴影之下。

【问题讨论】:

  • 您是在寻找一种类型的解决方案,还是只为类似于示例的文档寻找一种解决方案?
  • 我正在寻找适用于所有图像的通用解决方案。

标签: image algorithm image-processing imagemagick photoshop


【解决方案1】:

第一个问题是“可见光度”。我的意思是几件事之一。这次讨论应该是一个好的开始。 (是的,它也有不完整和矛盾的答案。)

Formula to determine brightness of RGB color

您应确保对未应用任何伽马校正的线性图像进行操作。 AFAIK Photoshop 在过滤过程中不会对图像进行去伽玛和重新伽玛,这可能会产生错误的结果。这完全取决于您想要的准确结果。 Photoshop 希望事物看起来不错,而不是精确。

原则上,您应该首先选择一个公式来将您的 RGB 值转换为适合您使用的某个亮度值。然后你有一个单通道图像,你需要使用高斯滤波器、滑动平均或其他一些合适的滤波器对其进行滤波。不幸的是,这可能需要特殊的工具,如 photoshop/gimp/等。类型程序倾向于偷工减料。

但是,您可能需要考虑一件事。如果您在图像上具有均匀的亮度梯度,则眼睛很高兴并且不会感觉到它。如果图像中的对比度在整个图像中是恒定的,则不会注意到相当大的差异。不幸的是,如果您至少不了解图像的内容,那么对比度的定义就没有多大意义。 (如果您已扫描/拍摄文档,则墨水和纸张之间的对比度很明显。)在您的示例图像中,亮度变化非常突然,这使得变化可见。

只是为了向您展示人类视觉在确定“亮度”方面是多么奇怪,请看经典的棋盘阴影错觉:

http://en.wikipedia.org/wiki/Checker_shadow_illusion

所以,我的印象是,在寻找合适的图像处理方法的过程中,谈论转换公式可能是第二步或第三步。第一步是尝试更详细地定义问题。你想完成什么?

【讨论】:

    【解决方案2】:

    我对此进行了一些思考,并在 Photoshop 中进行了一些实验,尽管您也可以使用免费的 ImageMagick。这是我想出的。

    第 1 步 - 转换为 Lab 模式并丢弃 ab 通道,因为 Lightness 通道包含大部分亮度信息,而这最终正是我们要寻找的。

    第 2 步 - 拉伸剩余 L 通道的对比度(使用 Levels)以突出变化。

    第 3 步 - 对图像执行高斯模糊,以消除图像中的局部高频变化。我想我使用了 10-15 像素的半径。

    第 4 步 - 打开Histogram 窗口并获取single row marquee 并观察选择不同行时的直方图变化。

    第 5 步 - 寻找强双峰直方图(两个不同的峰值)以识别照明变化。

    这不是一个完整的通用解决方案,但可能会提供一些指导并让更了解的人为您提出改进建议!!!请注意,该方法要求图像具有一些高度均匀的区域,例如输入图像上的白色水平条。然而,几乎任何算法都很难区分一张带有不均匀光线阴影的白纸和一张上面放着一张灰色纸的同一张纸……

    在下面的图片中,我在右上角叠加了直方图。在第一个中,您可以看到直方图不是窄的和双峰的,因为虚线的水平选择框横跨图像的条形码区域。

    在随后的图像中,您可以看到一个强烈的双峰直方图,因为虚线选择框横跨图像的均匀区域。

    【讨论】:

    • 非常感谢您的回答。但是我应该在使用高斯模糊滤镜之前将其更改为灰度吗?
    • 转换为 Lab 或 HSV/HSL 已经在从原始的三通道 RGB 图像中制作灰度图像(即单通道单色图像)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2017-12-27
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多