Tuning——CC调试(适用高通)

1 基本概念

1.1 色彩基本组成元素

我们通常说的色彩是由三原色组成,三原色即色彩中不能再分解的三种基本颜色,在不同的领域中三原色的组成略有差异:

光学三原色

人的眼睛是根据所看见的光的波长来识别颜色的。可见光谱中的大部分颜色可以由三种基本色光按不同的比例混合而成,这三种基本色光的颜色就是红(Red)、绿(Green)、蓝(Blue)三原色光。

传统美术色彩三原色: 红,黄,蓝

颜料三原色

打印、印刷、油漆、绘画等靠介质表面的反射被动发光的场合,物体所呈现的颜色是光源中被颜料吸收后所剩余的部分,所以其成色的原理叫做减色法原理,减色法原理被广泛应用于各种被动发光的场合 ,在减色法原理中的三原色颜料分别是青(Cyan)、品红(Magenta)和黄(Yellow)

1.2 色彩模型和色域空间

1.2.1 色彩模型和色域的区别的关系

色彩空间(Color Space)是特定的颜色组合。在一个色彩模型下可以有不同的色彩空间,它们根据排列的条件的不同会有不同的色域(所能表示色彩的范围)和含义,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这些色彩模型包含某个色彩域的所有色彩。但一般而言,任何一个色彩域都只是可见光的子集,任何一个颜色模型都无法包含所有的可见光这些颜⾊模型,色彩模型根据不同的划分标准,可以按不同的原则划分为不同的类别。

所谓色彩模型,就是用一定规则来描述(排列)颜色的方法,常见的颜色模型有RGB、HSL(HSV\HSB)、CMYK、XYZ、Lab、YUV等。

色域只是指某个对象能表示色彩范围,而不同色彩空间的色域大多是根据色彩空间设计者的具体需求和应用场景,人为决定的。常见的色彩空间如图:

1.2.2 常见的色彩模型介绍

(1)RGB色彩模型

RGB(Red, Green, Blue)色彩模型是我们使用最多,最熟悉的颜色模型。它采用三维直角坐标系(如图所示的单位立方体)。其中红、绿、蓝原色是加性原色,各个原色混合在一起可以产生复合色。在正方体的主对角线上,各原色的强度相等,产生由暗到明的白色,也就是不同的灰度值。(0,0,0)为黑色,(1,1,1)为白色。正方体的其他六个角点分别为红、黄、绿、青、蓝和紫。

RGB(Red, Green, Blue)颜色模型通常使用于彩色阴极射线管等彩色光栅图形显示设备中,彩色光栅图形的显示器都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉 发出不同亮度的光线,并通过相加混合产生各种颜色;扫描仪也是通过吸收原稿经反射或透射而发送来 的光线中的R、G、B成分,并用它来表示原稿的颜色。

RGB颜色模型称为与设备相关的颜色模型,RGB颜色模型所覆盖的颜色域取决于显示设备荧光点的颜色特性,是与硬件相关的。

(2)XYZ色彩模型

1931CIE-XYZ是1931年CIE在RGB系统基础上,改用三个假想的原色X、Y、 Z建立了一个新的色度系统,用数学方法,选用三个理想的原色来代替实际的三原色,从而将CIE-RGB系统中的光谱三刺激值和色度坐标r、g、b均变为正值的系统。提出原因是由于用来标定光谱色的RGB模型时出现负刺激值,计算不便,也不易理解。

(3)HSV色彩模型

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model),H即色相(Hue),S即饱和度(Saturation)、V指亮度(Lightness)。

色相(Hue):一般用上面的色环来确定色相,就是平常所说的颜色名称,如红色、黄色等,依照在右图的标准色轮上的位置,取0-360度的数值。(也有用0 --100%的方法确定的)。

饱和度(Saturation):是指色彩的纯度,越高色彩越纯,越低则逐渐变灰色,取值0-100%。

明度(V)也叫"亮度",取0-100%。HSV图像模型:

(4)CMYK色彩模型

CMYK(Cyan, Magenta, Yellow)颜色空间应用于印刷工业,一般采用青(C)、品(M)、黄(Y)、黑(BK)四色印刷,在印刷的中间调至暗调增加黑版。当红绿蓝三原色被混合时,会产生白色,但是当混合蓝绿色、紫红色和黄色三原色时会产生黑色。既然实际用的墨水并不会产生纯正的颜色, 黑色是包括在分开的颜色,而这模型称之为CMYK。CMYK颜色空间是和设备或者是印刷过程相关的,则工艺方法、 油墨的特性、纸张的特性等,不同的条件有不同的印刷结果。所以CMYK颜色空间称为与设备有关的表色空间

(5)LAB色彩模型

Lab颜色模型是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。

由于Lab的色彩空间要比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能 得以影射。Lab颜色模型取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表蓝色(a,b)有L=116f(y)-16, a=500[f(x/0.982)-f(y)], b=200[f(y)-f(z/1.183 )];其中: f(x)=7.787x+0.138, x<0.008856; f(x)=(x)1/3,x>0.008856

(6)YUV色彩模型

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y,U,V几个字母不是英文单词的组合词,Y代表亮度,uv代表色差,u和v是构成彩色的两个分量。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号

1.3 常见色域介绍

1.3.1 SRGCB色域空间介绍

sRGB色彩空间(标准红绿蓝色彩空间)是惠普微软于1996年一起开发的用于显示器打印机以及因特网的一种标准RGB色彩空间。也是目前Windows系统和众多原生软件默认支持的色彩空间

sRGB定义了红色、绿色与蓝色三原色的颜色,即在其它两种颜色值都为零时该颜色的最大值。在CIE xy颜色坐标系中红色位于[0.6400, 0.3300]、绿色位于[0.3000, 0.6000]、蓝色位于[0.1500, 0.0600]、白色是位于[0.3127,0.3290]的D65。对于任何的RGB色彩空间来说,非负的R、G、B都不可能表示超出原色定义的三角形即色域范围。CIE 1931 xy色彩图表示的sRGB色彩空间的色域以及原色的位置。白点D65显示在中间。

1.3.2 Adobe RGB色域模型

Adobe RGB色彩空间是一种由Adobe Systems于1998年开发的色彩空间。开发的初衷是为了同时囊括sRGB(电脑常用的色彩空间)和CMYK(印刷常用的色彩空间),这样拍出的数码照片不仅能在电脑上正常显示和编辑,也能印刷出颜色无损而正确的相片。Adobe RGB色彩空间粗略包括了50%的Lab色彩空间中的可视色彩,主要在青绿色(cyan-green)色系上有所提升

1.3.3 Adobe RGB 色域模型和SRGB色域模型的区别

(1)在于开发时间和开发厂家不同。sRGB色彩空间是美国的惠普公司和微软公司于1997年共同开发的标准色彩空间(standard Red Green Blue)。 Adobe RGB色彩空间是由美国以开发Photoshop软件的 Adobe公司1998年推出的色彩空间标准,

(2)两种色彩空间所包含的色彩范围不同,Adobe RGB包含sRGB没有覆盖的色彩空间。Adobe RGB有更加宽广的色彩空间能再现更鲜艳的色彩,

(3)应用领域不同:使得Adobe RGB色彩空间可以应用在印刷等领域。绝大多数显示器以及各种网络服务,都只支持sRGB的色域范围

1.4 色彩校准和白平衡的区别

白平衡,顾名思义:白平衡就是让白色看起来是白色。人类的眼睛之所以把一些物体看成白色的是因为人的大脑可以侦测并且更正像这样的色彩改变,因此不论在阳光、阴霾的天气、室内或荧光下,人们所看到的白色物体颜色依旧。然而数码摄像机拍摄的时候都会遇到这样的问题:在日光灯的房间里拍摄的影像会显得发绿,在室内钨丝灯光下拍摄出来的景物就会偏黄,而在日光阴影处拍摄到的照片则莫名其妙地偏蓝,为了贴近人的视觉标准,数码摄像机就必须模仿人类大脑并根据光线来调整色彩,也就是需要自动或手动调整白平衡来达到令人满意的色彩,这一对数图像数据经过ISP的AW码摄像机输出的信号进行一定修正的过程就叫做白平衡的调整

白平衡处理之后肯定会存在色偏,因此需要RGB域进行色彩矩阵校正,一旦白点被确定,下一步即将所有的颜色转化成所希望的色彩。CCM就是要保持白色(灰色)不变,把其他色彩校正到非常精准的地步

2 CC作用和基本原理

2.1 色彩校正的意义

色彩校正的目的是确保图像的色彩能够被较为精确地再现出拍摄现场人眼看到的情况,由于相机系统中使用的光学(镜头、彩色滤光片等)和传感器的特性,当图像在特定的输出媒体上呈现时,原生RGB数据可能不能为人眼提供忠实的颜色再现。因此,需要进行色彩校正。

通常,3x3矩阵(在三色相机的情况下)用于颜色校正。色彩校正矩阵(CCM)调谐可使色彩再现误差最小化,提高色彩保真度。

2.2 色彩校正的基本原理

理论上,如果三色光的响应,相互之间不会发生影响,没有所谓的交叉效应。理想R/G/B光谱响应如下:

实际人眼对R/G/B的光谱响应如下,RGB的响应并不是完全独立的

sensor 对光谱的响应,在 RGB各分量上与人眼对光谱的响应通常是有偏差的,当然就需要对其进行校正。不光是在交叉效应上,同样对色彩各分量的响应强度也需要校正。通常的做法是通过一个色彩校正矩阵对颜色进行一次校正。

校正矩阵通常由 ISP完成,软件通过修改相关寄存器得到正确的校正结果。另外随着色温的升高,要对色温进行较正,否则,物体在这样的光线条件下所表现出来的颜色就会偏离其正常的颜色,因此需要降低 sensor 对红色的增益,增加 sersor 对蓝光的增益。因此,建议做CCM矩阵时选取不同的色温生成不同的CCM矩阵,然后根据实际色温值插值得到当前色温的CCM矩阵。

3 CCM矩阵

3.1 认识CCM矩阵

|-------|-----|-----|-----|
| CCM矩阵 | 红通道 | 绿通道 | 蓝通道 |
| 红色块 | rr | gr | br |
| 绿色块 | rg | gg | bg |
| 蓝色块 | rb | gb | bb |

3.2 CCM矩阵乘法

(1)矩阵乘法第一种方法

(2)矩阵乘法第二种方法

mmult(array1,array2)

array1 中的列数必须与 array2 中的行数相同,并且两个数组必须仅包含数字

array1、array2 必需。 要进行矩阵乘法运算的两个数组

3.3 CCM矩阵计算过程

3.4 CCM对应的色彩空间

色彩混合的基本定律表明:自然界任何一种色彩均可用红、绿、蓝三种原色光混合产生,这在几何上能够以R、G、B三个互相垂直的轴所构成的空间坐标系统来表示,称为RGB色彩空间。如图1所示,RGB色系坐标中三维空间的三个轴分别于红、绿、蓝三基色相对应,原点对应黑色,离原点最远的顶点对应白色,而立方体内其余各点对应不同的颜色。RGB色彩系统用R、G、B三原色通过不同比例的混合来表示任一种色彩,因而它不能直观地度量色调、饱和度和亮度。而且,各分量之间存在着一定的相关性,它们在大多数情况下都是成正比的,主要表现为自然场景中若某一通道大,则像素的其他通道值也较大。这意味着,如果要对图像的色彩进行处理,常常需要对像素的三个分量同时进行修改才不会影响图像的真实感,这将大大增加颜色调整过程的复杂性。因此,在RGB色彩空间下进行色彩迁移会比较复杂,Y=red*0.299+green*0.587+blue*0.114

而lαβ空间的各通道具有最小的相关性。所以,在lαβ空间对图像的颜色进行出来将会变得十分方便。因此,选择在lαβ空间进行图像间的色彩迁移,这就需要将图像从RGB空间转换到lαβ空间

从RGB空间到lαβ空间的转换需要进行3次变换,即RGB->CIEXYZ->LMS->lαβ,Lab颜色模型取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表蓝色(a,b)

3.5 ▲C和▲E计算公式

△E*=[(△L*)2+(△a*)2。+(△b*)2]1/2

△C*=[(△a*)2+(△b*)2]1/2

饱和度=average(mean)/average(ide_mean)

mean值:1-18色块的△C*的平均值

4 色彩校正的基本调试流程

4.1 拍摄RAW图前准备

  1. 打开RAW图的dump开关和 AEC log;对应的txt如下:
  2. 开启3A命令:enable3ADebugData=TRUE
  3. 开启RAW命令:reprocessDump=TRUE(不同项目开启命令有差异)
  4. 开启AE log命令:logVerboseMask=0x2000000
  5. 开启metadata命令:enableTuningMetadata=TRUE
  6. 搜索lux值或者gain的命令:

real_gain:adb logcat|findstr camxaecengine.cpp

exp-index:adb logcat|findstr caeccore.cpp

4.2 拍摄raw图

|------|----------|------------------------------------|-----------------------------------------------------|
| 色温 | 格式要求 | 准备 | 拍摄 |
| D75 | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| D65 | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| D50 | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| TL84 | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| CWF | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| A | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |
| H | RAW&JPG | ①打开手机的3A和enable metadata ②开启ae log | ①视场角(FOV):70%: ②分别拍摄一个高、中、低亮度MCC卡 ③分布拍摄一个高、中、低亮度灯箱壁 |

4.3 RAW图加载及矫正操作

在Pipeline菜单中, 点击IPE > CC ,操作步骤如下:

(1)在AEC triggers模块选择要调试的Lux值

(2)在CCT Trigger中,选择要调整的色温。

  1. 由于室内外环境的Lux值不同,建议根据亮度分2-3个Region
  2. 由于各个光源下的色温值不同,建议区分不同色温(TL84, A, H, D50和D65)

(3)CCT字段中,选择要调整的色温。

(4)选择gamma region:如果有必要修改标准伽马曲线或创建一个新的伽马曲线,点击编辑gamma并在调整颜色校正矩阵之前进行更改。

(5)选择MCC-Image......,load 对应的RAW,

选择颜色校正使用SRGB颜色变换,除非您从列表框中选择另一种变换类型。其他选项包括AdobeRGB、BT2020和Custom

当MCC图像打开时,选择Mark > Macbeth > Macbeth并设置网格标记。将左上角的MCC网格标记拖动到左上角色块的中心,并将右下角的MCC网格标记拖动到右下角色块的中心,以便所有的网格标记在MCC图表图像的色块内对齐。关闭窗口。如果图像是用鱼眼镜头拍摄的,按住Ctrl键(或Shift键),同时移动标记。

(6)选择Flat Field,load对应的灯箱壁RAW

(7)点击Optimize

4.4 参数生成及合理性检查

(1)检查颜色校正矩阵的三个对角线值,只有三个值中最高的值才重要。在这个例子中,最高的值是右下角的值。较高的噪声权重值产生较低的对角线参数在颜色校正矩阵。对于对角线参数,更高的值表示更高的颜色饱和度和增加的噪声。最高对角线值的理想范围是1.8到3

(2)矩阵横行必须为1,例如:rr+gr+br=1

(3)rr,gg,bb对应CCM矩阵的RGB饱和度,

(4)rr,gg,bb数值越大饱和度越大

(5)调整rr/gg/bb只会增加艳丽度,不会导致偏色

5 Tuning参数

5.1 Must Tune

CCM矩阵C[0]-C[9]为必须调试项

5.2 Often Tune

(1)Noise Weight:可以拖动噪声权重滑块来改变颜色复制和噪声减少之间的平衡

  • 噪声权重的设置决定了噪声的重要性。
  • 如果滑块设置为0,颜色复制将被给予充分的优先级,而不考虑或重视噪音。
  • 向右移动滑动条可以减少噪音,但会牺牲颜色的重现

(2)Target Saturation:如果需要改变饱和度,标记"目标饱和度"复选框,并拖动滑块来改变饱和度水平。

5.3 Rarely Tune

6 一般调试和Debug方法

找到触发区间

因为可能有许多CC矩阵,所以必须首先确定要优化哪个矩阵。通过AWB日志触发点来完成的。触发点在两个Region之间的,矩阵之间会进行插值。然后根据AEC条件对计算矩阵进行插值。通过触发点表明在当前条件下哪个矩阵占主导地位。

6.1 确认色差

确认色差的方法一:拍摄JPG图片,使用Imatest读取▲E和▲C,读取结果与客观标准进行对比

确认色差的方法二:使用Chromatix打开图片,设置中选择DeltaE Plot

6.2 色彩准确性问题Debug建议

  1. 对于偏色问题,首先确认偏色的原因,可能的原因:白平衡不准或者CC还原不准确
  2. 颜色跳变问题:模块相邻区间之间插值过大
  3. 对于色彩还原准确,但是饱和度达不到客观标准的场景,可考虑修改CV
  4. 白平衡准确的场景色彩偏色,需要确认CC中每行相加是否等于1
  5. 建议CC\CV\CS\TDL区间分区保持一致
相关推荐
丁浩6665 小时前
Python机器学习---1.数据类型和算法:线性回归
开发语言·python·机器学习·线性回归
那年窗外下的雪.5 小时前
鸿蒙ArkUI布局与样式进阶(十二)——自定义TabBar + class类机制全解析(含手机商城底部导航案例)
开发语言·前端·javascript·华为·智能手机·harmonyos·arkui
csdn_aspnet5 小时前
直圆锥(Right Circular Cone)
算法·圆锥
迷途呀5 小时前
Latex中的错误汇总
论文阅读·笔记·学习·其他·编辑器
Larry_Yanan5 小时前
QML学习笔记(四十六)QML与C++交互:Q_PROPERTY宏映射
c++·笔记·qt·学习·ui·交互
JJJJ_iii5 小时前
【机器学习07】 激活函数精讲、Softmax多分类与优化器进阶
人工智能·笔记·python·算法·机器学习·分类·线性回归
马拉萨的春天5 小时前
探索Objective-C中的对象复制:深入理解copy和mutableCopy
开发语言·ios·objective-c
啊森要自信5 小时前
【MySQL 数据库】使用C语言操作MySQL
linux·c语言·开发语言·数据库·mysql
新子y5 小时前
【小白笔记】最大化安全评分
笔记