如果可以计算RGB,HSV,HSL和CMYK颜色空间,我想要一个公式来检测/计算图像某一部分的可见光度变化。
E.g:在上图中我们会注意到,与右侧相比,图像的左侧更明亮。
答案 0 :(得分:1)
我有点想过这个,并在Photoshop中做了一些实验,尽管你也可以使用免费的ImageMagick。这就是我想出来的。
第1步 - 转换为实验室模式并放弃a
和b
频道,因为亮度频道包含大部分亮度信息,最终是我们的寻找。
第2步 - 延长剩余L
频道的对比度(使用Levels
)以突出变体。
步骤3 - 对图像执行高斯模糊,以消除图像中的局部高频变化。我想我使用了半径10-15像素。
第4步 - 启用Histogram
窗口并选择single row marquee
并观察直方图更改,因为选择了不同的行。
第5步 - 注意一个强双峰直方图(两个不连续的峰)来识别光照变化。
这不是一个完整的,通用的解决方案,但可能会有一些指示,并让那些知道更好的人建议改善你!请注意,该方法要求图像具有一些高均匀性区域,如输入图像上的白色水平条。然而,几乎任何一种算法都很难分辨出一张白纸和一张纸上的不均匀光线之间的区别,以及同一张纸,上面放着一张灰色的纸张...... < / p>
在下面的图片中,我在右上方叠加了直方图。在第一个中,您可以看到直方图不是狭窄且双峰的,因为虚线水平选择选框是跨越图像的条形码区域。
在随后的图像中,您可以看到强双峰直方图,因为虚线选择选框位于图像的均匀区域。
答案 1 :(得分:0)
第一个问题是&#34;可见光度&#34;。我指的是几件事之一。这个讨论应该是一个好的开始。 (是的,它也有不完整和矛盾的答案。)
Formula to determine brightness of RGB color
您应该确保对未应用任何伽马校正的线性图像进行操作。 AFAIK Photoshop在过滤过程中不会显示degamma和regamma图像,这可能会产生错误的结果。这一切都取决于你想要的准确结果。 Photoshop希望事情看起来不错,而不是精确。
原则上,您应首先选择一个公式,将RGB值转换为适合您使用的某个光度值。然后你有一个单通道图像,你需要用高斯滤波器,滑动平均值或其他一些合适的滤波器进行滤波。不幸的是,这可能需要像photoshop / gimp / etc这样的特殊工具。类型程序倾向于偷工减料。
但是有一件事你可能会考虑。如果您在图像上具有均匀的亮度梯度,则眼睛会很高兴并且不会感知到它。如果图像中的对比度在整个图像中是恒定的,那么相当大的差异就不会被注意到。不幸的是,如果您至少不了解图像的内容,那么对比度的定义就没有多大意义。 (如果您扫描/拍摄了文档,则墨水和纸张之间的对比度明显不同。)在样本图像中,亮度突然变化,这使得更改可见。
只是为了向你展示人类视觉在确定亮度&#34;时有多奇怪,请参阅经典格子阴影错觉:
http://en.wikipedia.org/wiki/Checker_shadow_illusion
所以,我的印象是,谈论转换公式可能是寻找合适的图像处理方法的第二步或第三步。第一步是尝试更详细地定义问题。你想要完成什么?