目标是从移动设备上拍摄的照片中获取选定区域的颜色。所以我需要以编程方式进行一些图像处理。是否存在将颜色近似为自然值的算法?
照片上的颜色到现实生活中的价值
在一般情况下,不,您不能从数字图像中准确地估计物体的颜色。
人类视觉系统
你看到的是从物体表面反射的光。首先需要用光照亮物体。这种光具有某种光谱(光子能量的概率密度函数)。当光线照射到物体上时,物体会吸收一些光线。每种波长的光被吸收多少取决于物体的材料。未被吸收的光被反射。由于吸收了某些波长,这种反射光的光谱与照亮物体的光谱不同。
您用四种类型的光敏细胞感应反射光。每种类型的细胞对不同波长的光都有自己的响应能力(注意图片)。最后,大脑将来自光敏细胞的数据结合起来,并产生你观察到的颜色信息。
什么是颜色?
那么颜色的自然价值是什么?它取决于物体的反射和吸收特性,以及场景的照明,但您可能可以将其描述为在特定照明下从物体反射的光的观察波长分布。因此,如果我们可以重建观察到的光的波长分布,我们就可以描述光颜色的自然值。
数码相机如何捕捉色彩?
在数码相机中,光敏单元通常被过滤器图案所取代,过滤器图案通常试图捕捉红色、绿色和蓝色波长的光。每个滤光片+光敏传感器对不同波长的光都有一定的响应能力。不同传感器之间的响应能力可能会有很大差异,但它们通常会尝试模仿人类视觉系统的响应能力(例如,参见本文档第 39 页的 MT9P031 量子效率曲线)。
计算机处理的RGB图像通常具有三个整数值,红色、绿色和蓝色。这些是由相机的过滤传感器捕获的光谱的加权积分。
如何从数字图像中近似光谱?
您无法从三个积分重建光谱,因为光谱有无数种可能性,当用相机系统的量子效率加权时,它们会产生积分。
您最多可以使用参考颜色(例如 GretagMacbeth)捕获颜色表,然后使用为其生成 ICC 配置文件的软件校准设备(例如您的相机)。
这允许您在独立于设备的模型 (CIE XYZ) 中表示来自相机传感器的 RGB 颜色。
校准显示器后,您可以在设备之间映射颜色,使颜色看起来相似。
当然这只能通过色域映射来近似设备之间的颜色恒常性。它不会告诉您任何有关自然色值的信息。
此外,捕获的颜色始终取决于照明(这也适用于校准的相机)。
要从物理角度测量颜色,您需要一个分光计。
由任何模型(如 RGB、XYZ、ABCD...)表示的颜色只是可见光谱中强度直方图的简化(在某些波长范围内的总和)。