概要:1 CCM定义及出现的原因;2 CCM的算法设计;3 注意事项
1. CCM是什么以及出现的原因
1.1 CCM是什么
Color Correction Matrix (CCM)是一个由至少俩矩阵合在一起的矩阵。
如图1所示一般的ISP流程,在去马赛克过后就进行了CCM。之后再进行Gamma校正。
图 1 ISP示例
Gamma之后ISP中的空间就变成了非线性sRGB空间了。但必须在这之前进行sensor_RGB空间到XYZ空间的转换再到线性sRGB空间的转换。
1.2 CCM出现的原因
是因为颜色空间的转换。如图2所示是CCM之前和之后的对比图。可以明显看出差别。
图2 CCM之前和之后对比图
2 CCM的算法设计
图3可知,由sensor_RGB空间分别经过 和 以及 校正完成。其中,sensorRGB空间我们称之为“源色彩空间",非线性sRGB空间称之为“目标颜色空间”,目前,我们能够得到源色彩空间的“不饱和图”对应的24色色快,也有非线性sRGB空间的“饱和图”对应的24色色快,而 和 的数值是已知的,那么,只需要将非线性sRGB空间的图片经过反 校正然后再转换到XYZ空间,那时就可以和sensorRGB数值联立从而求得矩阵 ,继而求得 。
图 3 空间转换示意图
具体算法大致分两类:模型法和经验法。模型法是希望通过设备呈色机理进行研究,因为用的少,在此不作介绍。经验法是一种“暴力”法,直接通过输入和输出期望得到一个映射,本文将介绍两个典型算法,多项式拟合和三维查找表(3D-LUT)法。
2.1 多项式拟合(最小二乘)
首先对非线性sRGB做反Gamma校正得到线性sRGB,
=
之后,将线性sRGB转换至XYZ空间,
= *
这时我们可以得到如下式,
其中,m是色块的大小,如果取24色卡,则m=24,n为每个色块的平均颜色值,n=3,显然m>n,这是过定问题,可得,
求得,
总结:
这种算法是ISP中最常用到的拟合方法,简单有效。但毕竟是非线性映射的线性模拟,所以误差在所难免。
2.2 3D-LUT
三个步骤。
分割:把源空间按照一定的采样间隔划分成栅格,如图4所示,
图 4 RGB空间和Lab(权且当作XYZ)空间的分割示意图
重构:建立源空间和目标空间之间的联系;
重构的质量跟重构采取的映射,插值算法有关。从映射的角度来说,从sensor_RGB转到XYZ空间是一种非线性映射,所以需要找非线映射的函数,可想而知,神经网络的效果会很好,历史文章证明了BP算法在转换中的有效性,CNN显然也可以作用在此处。从插值算法的角度来说,比如四面体插值,如图5所示,源空间四个点为p0,p1,p2,p3,目标空间的对应值分别是q0,q1,q2,q3,如果输入点为p,则对应的输出值q为:
其中, = 表示权值, 为各个顶点与输入点的距离。这只是一种加权方式,还有很多种。
图 5 四面体插值示意图
建表:将源空间数据和目标空间数据按照次序放入表中,形成查找表;
总结:
查找表用途广泛,精度也很高,但是因为占用内存太多被弃之不用。
3 注意事项
- 为什么实际ISP中一个光源需要一个CCM
因为在sensorRGB空间转换到XYZ空间的时候,不同光源下组成的sensorRGB不一样,所以转换矩阵会很不一样。
- CCM只是改变饱和度吗
不是。也改变了彩色色差。严格来说,学术领域研究的Color Constancy和AWB并不能划等号,我更偏向于认为Color Constancy=AWB+CCM。
- CCM出现的最本质原因是什么
是因为相机的感光曲线和人类并不相同, 矩阵其实是在弥补CIE1931RGB系统光谱三刺激值坐标轴的负数部分。
- CCM还有什么作用
可以调节颜色风格。只需要修改一些参数即可,具体可实际摸索,很简单。
- CCM缺陷在哪里,需要注意什么
会增强彩色噪声,所以低照度下的CCM是个问题。
- CCM和AWB的评价空间为何不同
CCM在Lab空间进行评测。我认为,AWB不在Lab评测的原因在于AWB很多算法只能估计得到色度值(r,g),所以没有办法转换到Lab.