Skip to main content

Rockchip_Color_Optimization_Guide_ISP21_CN

:::info 文档信息

文档标识:RK-SM-YF-603 · 发布版本:V2.0.1 · 发布日期:2021-08-25 · 页数:62 · 语言:英文

原始文档:Rockchip_Color_Optimization_Guide_ISP21_CN_v2.0.1.pdf

:::

章节大纲​

  • Rockchip_Color_Optimization_Guide_ISP21_CN(P1)
    • 1 概述(P6)
    • 2 AWB(P6)
      • 2.1 功能描述(P6)
      • 2.2 关键参数(P7)
        • 白平衡校正使能及白平衡模式选择(P7)
        • 手动白平衡参数(P8)
        • 自动白平衡参数(P8)
        • hdrPara(P8)
        • limitRange(P9)
        • mainWindow(P9)
        • downScaleMode(P10)
        • lscBypassEnable(P10)
        • blkStatisticsEnable(P10)
        • blkMeasureMode(P10)
        • 硬件的白点检测流程(P11)
          • RGB2XY(P12)
          • XY domain white points detector(P12)
          • UV domain white points detector(P12)
          • YUV domain white points detector(P13)
          • 增加非白点的区间(P14)
          • 白点不同亮度不同权重(P14)
          • 分块权重(P16)
        • AWB 策略(P17)
          • 分区策略计算WBGain(P17)
            • (1) 分区间参数(P17)
            • (2)策略wbgain 相关参数(P18)
            • (3) 光源权重计算相关参数(P20)
        • WBGain色适应调整(P22)
        • WBGain范围限制(P22)
        • WBGain色调调整(P24)
        • wbGain偏移(P27)
        • remosaic sensor配置(P27)
        • WBGain平滑(P27)
        • 其他(P28)
          • tolerance(P28)
          • runInterval(P28)
          • lumaValueMatrix(P29)
          • 白平衡收敛判断(P29)
          • 中框、大框选择(P29)
      • 2.3 标定(P30)
        • AWB标定基本原理(P30)
        • AWB标定的raw图要求(P30)
        • AWB标定工具的界面说明(P31)
        • AWB标定步骤(P33)
        • AWB标定结果(P37)
      • 2.4 常见问题定位(P41)
        • 抓log并分析(P41)
          • AWB log 解读(P41)
            • (1) 控制及模式的log(P41)
            • (2)awb log等级为export persist_camera_engine_log=0x2ff2 可用于一般的问题定位(P41)
            • (3)awb log等级为export persist_camera_engine_log=0x2ff3 可用于白点条件及策略问题定位(P42)
        • 从log上定位问题(P43)
        • 抓raw并仿真(P43)
          • (1) 例1(P43)
        • 特殊问题举例(P46)
    • 3 基础颜色调整CC(P47)
      • 3.1 功能描述(P47)
      • 3.2 关键参数(P48)
        • 使能控制及模式选择(P48)
        • 亮度-饱和度调节(P48)
          • 像素亮度相关饱和度调节(P48)
          • 全局饱和度调整(P49)
        • 手动CCM参数(P49)
        • 自动CCM参数(P49)
          • CCM矩阵计算方式选择(P49)
          • CCM矩阵加权计算(P50)
          • CCM选择控制参数(P50)
          • CCM参数(P50)
      • 3.3 CCM标定(P51)
        • RAW数据采集(P51)
          • 标定光源选择(P51)
          • 采集步骤(P51)
        • 标定(P51)
          • 步骤(P51)
          • 色差图介绍(P51)
          • 注意事项(P52)
      • 3.4 颜色调整(P53)
        • 整体颜色饱和度调整(P53)
          • 调整gain_alphaScale_curve的参数(P53)
          • 调整gains-sat(P53)
          • 增加高饱和度的CCM(P53)
          • 降低暗的像素的色彩饱和度(P53)
        • 某些颜色调整(P53)
          • 确认白平衡是否正确(P53)
          • 确认白平衡是否与对比机一致及调整(P53)
          • 调整亮度与对比机一致(P54)
        • 调整CCM(P54)
          • 重新用工具标定CCM(P54)
          • 手动调整CCM(P54)
            • 获取RK RGB值(P54)
            • 获取目标RGB值(P54)
            • 调整CCM说明(P56)
            • 调整CCM示例(P57)
    • 4 高级颜色调整-3DLut(P59)
      • 4.1 CCM VS 3DLut(P59)
      • 4.2 功能说明(P60)
      • 4.3 关键参数(P60)
        • 使能控制及模式选择(P61)
        • 手动3DLUT参数(P61)
        • 自动3DLUT参数(P61)
          • 3DLUT参数(P61)
      • 4.4 调整示例(P62)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


1 概述​

ISP21 相关的颜色调整模块有 自动白平衡(auto white balance,AWB),颜色校正(color correction,CC),3维查找表(three dimension look up table,3dlut)

ISP20(RV1126/RV1109)与ISP21(RK3566/RK3568) CCM和3DLUT模块无差异,AWB调试需要关注的差异如下:

(1)ISP21上不支持multiwindow 多个子窗口配置

(2)3dyuv算法升级

(3)附加框仅支持扣除白点,不支持作为额外点光源使用

(4)增加了白点不同亮度不同权重功能

(5)增加了块权重功能

(6)xy域每个光源配置两个大小的框,比ISP20少一个

2 AWB​

2.1 功能描述​

自动白平衡算法能自动的计算WB gain (R G B通道的白平衡增益),并将其与RGB通道分别相乘后,使受环境光影响的白色还原成纯白色,保证在各个光线条件下,相机成像色彩跟物体真实的色彩保持一致。当场景存在白点时基于自动检测的白点计算WB gain,当场景不存在白点时通过单纯色方法得到WB gain。色适应模块,对白平衡校正的目标进行调节,使白平衡校正后的图像尽可能与人眼感知的外貌一致。色调调整模块,根据喜好调整整体色调。由硬件的统计和软件的策略构成自动白平衡,如AWB流程图所示图 AWB 流程

2.2 关键参数​

ISP21的参数见IQ json文件的wb_v21节点;

白平衡校正使能及白平衡模式选择​

在control节点下

名称描述
bypass取值0或1 0表示做白平衡校正,使用的白平衡增益由mode控制 1表示不执行白平衡校正
mode取值CALIB WB MODE AUTO或CALIB WB MODE MANUAL _ _ _ _ _ _ CALIB WB MODE MANUAL表示使用手动白平衡增益 _ _ _ CALIB WB MODE AUTO表示使用自动白平衡算法计算白平增益 _ _ _

手动白平衡参数​

在manualPara节点下

名称描述
mode取值CALIB MWB MODE CCT或CALIB MWB MODE WBGAIN或 _ _ _ _ _ _ CALIB MWB MODE SCENE _ _ _
cfg.wbgain取值范围[0.5-3.9] mode == CALIB MWB MODE WBGAIN时,手动白平衡应用该参数 _ _ _
cfg.scene取值为CALIB WB SCENE INCANDESCENT(表示A光源) _ _ _ 或CALIB WB SCENE FLUORESCENT(表示CWF光源) _ _ _ 或CALIB WB SCENE WARM FLUORESCENT(表示U30光源) _ _ _ _ 或CALIB WB SCENE DAYLIGHT(表示D65光源) _ _ _ 或CALIB WB SCENE CLOUDY DAYLIGHT(表示D50光源) _ _ _ _ 或CALIB WB SCENE TWILIGHT(表示HZ光源) _ _ _ 或CALIB WB SCENE SHADE(表示D75光源) _ _ _ mode == CALIB MWB MODE SCENE时,手动白平衡应用该参数 _ _ _
cfg.cctCCT取值为[0-10000] CCRI取值为[-2,2],CCRI取值为0时近似为色度图中普朗克轨迹上的光源 mode == CALIB MWB MODE CCT时,手动白平衡应用该参数 _ _ _

几种配置为:

自动白平衡+白平衡校正使能(推荐配置)
control.bypass = 0;
control.mode = CALIB_WB_MODE_AUTO;
白平衡校正不使能
control.wbBypass = 1;
手动白平衡+白平衡校正使能
control.wbBypass = 0;
control.mode = CALIB_WB_MODE_MANUAL;
manualPara.cfg.scene = CALIB_MWB_MODE_WBGAIN;
manualPara.cfg.wbgain = [1,1,1,1];

自动白平衡参数​

接下来的的参数均为自动白平衡模式下的参数。在autoPara(ISP20和ISP21的成员有差异)和autoExtPara(ISP20和ISP21的成员一样)节点中。后续的参数均为这两个结构体的成员。

hdrPara​

对应于autoPara.hdrPara结构体,对于hdr sensor 可以指定从长中短的其中一帧进行白平衡相关统计,推荐使用自动模式。

名称描述
frameChooseMode取值CALIB AWB HDR FRAME CHOOSE MODE MANUAL或 _ _ _ _ _ _ CALIB AWB HDR FRAME CHOOSE MODE AUTO。 _ _ _ _ _ _ CALIB AWB HDR FRAME CHOOSE MODE MANUAL 固定模式; _ _ _ _ _ _ CALIB AWB HDR FRAME CHOOSE MODE AUTO自动模式,自动选择 _ _ _ _ _ _ 哪一帧用于白平衡统计,推荐值。
frameChoosemode 为0 时有效; 两帧hdr下:取值为 0 或1; 0 选择短帧用于白平衡统计; 1 选择长帧用于白平衡统计; 三帧hdr下:取值为 0、1或 2; 0 选择短帧用于白平衡统计; 1 选择中帧用于白平衡统计; 2 选择长帧用于白平衡统计;

limitRange​

(1)对应JSON中的autoPara.limitRange结构体,进入白点统计的像素点值域范围,超过范围的点不进行统计。想增加白点数增加值域;想提高白点精准度需调整值域使参与统计的点不能太暗或太亮。支持不同环境亮度配置不同的范围,由这些配置线性插值得到实际范围。

名称描述
lumaValue环境亮度 取值范围0-255000
maxRR通道值域右边界,推荐值255-黑电平-3,最大值255
minRR通道值域左边界,推荐值3,最小值0
maxGG通道值域右边界,推荐值255-黑电平-3,最大值255
minGG通道值域左边界,推荐值3,最小值0
maxBB通道值域右边界,推荐值255-黑电平-3,最大值255
minBB通道值域左边界,推荐值3,最小值0
maxYY通道值域右边界,推荐值255-黑电平-3,最大值255
minYY通道值域左边界,推荐值3,最小值0

mainWindow​

awb统计主窗口配置对应JSON中的autoPara.mainWindow结构体。推荐使用自动配置模式;对于特殊应用,如广角镜头时四周colorshading 比较重的情况下可以自定义主窗口大小,减少对AWB统计的影响

名称描述
mode取值 CALIB AWB WINDOW CFG FIXED 或CALIB AWB WINDOW CFG AUTO _ _ _ _ _ _ _ _ CALIB AWB WINDOW CFG AUTO 自动配置统计主窗口为raw大小,推荐值 _ _ _ _ CALIB AWB WINDOW CFG FIXED 自定义统计窗口大小 _ _ _ _
windowmode 为1 时使能 window=[h offset,v offset,h size,v size],h代表水平方向,v代表垂直方向 _ _ _ _ h offset,v offset,h size,v size取值为0-1 _ _ _ _ 取值为[0, 0, 1, 1]表示使用全窗口,即raw的尺寸

downScaleMode​

对应JSON中的autoPara.downScaleMode成员

名称描述
downScaleMode取值 CALIB AWB DS 4X4 或CALIB AWB DS 8X8 _ _ _ _ _ _ CALIB AWB DS 4X4表示 raw 4x4下采样作为AWB 统计模块的输入,水平 _ _ _ 和垂直方向的下采样倍数ds w,ds h都为4 _ _ CALIB AWB DS 8X8表示 raw 8x8下采样作为AWB 统计模块的输入,水平 _ _ _ 和垂直方向的下采样倍数ds w,ds h都为8,默认值 _ _

lscBypassEnable​

对应JSON中的autoPara.lscBypassEnable成员

名称描述
lscBypassEnable取值0 或1; 0 白平衡统计通路的lens shading correction (LSC)不使能; 1 白平衡统计通路的LSC使能; 不影响主ISP通路的LSC模块

blkStatisticsEnable​

对应JSON中的autoPara.blkStatisticsEnable成员

名称描述
blkStatisticsEnable取值0 或1; 0 白平衡统计15x15的块统计功能不使能; 1 白平衡统计15x15的块统计功能使能;

blkMeasureMode​

对应JSON中的autoPara.blkMeasureMode成员

名称描述
blkMeasureMode取值CALIB AWB BLK STAT MODE ALL V201 或 _ _ _ _ _ _ CALIB AWB BLK STAT MODE REALWP V201; _ _ _ _ _ _ CALIB AWB BLK STAT MODE ALL V201 指15x15的块统计块内所有点的 _ _ _ _ _ _ 累加值,默认值; CALIB AWB BLK STAT MODE REALWP V201 指15x15的块统计块内白点 _ _ _ _ _ _ 的累加值;

硬件的白点检测流程​

图 AWB 白点检测流程

如白点流检测程图所示从三个域上去法判断是否是白点

名称描述
uvDetectionEnable取值0 或1; 0 UV域非白点过滤不使能; 1 UV域非白点过滤使能,根据白点条件选择UV域白点;
xyDetectionEnable取值0 或1; 0 XY域非白点过滤不使能; 1 XY域非白点过滤使能,根据白点条件选择XY域白点;
yuvDetectionEnable取值0 或1; 0 YUV域非白点过滤不使能; 1 YUV域非白点过滤使能,根据白点条件选择YUV域白点;

上述三个参数为autoPara结体的成员,当这三个参数都配置为0时,则落在统计窗口内,且亮度符合要求的点都会被当成白点。来不及标定,又想粗略看一下自动白平衡后的效果时,可以这样使用。RGB2XY

RGB域到XY域变换参数由标定工具自动生成,对应JSON中autoPara.rgb2TcsPara结构体

名称描述
pseudoLumWeight使不同光源的白点尽量在一条直线上,参数由标定工具生成,取值范围 0~1,不建议调整
rotationMat旋转矩阵,使x轴表征黑体辐射色温的变化,y轴表征同温异谱的光源,参 数由标定工具生成,取值范围[-3.99,3.99],不建议调整

XY domain white points detector

图 XY域白点区间

XY域白点区间如上所示,在矩形框内的为白点。共有两个大小的白点区间,白点区间如图所示[x0,x1,y0,y1]。在标定工具上手动调整白点区间生成,对应SON的autoPara.lightSources.xyRegion结构体

名称描述
normal中框白点区间,取值范围[-8,7.99]
big大框白点区间,取值范围[-8,7.99]

UV domain white points detector

图 UV域白点区间

UV域白点区间如上所示,在四边形框内的为白点,对应JSON的autoPara.lightSources.uvRegion结构体

名 称描述
uUV域白点条件的U坐标,构成一个闭环,如[u0,u1 u2,u3,u0],取值范围[0,255],小数位值只 能是0或0.5 在标定工具上手动调整白点区间生成
vUV域白点条件的V坐标,构成一个闭环,如[v0,v1 v2,v3,v0],取值范围[0,255],小数位值只 能是0或0.5 在标定工具上手动调整生成,

YUV domain white points detector

通过计算场景中的点(y0,u0,v0)与理论白点(y‘,u0,v0)的亮度差距diff = |y0-y'|来判断是否是白点。如果diff<th,则认为该点是白点,否则非白点。对于不同位置(用u分量区分)可以设置不同的白点阈值th,如分段直线dis-th所示

在标定工具上参考场景中的点(y0,u0,v0)的diff和u去调整相应光源的u-th分段直线实现白点正确估计和非白点排除的目的(目前该功能尚未实现),光源由前面xy和uv域的方法得到,固yuv方法不能单独使能,必需要联合xy或uv域白点检测方法使用。

对应JSON中autoPara.lightSources.rtYuvRegion的结构体

名称描述
lineVector由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 每个分量的取值范围[0,255],精度为1/(2^4) 由标定工具得到 不建议调整
disP1P2由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 每个分量的取值范围[0,255],精度为1/(2^4) 由标定工具得到 不建议调整
thcurve u _分段直线u-th的u分量 每个分量的取值范围[0,255],整数 注:需满足相邻两个u分量的差为2的幂次方
thcure th _分段直线u-th的th分量 每个分量的取值范围[0,255],精度为1/(2^4) 注: 分段直线u-th必须为单调递增

增加非白点的区间

一般要同时落在XY、UV、YUV的白点区间内的点才会是白点,而有些非白点也可能满足这种情况,且位于区间的中心位置,不好排除出去。这种情况可以在UV或XY空间上增加非白点区间,只要落入该区间的点都会被当成非白点。

非白点区间个数最多为7。

对应JSON中的autoPara.extraWpRange参数,

名称描述
domain取值CALIB AWB EXTRA RANGE DOMAIN UV或 _ _ _ _ _ CALIB AWB EXTRA RANGE DOMAIN XY _ _ _ _ _ CALIB AWB EXTRA RANGE DOMAIN UV表示 UV域白点区间 _ _ _ _ _ CALIB AWB EXTRA RANGE DOMAIN XY表示 XY域白点区间 _ _ _ _ _
mode取值CALIB AWB EXCLUDE WP MODE或 _ _ _ _ CALIB AWB EXTTRA LIGHT SOURCES MODE _ _ _ _ _ CALIB AWB EXCLUDE WP MODE表示该range 为非白点区间 _ _ _ _ CALIB AWB EXTTRA LIGHT SOURCES MODE表示该range为额外光源的白点区间 _ _ _ _ _ (ISP21上不支持该模式)
window配置区间如上图所示[x0,x1,y0,y1] 当domain=0时,取值范围为[0,511],其中1bit为小数位 当domain=1时,取值范围为[-8192,8191],其中10bit为小数位

白点不同亮度不同权重

lumalimit模块有提到想提高白点精准度需调整值域使参与统计的点不能太暗或太亮。该模块可以认为是lumalimit模块的升级版,给太亮或太暗的白点设置更低的权重,给合适亮度区间白点分配高的权重。支持根据场景的合适亮度白点数和环境亮度去动态设置不同亮度的白点权重,如下从图上可以看出合适亮度白点数占比比较多的时候,合适亮度区间(如y为80-224区间)分配的权重更大,而其他暗区或亮区权重比较小。

对应于JSON中的autoPara.wpDiffLumaWeight参数

名称描述
enable该功能使能的开关 取值0或1 0 不使能 1 使能
wpDiffWeiEnableTh该功能使能还要满足该阈值条件
wpDiffWeiEnableTh.wpDiffWeiNoTh白点数量大于该阈值该功能才使能 取值范围[0,1]
wpDiffWeiEnableTh.wpDiffWeiLvValueTh环境亮度大于该阈值功能才使能 取值范围[0-2555000]
wpDiffwei y _白点亮度直方图的亮度分段,九个点分为8个bin 取值范围[0,255] 注:需满足相邻两个分量的差为2的幂次方 不建议调整
perfectBinConf指定白点亮度直方图上哪个bin的白点为可信度高 的白点,即指定合适亮度 每个分量对应一个bin 取值范围0或1 0 可信度低的白点 1 可信度高的白点
wpDiffWeiLvTh两个分量分别对应环境亮度为wpDiffWeiLvTh0, wpDiffWeiLvTh1 取值范围[0-2555000]
wpDiffWeightLvSet不同环境亮度下不同的可信度高的白点占比可以配 置不同的曲线,实际情况由这些曲线进行线性插值
wpDiffWeightLvSet len _环境亮度的个数
wpDiffWeightLvSet.LvValue环境亮度值
wpDiffWeightLvSet.ratioSet环境亮度为wpDiffWeightLvSet.LvValue时不同的 可信度高的白点占比可以配置不同的曲线
wpDiffWeightLvSet.ratioSet len _可信度高的白点占比个数
wpDiffWeightLvSet.ratioSet.ratioValue可信度高的白点占比值
wpDiffWeightLvSet.ratioSet.weight环境亮度为wpDiffWeightLvSet.LvValue时且可信 度高的白点占比值为 wpDiffWeightLvSet.ratioSet.ratioValue时的亮度 权重 每个分量对应一个bin 取值范围[0,1]

分块权重

不同块的白点可以配置不同的权重,可以根据实际的应用场合去配置使用,没有特殊需求不建议使用

名称描述
wpDiffBlkWeiEnable该功能使能的开关 取值0或1 0 不使能 1 使能
wpDiffBlkWeight15*15块,每块的权重 取值范围[0-63],整数

AWB 策略​

分区策略计算WBGain

图 AWB 分区策略计算WBGain示意

对环境亮度-白点数量空间进行分区,使不同的区间用不同的方法计算白平衡增益。补充环境亮度含义说明:1x曝光gain和1ms曝光积分时间下若场景的平均亮度为255(最大值),则环境亮度为255000;该值越大表示环境越亮。

(1) 分区间参数

分区间参数对应JSON中autoExtPara.division结构体

名称描述
lumaValThLow图上的环境亮度阈值LV THL1 _ 取值范围0-255000
lumaValThLow2图上的环境亮度阈值LV THL2 _ 取值范围0-255000
lumaValThHigh图上的环境亮度阈值LV THH1 _ 取值范围0-255000
lumaValThHigh2图上的环境亮度阈值LV THH2 _ 取值范围0-255000
wpNumTh不同环境亮度可配置不同的图上阈值WP THL、WP THH,由这些配置 _ _ 线性插值得到实际阈值
wpNumTh.lumaValue环境亮度 取值范围0-255000
wpNumTh.low图上的白点数量阈值WP THL _ 取值范围0-100000 实际的白点数量和WP THL/100000*totalPixe比较, _ 其中totalPixel = wight * height /ds w/ds h,图像宽高为wight , _ _ height ,水平和垂直方向的下采样倍数分别为ds w,ds h _ _
wpNumTh.high图上的白点数量阈值WP THH _ 取值范围0-100000 实际的白点数量和WP THH/100000*totalPixel比较 _

(2)策略wbgain 相关参数

根据以上阈值对环境亮度-白点数量空间进行分区,不同的区间计算白平衡增益的方法为:

① WPType3中的wbgain与不同光源的白点统计gain(StaGain_i),亮环境的wbgain(DayGain_i),暗环境的
wbgain(NightGain)均有关系,StaGain_i权重为staWeigthSet,DayGain_i的权重为100-
staWeigthSet, NightGain的权重为tempWeigth,后面有详细介绍。
② WPType2为过渡带,由WPType3和WPType1的wbgain混合得到;
③ WPType1中的wbgain:
如果是第一帧时可能为固定的NightGain或DayGain,也有可能是由单纯色算法算出的WBGain,由环境亮
度所在区间决定;否则为前几帧的wbgain加权得到

对应JSON中参数,

① DayGain

名称描述
defaultDayGainLow特别亮日光下的推荐wbgain 取值范围[0.5-7.9]
defaultDayGainHigh普通日光下的推荐wbgain 取值范围[0.5-7.9]
dayGainLvThSet表示dayGainLvThSet THL和dayGainLvThSet THH,分别和 _ _ defaultDayGainLow和defaultDayGainHigh对应。不同光源可以有不同 配置 取值[0-255000]
staWeightWPType3中的wbgain计算时StaGain i的权重。不同亮度下对应不同 _ StaGain 权重,与JSON中LvMatrix对应。DayGain i的权重为100- _ _ staWeigthSet。不同光源可以有不同配置。通常情况StaGain的权重都 为100效果最优,对于室外蓝天偏红的场景可以通过配置 defaultDayGainLow为d65为标准wbgain,defaultDayGainHigh为d50为 标准wbgain,且减小改场景亮度下的staWeigth值改善 取值 [0-100]

根据环境亮度、dayGainLvThSet、defaultDayGainLow、defaultDayGainHigh即可线性插值得到不同光源的DayGain_i。用后面讲到的光源权重加权后得到给WPType1区间中的DayGain。

② NightGain

名称描述
defaultNightGain即为前面所述的NightGain,环境亮度低时的推荐wbgain 取值范围[0.5-7.9]
defaultNightGainWeightWPType3中的wbgain计算时NightGain的权重,不同亮度下对应不 同权重,与JSON中lumaValueMatrix对应。 取值范围0-100

③ SingleColorGain(singleColorProcess)

实现大面积单纯色白平衡的功能,基于场景信息从配置的颜色集合和光源集合中选出颜色和WBGain。目前默认标定参数可以识别的颜色有红绿蓝黄紫。可以根据实际应用场合去增删待选择的颜色集合(colorBlock),及调整待选择的光源集合(lsUsedForEstimation),工具尚未支持该功能,对应JSON中autoExtPara.singleColorGain

名称描述
enable该功能使能的开关 取值0或1 0 不使能 1 使能
colorBlock待选择的颜色集合,由工具生成
colorBlock len _colorBlock集合中颜色总数
colorBlock.index颜色索引,标记标定时用到的颜色块,修改对效果没有影响, 取值范围 1-24 标定工具默认选择x-rite色卡上的13、14、15、16、5、10
colorBlock.meanC该颜色在LCH空间的平均色度值
colorBlock.meanH该颜色在LCH空间的平均色调值
lsUsedForEstimation待选择的光源集合,由工具生成
lsUsedForEstimation len _lsUsedForEstimation集合中光源总数
lsUsedForEstimation.name光源名
lsUsedForEstimation.RGain该光源的红色通道白平衡增益 取值大于0,小数
lsUsedForEstimation.BGain该光源的蓝色通道白平衡增益 取值大于0,小数
alphaLCH空间的H权重 使用默认值即可,不用调整 取值范围[0.0-1.0]

④ 若前几帧有白平衡增益了,则用前几帧加权的wbgain作为WpType3的白平衡增益

名称描述
weightForNightGainCalc len _指定前weightForNightGainCalc len帧用于加权 _ 取值不限,整数
weightForNightGainCalc指定前几帧用于加权的权重,第0个位置对应最远一帧的权重, 最后一个位置对应最近一帧的权重 取值 [0-100]

(3) 光源权重计算相关参数

WpType3内不同光源的概率计算参数

①距离概率参数

由前一帧的wbgain到各个光源的标准wbgain的欧式距离(gain_dis),根据下图分段直线计算得到距离概率对应JSON中autoExtPara.probCalcDis的结构体

名称描述
proDis THL _图上的距离阈值disTHL 取值范围[0-4]
proDis THH _图上的距离阈值disTHH 取值范围[0-4]

②场景亮度概率参数

室外类型的光源其光源的概率为 pout,pout根据图 4- 14亮度-pout曲线计算

室内类型的光源其光源的概率为 pin = 1-pout

不能严格区分的光源,如pd50 = max(pout,pin)

对应JSON中的参数如下

名称描述
autoExtPara.probCalcLv.outdoorLumaValThLow图上的环境亮度阈值outdoorTHL 取值范围0-255000
autoExtPara.probCalcLv.outdoorLumaValThHigh图上的环境亮度阈值outdoorTHH 取值范围0-255000
autoPara.lightSources.doorType光源属于室内还是室外,不同光源有不同 的配置 1 表示 室内 2 表示介于室内和室外之间 3 表示 室外

③场景白点数量概率参数

对应JSON中autoExtPara.probCalcWp的结构体

名称描述
wpNumPercTh当某个光源白点数量小于wpNumPercTh*totalPixel,且白点数量占所有光 源的白点数比例小于wpNumPercTh2,则该光源白点数量概率为0,其中 totalPixel = wight* height /ds w/ds h,图像宽高为wight ,height ,水平 _ _ 和垂直方向的下采样倍数分别为ds w,ds h _ _ 取值范围0-1
wpNumPercTh2同上

WBGain色适应调整​

暂不推荐使用,对应JSON中autoExtPara.chrAdpttAdj的结构体

名称描述
enable白平衡校正后的图像尽可能与人眼感知的色彩外貌一致的使能 取值0或1,分别代表不使能、使能
laCalcFactor控制不同亮度下色适应程度的因子,默认值为40。
targetGain用wbgain来表征光源,调整色彩外貌将被调整为该光源下的样子 取值范围0-4,默认值为d50白平衡增益

WBGain范围限制​

将白平衡增益限制在上图所示红色直线围成的区域内,其中横坐标为相对色温,纵坐标为显色指数,这两个为光源的属性。对应JSON中autoExtPara.wbGainClip的结构体

名称描述
enable色温范围限制使能 取值0或1,分别代表不使能、使能
cct对应图上围成区域的圆点cct坐标 上下边界采用相同的cct采样坐标 取值[1000-10000]
cri bound up _ _对应图上围成区域的下边界圆点cri分量 对于位于区域内的点即cri0>=-cri bound up,否则 _ _ 取值-1到1
cri bound low _ _对应图上围成区域的上边界圆点cri分量 对于位于区域内的点有cri0<=cri bound low _ _ 取值-1到1
cct len/cri bound up len/cri bound low len _ _ _ _ _ _ _cct len,cri bound up len,cri bound low len分别对应 _ _ _ _ _ _ _ cct,cri bound up,cri bound low的长度,这三个要相 _ _ _ _ 等

除此之外还可以对室外光源的色温最小值进行限制,对应JSON中autoExtPara.wbGainDaylightClip的结构体

名称描述
enable室外最低色温限制使能 取值0或1,分别代表不使能、使能
outdoor cct min _ _室外最低色温取值不限

若wbGainClip.eanble= 1,场景为(cct0,cri0),若cct0 超出左(右)边界,则输出cct0将被强制设置为左(右)边界的值;若cri0<-cri_bound_up,则输出cri0=-cri_bound_up;若cri0>cri_bound_low,则输出cri0=cri_bound_low;

若wbGainDaylightClip.enable= 1,且场景为室外场景,若cct0>outdoor_cct_min,则输出cct0=outdoor_cct_min。

WBGain色调调整​

对应JSON中autoExtPara.wbGainAdjust的结构体

名称描述
enable色调调整使能 取值0或1,分别代表不使能、使能
lutAll不同的环境亮度可以配置不同的输出色温表
lutAll len _指定色温表的个数
lutAll.lumaValue环境亮度 取值范围0-255000
lutAll.ct grid num _ _输入色温表之色温的采样点数 取值不限
lutAll.ct in range _ _输入色温表之色温的范围 取值不限
lutAll.cri grid num _ _输入色温表之显色指数的采样点数 取值不限
lutAll.cri in range _ _输入色温表之显色指数的范围 取值不限
lutAll.ct out _如下面的工具界面图所示每个圆点的ct值,从左到 右(色调从冷到暖),即CT从小到大 取值范围0-255000
lutAll.cri out _如下面的工具界面图所示每个圆点的cri,从下到上 (色调从紫到绿),即CRI从负数到正数 取值范围不限
lutAll.ct in range len/ _ _ _ lutAll.cri in range len/lutAll.cri out len/lutAll.cri out _ _ _ _ _ _表示如下面的工具界面图中二维网格的点个数,相 等且为lutAll.ct grid num*lutAll.cri grid num _ _ _ _

目前json版本的工具尚未支持调整功能。

不进行色温调整时ct_out和cri_out对应的二维网格如下所示,对ct_in_range和cri_in_range指定的矩形区域,水平方向垂直方向分别按ct_grid_num、cri_grid_num等间隔采样,采样点对应下图的圆点。ct_out存储了所有圆点的ct坐标,cri_out存储了所有圆点的纵坐标。对于整体色彩风格的调整:

①如将色调色温为2000k的色调调暖,如下所示选择CT Line Only模式调整表格,鼠标移动到cct=2000的任意一个圆点附近后单击并向右拖动即可。应用后输入是2000k-2391k的都将被调整为2391k。

② 如将所有的色调调冷,如下所示选择CT Line Only模式调整表格,鼠标依次移动到不同cct的任意一个圆点附近后单击并向左拖动,直到所有的色调都往左偏。③如将所有cri为0.5的色调调紫,如下所示选择CRILine Only模式调整表格,鼠标移动到cri=0.5任意一个圆点附近后单击并向下拖动即可。如果向上拖动则得到偏绿的色调。

色调调整效果参考下图(中间是原图,上下左右分别为绿紫蓝红色调)另外二维表可以很方便的对局部wbgain进行调整而不影响其他场景,这时候选择free模式可以任意方向调整,移动其所在矩形的四个顶点坐标就可以调整输出的wbgain。

wbGain偏移​

对应JSON中autoExtPara.wbGainOffset的结构体

名称描述
enable使能开关 取值0或1,分别代表不使能、使能
offsetwbgain与offset相加,对应R GR GB B通道的偏移 取值范围由wbgain与offset相加值确定,即wbgain与offset相加后范围在[0,4] (ISP20),wbgain与offset相加后范围在[0,8](ISP21)

remosaic sensor配置​

其他形式的sensor raw通过插值转为bayer raw的时候,需要先乘wbgain效果更优,转之后没有进行逆wbgain计算,为了适配当前awb算法采用的配置,对应JSON中autoExtPara.remosaicCfg的结构体

名称描述
enable使能开关 取值0或1,分别代表不使能、使能 bayer 排列 的sensor 无需使能
sensorWbGain插值时乘的wbgain,对应R GR GB B通道 取值范围得看sensor的说明文档
applyInvWbGainEnable在raw awb统计前是否进行逆wbgain的开关,即除以sensorWbGain 取值0或1,分别代表不使能、使能

WBGain平滑​

用于计算前一帧白平衡增益的权重(wbGainDampFactor),通过前一帧和当前帧wbgain加权实现wbgain的变化平滑。如果要调整wbgain稳定,增加dFMin,dFMax,但这样收敛速度会变慢;如果要加快收敛速度减小dFMin,dFMax,但这样wbgain可能会跳变。

wbGainDampFactor计算逻辑为: 环境亮度变化小的时候wbGainDampFactor稳定在dFMax,环境亮度突变的时候wbGainDampFactor向dFMin方向靠近,也就是当前帧的权重在变大,使wbgain尽可能跟上环境的变化,加快收敛过程。具体代码如下:

if (varianceLuma > LvVarTh) {
*wbGainDampFactor -= dFStep;
}
else {
*wbGainDampFactor += dFStep;
}
if (*wbGainDampFactor < dFMin) {
*wbGainDampFactor = dFMin;
}
else if (*wbGainDampFactor > dFMax) {
*wbGainDampFactor = dFMax;
}

对应JSON中autoExtPara.dampFactor的结构体

名称描述
dFStepwbGainDampFactor变化的步长 取值范围0-1
dFMinwbGainDampFactor最小值 取值范围0-1
dFMaxwbGainDampFactor最大值 取值范围0-1
LvIIRsize记录几帧的环境亮度 取值范围0-255
LvVarTh用于判断wbGainDampFactor是否要变化的环境亮度方差阈值 取值范围0-255000

其他​

tolerance

用于控制wbgain的更新,不同环境亮度(lumaValue)下可配置不同的阈值(toleranceValue)。几帧内由AWB策略算出的白平衡增益(所有通道)差值的平均小于该阈值时,wbgain使用前一帧的值,其中帧数由weightForNightGainCalc_len配置。对应JSON中autoExtPara.tolerance的结构体

名称描述
lumaValue环境亮度,取值范围[0-255000],参考后面的 lumaValueMatrix来配置
toleranceValue阈值,取值范围[0-1]
lumaValue len/toleranceValue len _ _相等,对应配置的个数 取值范围不限

runInterval

用于控制隔几帧做一次自动白平衡,不同环境亮度(lumaValue)下可配置不同的帧数(intervalValue)。对应JSON中autoExtPara.runInterval的结构体

名称描述
lumaValue环境亮度,取值范围[0-255000],参考后面的 lumaValueMatrix来配置
intervalValue帧数,取值范围[0-255]
lumaValue len/intervalValue len _ _相等,对应配置的个数 取值范围不限

lumaValueMatrix

对应JSON中autoExtPara.lumaValueMatrix的数组

名称描述
lumaValueMatrix将环境亮度划分为15个等级,每一级的起始环境亮度值取值范围0-300000

白平衡收敛判断

对应JSON中autoExtPara.converged的结构体

名称描述
varThforUnDamp白平衡收敛阈值; 几帧内由AWB策略算出的白平衡增益(所有通道)差值的平均小于阈值 varThforUnDamp时,且几帧内平滑后的白平衡增益(所有通道)差值的 平均小于varThforDamp时认为白平衡收敛;其中帧数由 weightForNightGainCalc len配置 _ 取值范围0.0-1; 推荐值0.06
varThforDamp参数含义及取值范围同上 推荐值0.03

中框、大框选择

对应JSON的autoExtPara.xyRegionStableSelection节点

名称描述
enable中框、大框、附加白点框选择结果稳定的功能开关
xyTypeListSizexyRegionSize和LvVarTh用于稳定选框的结果,xyTypeListSize帧内 选投票比较多的框,作为最终的结果,且LvIIRsize(见”WBGain平 滑“章节)帧内环境亮度的方差小于varianceLumaTh时,不更新选 框的结果,即前一帧用什么框,后面一帧一直都用这个框。 取值范围0-1000;
varianceLumaTh见上面一行描述; 取值范围0-1000;
wpNumTh配置随环境亮度变化的配置,由这些配置线性插值得到阈值
wpNumTh.lumaValue环境亮度; 取值范围0-255000
wpNumTh.forBigType白点数量和forBigType/100000*totalPixel比较 取值范围0-100000
wpNumTh.forExtraType无用

xyRegionSize =0 或varianceLumaTh= 0,将每帧都去应用当前帧信息对应的选框结果。

if(中框白点数量>wpNumThForBigType/100000*totalPixel){

则计算wbgain的白点来自于中框

}else{

计算wbgain的白点来自于大框

}

注:

(1)当计算wbgain的白点来自于附加白点框时,“分区策略计算WBGain”章节里面的参数无效

2.3 标定​

AWB标定基本原理​

主要是标定Raw在XY、UV、YUV的白点条件,单纯色算法参数及标准光源下的白平衡增益

AWB标定的raw图要求​

Raw图采集时需要准备环境如下:

① 设备:x-rite 24色卡,灯箱

② 调整曝光参数,使色卡中最亮的白色块的最大值为[150-240],在这个范围内越亮越好

③ 色卡占画面1/9以上

依次在A,CWF,D50,D65,D75,HZ,TL84光源下拍摄x-rite 24色卡,解完马赛克的示意图如下:

AWB标定工具的界面说明​

(1) 标定的时候主要是调整UV、XY域的白点边界,及YUV域的TH值

(2) 各个光源的信息显示可以通过Display Control面板里LightX前面的复选框来选择是否显示(3) Exclude WPC Range面板可用于增加非白点区间和额外光源白点区间。

(4) AWB Simulaton 用于对raw图进行白点检测,统计白点增益

① LoadImage 导入Raw图后,如下所示,会打印出白点信息。不同光源的白点用不同的颜色显示出来。中框、大框、小框的白点数量 RGain累加和 BGain累加和 会显示在Detected WP Number、RGain、BGain三个文本框里② 单击图像中的任意位置,会映射到UV域白点条件界面和XY域条件界面上,便于查看点是否落在白点区间内,同时该点的R G B U V X Y RGain BGain Dis Th会显示在该界面的Stats of Point Track面板上

AWB标定步骤​

(1) AWB标定时需完成BLC和LSC的标定

(2) 单击Load Raw Files导入A,CWF,D50,D65,D75,HZ,TL84下的raw图(推荐标定这七个光源的raw图)

(3) 单击Find Chart 识别色卡

① 依次单击第1块,第6块,第19块,第20块② 单击FindChart 会批量识别所有光源的色卡色块,如下所示(显示最后一个光源的白点检测结果)

③ 从下拉菜单里面选择其他光源,确认色块识别的正确性,发现只有TL84的最后一块识别有点偏右,这时候只需单独重新检测即可,固Mode里面 选择 Find chart one by one 重复步骤12,直至TL84的色卡色块识别正确,如下所示

④ 单击Save 完成识别

(4) 单击Calibrate ,得到如下初始的白点条件及其他参数(5) 单击AWB Simulaton ,依次导入导入A,CWF,D50,D65,D75,HZ,TL84下的raw图查看白点检测的准确性

(6) 修改UV域或XY域的框或YUV的TH使各个光源下色卡的白点检测更准确

(7) 单击Save

(8) 重复(5)~(7)直到各个光源的白点检测都比较合理。

(9) 注意事项:

① 调整边界尽量使白点在框里面,非白点在框外(一般做不到)

② 所有光源中框或大框围成的区间必须是紧连的(三种线型表示三个大小的框)

错误示范(大框的区间是紧连的,但是中框之间有间隔,如下箭头所示):

正确示范:

③ a和hz光源在XY域的Y方向上可以紧凑一些,d50 d65XY域的Y方向上可以放宽一些

④ 所有光源在UV域围成的区间必须是紧连的

⑤ 不同光源边界可以重叠,但不要同时在XY和UV空间都重叠

⑥ 参考XY空间划分UV空间,以排除非白点

如圈出来的D75光源第7块落在hz范围内,将会被识别为白点

重新调整后,D75光源第7块B在xy和uv空间上不在同一光源内,不会被识别为白点⑦ 当非白点落在XY和UV的白点区间里,还可以通过调小TH排除,或者增加非白点区间排除。

⑧ 当白点落在XY和UV的白点区间里,但仍然不是白点时,可能是因为超过亮度范围被排除了,或者落在非白点区间内,或者是因为小于TH 而没有落在YUV域的白点区间里

AWB标定结果​

最终白点条件:

白点检测结果为:

A光CWF:

D50 D65

D75 HZ

TL84

2.4 常见问题定位​

为了解决白平衡异常的问题,通常需要抓log和抓raw分析原因,通过修改白点条件或修改策略参数来解决。

抓log并分析​

用于debug的awb log等级为export persist_camera_engine_log=0x2ff4

AWB log 解读

(1) 控制及模式的log

hdr_working_mode为0 表示当前为normal模式,否则为hdr模式

byPass 为0 表示白平衡校正使能,为1 表示白平衡校正不使能

mode为0表示当前为手动白平衡模式,为1表示当前为自动白平衡模式

frame_id为帧id

processing awb_gain_algo 为此模块最终输出的wbgain

(2)awb log等级为export persist_camera_engine_log=0x2ff2 可用于一般的问题定位

AwbGainClip Input 和output 分别为wbgain范围限制输入和输出的CCT和CRI;

AwbGainAdjust2Input 和output 分别为色调调整输入和输出的CCT和CRI;wbgain_s5为与平滑后的wbgain,一般与processing awb_gain_algo 相等; awbConverged 为 0 或1分别为AWB未收敛和收敛;

LVValue为环境亮度;

WPType对应于策略分区里面的区间;

df为当前的平滑系数wbGainDampFactor

frameChoose 为 0 1 2 分别表示用了 短、中、长帧作为AWB硬件统计的输入;

WPNo为中框、大框的白点数

vaild wp number in standard light为所有光源有效白点的数量

select white point range type 为0 1 表示当前白点统计分别基于中框和大框

runInterval 为隔多少帧跑一次

tolerance 为wbgain的方差变化小于该值时,wbgain将不更新

(3)awb log等级为export persist_camera_engine_log=0x2ff3 可用于白点条件及策略问题定位

由统计信息type0: gain到最终的processing awb_gain_algo经过下面几个步骤:

type0: gain ==> stategy_result.gain ==> wbGainType1+wbGainType3 ==> wbgain_s1 ==> wbgain_s3(AwbGainClip之后) ==> wbgain_s4(AwbGainAdjust,色调调整之后)==> wbgain_s5(damp,平滑之后) ==> processing awb_gain_algo

①这些信息用于表征场景的色温,只是辅助信息,Global为综合的色温,ill列出参与WBGain计算的前几个光源的概率及色温

② temporalDefaultGain for wbGainType3 、weight分别为temporalDefaultGain及其在wbGainType3 中占的权重

③ wbGainTepType1为WpType1算出来的WBGain

④ wbGainType3为WpType3算出来的WBGain,wbWeightType3为权重(WpType1的权重为1- wbWeightType3)

⑤ wbgain_s1 及weight分别为wbGainTepType1和wbGainType3混合的gain,及wbGainType3所占权重

⑥ stategy_result.gain 为各个光源下的WBGain

⑦ prob_total(0.372926),prob_dis(0.151197),prob_LV(0.142857),prob_WPNO(0.383987)分别标示每个光源的总概率,距离概率,亮度概率,白点数量概率

⑧ spatial gain(rggb):(1.745900,1.000000,1.000000,1.824126),statistics gain weigth(1.000000)分别表示每个光源的dayGain(策略WBGain),每个光源基于统计的白点输出的WBGain的概率,则策略WBGain概率为1 - statistics gain weigth

⑨ type0: gain (rg,bg):(1.287584,2.843158) WPNo(7707) 为中框统计的白平衡增益,白点数量

⑩ type1: gain (rg,bg):(1.291619,2.862351) WPNo(8557)为大框统计的白平衡增益,白点数量

从log上定位问题​

① 若WPNo值比较小且实际场景中有一些白点,需要重新调整白点条件

② 看一下每个光源的statistics gain weigth是否为1,是否有受策略gain的影响

③ 看一下wbWeightType3权重是否为1:

如果场景确实白点比较少,但是wbGainType3可能与实际色温更符合,需调整WP_THL、WP_THH将当前场景划分到WpType3

其他情况均参考前面两点说明调整

抓raw并仿真​

当需要重新调整白点条件,或者从Log上定位不出问题的时候,需要抓raw图进行白点检测仿真,及查看各个光源下的白点统计。

(1) 例1右边是有问题的场景,左边是抓raw图重新调整了白点条件的效果

操作步骤:

① 抓raw图1

② 打开RKISPCalibrationTool,导入xml文件

③ BLC LSC参数配置好,现在的版本需要重新标定这两个参数

④ 为了可以参考之前标准光源下的色卡的白块和非白块的分布,需要重新Load Raw Files 导入标定时用到的所有图,单击FindChart 完成色卡识别,不要单击Calibrate,单击Save,单击Draw WPC From IQ Param 导入白点条件,及显示色卡的色块分布。

⑤ 在 AWB Simulation界面上单击Load Image 导入raw图1,图片和白点检测结果会同时更新在界面上,如下所示可以看出识别的白点非常少,而图确实也比较暗。如下所示,类似圈出来的灰白区域都应该被检测为白点

⑥ 在图像上单击灰白区域,

看一下映射的点是否有在XY、UV的白点区间内,没有的话需要调整白点条件,使其落在区间内;

AWB Simulaton界面上也会显示出该点的R G B 和Y 的值,需要和JSON里面设置的limitRange对比,看是否超出范围了,若是这种情况,可以适当放宽点limitRange范围。因为特别暗和特别亮的点受噪声或某个通道饱和的影响,其Rgain Bgain与实际的会有些偏差,所以这个范围需要权衡;

若即在limitRange范围内,又在XY、UV的白点区间内,但是又没被识别为白点,还需确认YUV 的TH,后面AWB Simulaton界面上也会显示出该点的th , 参考界面上的这个值去调整YUV 的TH;

⑦ 调整完,单击AWB界面上的Save,单击AWB Simulation界面上的 Run Simlation 重新仿真。

修改XY、UV的白点区间后,白点检测如下,就解决了白平衡异常的问题

特殊问题举例​

(1) 网络摄像头应用里把白平衡设置为自然光模式,导致自动白平衡没有开启,

通过查看log发现当前mode=1 为手动模式

更改白平衡模式后可解决这个问题

(2) 标定的时候发现hz a光下白点分布不集中

实际效果如下,白平衡做不对后面测试发现是因为红外滤光片不合格导致近红外波段没有被截止,通过更换红外滤光片解决。

(3)cc模块的光源估计在来回震荡,导致色彩在震荡

通过增加JSON 中tolerance节点中的value值,使wbgain 变化小于这个值时,就不更新,达到稳定的目的。在这个例子中修改xml中参数为

<tolerance index="1" type="struct" size="[1 1]">
<LV index="1" type="double" size="[1 4]">
[0 64 128 256.0000 ]
</LV>
<value index="1" type="double" size="[1 4]">
[0.05 0.05 0.05 0.05 ]
</value>
</tolerance>

3 基础颜色调整CC​

3.1 功能描述​

由于Sensor频谱分布函数很难和视觉响应函数完全匹配,因此,可通过一个色彩校正矩阵(Color Correction Matrix,CCM)校正光谱响应的交叉效应和响应强度,使前端捕获的图像与人眼视觉保持色彩一致。CCM标定工具支持对24色卡进行3x3 CCM(aij)的预校正。

RV1109 支持多组不同色温的CCM,在ISP2.0运行时,可根据IQ参数配置的gain节点,调整全局饱和度或局部饱和度,实现CCM矩阵系数的动态调整。

3.2 关键参数​

ISP的参数见IQ json文件的ccm_calib节点。

使能控制及模式选择​

在control节点下

参数描述
enable色彩校正使能开关,1表示使能;取值0或1
mode色彩校正矩阵模式;取值CALIB CCM MODE AUTO或 _ _ _ CALIB CCM MODE MANUAL, _ _ _ CALIB CCM MODE MANUAL表示使用手动色彩校正 _ _ _ CALIB CCM MODE AUTO表示使用自动色彩校正 _ _ _
wbgain tolerance _色彩校正白平衡增益变化容忍度: 白平衡增益统计值差值小于该阈值时,可认为白平衡增益满足色彩校正的 稳定条件; 取值范围0.0-1
gain tolerance _色彩校正曝光增益变化容忍度: 曝光增益统计值差值小于该阈值时,可认为曝光增益满足色彩校正的稳定 条件; 取值范围0.0-1

亮度-饱和度调节​

在lumaCCM节点下

像素亮度相关饱和度调节

参数描述
RGB2Y para _由RGB到Y的计算系数,7bit定点化的值;整数,取值范围[0,128]
low bound pos bit _ _ _像素点亮度(Y)-颜色校正(CC)强度之亮度阈值;整数,取值范围[0,10]
y alpha curve _ _像素点亮度(Y)-颜色校正(CC)强度(alpha)之强度,1024表示1倍强度,0表 示不校正;整数,取值范围[0,1024]

图 Y-CcAlpha

全局饱和度调整

在gain_alphaScale_curve节点下

不同曝光增益(gain)对应不同的校正强度scale,对应节点gain_alphaScale_curve下的参数

参数描述
gaingain-scale之曝光增益分量,小数,取值大于0
scalegain-scale之校正强度分量,小数,取值范围[0,1]

手动CCM参数​

在manualPara节点下

使用手动CCM参数,需将control节点中的mode参数置为 CALIB_CCM_MODE_MANUAL

参数描述
ccMatrix颜色校正矩阵,由标定工具生成,小数,取值范围[-8, 7.992]
ccOffsetsR\G\B分量偏移,由标定工具生成,取值范围[-4095-4095]

自动CCM参数​

在TuningPara节点下

参数描述
damp enable _色彩校正矩阵平滑功能开关,1表示使用该功能;取值0或1

CCM矩阵计算方式选择

CCM模块设有以下两种CCM矩阵计算方式:(1)选择 标准白平衡增益与白平衡增益统计值 欧氏距离最小的光源的CCM参数;(2)使用各个光源的标准白平衡增益与白平衡增益统计值的距离概率作为权重,加权计算CCM矩阵。每个光源的距离概率 prob 计算公式如下:其中,$$Rgain, Bgain$$是白平衡增益统计值,$$awbGain$$是各个光源的标准白平衡增益,$$wr,wb$$是$$R,B$$通道权重,$$\sigma$$ 为 所有光源的$$dist$$的标准差。

在illu_estim节点下

参数描述
interp enable _CCM加权计算使能,1表示使能;取值0或1

CCM矩阵加权计算

在illu_estim节点下

参数描述
default illu _默认光源名,当各光源距离概率相等时,使用默认光源的CCM参数
weightRBR(G)gain的通道权重,在计算距离概率时将会使用到
prob limit _距离概率的下限值,距离概率小于该值的光源将不参与CCM矩阵计算
frame no _平滑帧数目,取frame no 帧的距离概率平均值用于CCM矩阵加权计算 _

CCM选择控制参数

根据白平衡增益自动选择相应光源的参数,某个光源下可配置不同曝光增益(gain)对应不同的饱和度(sat)CCM

在aCcmCof节点下

参数描述
name光源名
awbGain光源对应的标准白平衡增益,由标定工具生成,取值大于0
minDist光源对应的白平衡增益距离阈值,由标定工具生成, 在计算光源距离概率将会使用到,当dist小于该值时,将该光源的prob置为1
matrixUsed该光源下将会用到的CCM
gainsgains-sat之曝光增益分量,小数,取值大于0
satgains-sat之饱和度分量,小数,取值大于0

CCM参数

参数描述
NameCCM名字
illumination光源名
saturation对应的饱和度,由标定工具生成,取值大于等于0
ccMatrix颜色校正矩阵,由标定工具生成,小数,取值范围[-8, 7.992]
ccOffsetsR\G\B分量偏移,由标定工具生成,取值范围[-4095-4095]

3.3 CCM标定​

按照《Rockchip IQ Tools Guide ISP2x v1.1》完成CCM标定工作。

RAW数据采集​

标定光源选择

七种不同色温的光源:D50、D65、D75、A、CWF、HZ、TL84

采集步骤

Step 1. 色卡放置在灯箱背景墙的中心,保证左右两侧光源均匀;如果项目对颜色要求比较高,也可以在旁边也放入相应的颜色,比如肤色卡,用于确认效果。

Step 2. 调节曝光,使得应用gamma后的色卡各个色块都不能过曝,推荐用自动曝光

Step 3. 拍摄时,调节物距,使得色卡在画面的占比为1/9。

标定​

步骤

Step 1. RAW数据导入以及选取24色区域部分请参考《Rockchip IQ Tools Guide ISP2x v1.1》第四部分第5模块“CCM”。

Step 2. 配置标定参数

(1)设置gamma:选择相机将会使用的gamma曲线。支持Normal、HDR、Night模式,也支持自定义。

(2)设置色块权重:在6x4的表格中配置色块权重,色块位置与表格中的位置对应。

(3)点击“Calibrate”按钮进行标定,获得CCM。可在Calibrate页面进行手动调节Saturation(饱和度),直到Result中校正完的效果图或色差图满足要求。

色差图介绍

根据色差图中标准色块的偏差方向与所在区间,分析出是哪个分量异常,如下:

(1)camera的色块比idea的色块到原点的距离更远,则camera饱和度高比idea高

(2)camera的色块比idea的色块到原点的距离更小,则camera饱和度高比idea低

案例看图:色块15(红色块)及色块14(绿色)camera饱和度高比idea低,但属于偏差比较小的范畴内

色块13(蓝色)偏紫色方向,人眼视觉可能也觉得色块13也偏紫色,所以这种偏差可以接受。

一般要保证13-15色块色块偏差不要太大,这差不多代表了三原色,其他颜色可以从这三个颜色叠加得到。

如果13-15色块,或其他比较关注的颜色块色偏严重,可以增加色块的权重,但需注意兼顾对其他颜色块色偏的影响。

注意事项

(1)在识别24色区域时,确保每一个色块的黑边没被选入

(2)调整gamma曲线后可能需要重新标定CCM,所以最好先调好gamma

(3)标定图亮度不合适将会影响标定出的CCM的饱和度特性,过亮的RAW图标定出的CCM饱和度偏低,过暗的RAW图标定出的CCM饱和度偏高

(4)建议客观指标如下,但可以因项目而异,不注重这些客观指标

3.4 颜色调整​

整体颜色饱和度调整​

调整gain_alphaScale_curve的参数

scale取值可在[0, 1.0]范围内做适当调整,影响最终的色彩校正强度,scale越小,色彩饱和度越低,反之色彩饱和度增加。

调整gains-sat

sat越小,色彩饱和度越低,反之色彩饱和度增加。不同光源可以调不同的参数。

增加高饱和度的CCM

当前两点调到最大值时,饱和度还是不够,需要重新标定更高饱和度的CCM,同时要调整gains-sat 里的sat最大值为增加的饱和度。

降低暗的像素的色彩饱和度

减小y_alpha_curve中的值,以降低暗的像素的色彩饱和度,注意最后一个值需为1024,否则会影响图像中其他亮度的色彩饱和度。

某些颜色调整​

当完成前面整体颜色饱和度调整后,颜色仍然没有达到预期的效果,可以按如下步骤尝试:

(1)当需要调整颜色与人眼视觉一致时,要确认白平衡是否正确;

(2)当需要调整颜色与对比机一致时,要确认是白平衡是否一致;

(3)当需要调整颜色与对比机一致时,要确认是亮度是否接近

(4)若白平衡确认一致或正确及亮度接近后,颜色还是没有达到预期,则再调整CCM相关参数以达到目的。

确认白平衡是否正确

要点:白色物体是否偏色。

方法:

眼睛看,视频中白色物体是否为白色;

抓图,看白色块的R/G/B分量是否相差较大。

确认白平衡是否与对比机一致及调整(1)如果对比机的白平衡比较对,而RK的白色物体偏色较明显,则先通过白平衡模块使白平衡更正确;

(2)如果对比机的白色物体偏色较明显,而RK的白平衡比较对,需区分是因为对比机的白平衡算法缺陷导致,还是对比机色调喜好不同导致;如果是色调喜好不同,可以先通过白平衡模块调整色调使两者一致,或用faststone等工具调整对比机色调与RK的相同;如果是对比机的白平衡算法缺陷导致,可以增加场景中的白点数量,重新抓图,或者用faststone等工具调整对比机色调与RK的相同。

(3)如何区分对比机的白色物体偏色较明显是因为对比机的白平衡算法缺陷导致,还是对比机色调喜好不同导致

a. 若场景只有白色物体且亮度合适时,对比机的白色还是偏色,很大概率上是因为对比机做了色调调整;

b. 否则就是对比机算法缺陷导致;

调整亮度与对比机一致

(1)通过调整亮度相关模块(ae ,gamma,dehaze ,hdr)使亮度靠近,允许有一定差距

(2)或通过faststone等工具调整对比机亮度与RK的相同

调整CCM​

重新用工具标定CCM

在24色卡中找到与该颜色最接近的色块,增加该色块的权重,重新标定CCM。

案例:

以下左边的色差图中,第6/18色块色偏比较大,对此,可将中性色块(第19-24色块)权重设置成0,将第6色块设置为16,第18色块权重设置为8。另外,为了减少上述调整给其他色块带来的影响,将三原色色块(第13-15色块)权重设置为8,肤色块(第2色块)权重也设置为8,这样得到的结果色差图如下右图,第6/18色块色偏减小。

手动调整CCM

获取RK RGB值

使用RK机器抓取图像,获得RK RGB值

获取目标RGB值(1)有对比机时

使用对比机抓取图像,获得目标值,但需要保正与RK的亮度白平衡接近

(2)无对比机时

用faststone等工具调整RK采集图上的某个关注的颜色,直到该颜色预期相符。

如:调整B分量作为目标值,用fastone将B通道减17,右下所示的绿色是预期的颜色,

比较此时RK的绿色RGB为64 85 90,目标为65 86 69,然后就知道要调整CCM使B分量减小,那么两个绿色就会接近了

(3)24色卡人眼视觉的目标值为:调整CCM说明

对比当前RGB和目标RGB值,手动调整CCM,使两者RGB接近。

(1)CCM调节约束

颜色校正矩阵的公式如下:

为了保证白平衡不受破坏,参数必须满足条件:

各通道主要来源于原通道的颜色分量,因此必须满足条件:

同时,尽量使主对角线元素值差异较小,尽量使主对角线以外的元素均为负值。

如果为正数,会导致高饱和度红色偏紫,如果为正数,会导致高饱和度蓝色偏紫。

为负值时,绝对值越大,校正后的红色的G分量值越小,红色的饱和度越高;当为负值时,绝对值越大,校正后的蓝色的G分量值越小,蓝色的饱和度越高。

(2)常见色偏精调总结:

)为正数时,需减小R(B)分量,将)从接近0 的正数改为较蓝色(红色)偏紫,((小负数;)为负值时,需增大G分量,可减小蓝色(红色)过饱和,(()的绝对值;

紫色偏蓝,需增大R分量,可增大;或者减小B分量,减小,减小和,增大和;

红色偏橘,需减小G分量,可减小并增大;

肤色偏黄绿,需减小G分量,增大B分量,可大幅度减小和增大,微调,大幅度增大和减小,微调。

调整CCM示例

(1) 案例1 红色偏橘:

使用faststone 调整RGB 发现,减小G分量可以改善偏橘的问题,此时红色塑料片目标RGB值为[212 63 79]。

红色框内的红色塑料片偏橘,RGB = [212, 78, 80],与目标值[212 63 79]相比,G分量偏大。如果经验比较丰富,可以跳过获取用faststone这一步,直接调整CCM减小G分量即可。

,

原校正系数:由于红色塑料片R分量值最大,因此需要减小的值,为了符合行相加为1的约束,需要减小的绝对值

调整后校正系数:

红色塑料片:RGB = [208, 56, 76]。

(2) 案例2 肤色偏黄绿:

红色框内的肤色偏黄绿,RGB = [216, 174, 124],其中G分量偏大,B分量偏小;

同案例1,减小G分量,大幅度减小原校正系数:

和的绝对值,微调,此时相应位置的肤色:RGB = [212, 169, 124];

为增大B分量,因为R和G分量值较大,因此大幅度增大和的绝对值,微调

调整后校正系数:;

此时相应位置的肤色:RGB = [214, 169, 146]。

4 高级颜色调整-3DLut​

4.1 CCM VS 3DLut​

CCM的任务是使不同光源下的颜色与人眼视觉相近,3DLut的任务是根据喜好去调整个别的颜色。两者对颜色调整的优缺点如下:

CCM3DLut
优 点颜色过渡自然,不容易引人噪声对某个颜色的色调调整及饱和度调整比较容易; 对不相近的颜色可以没有影响
缺 点针对某个喜好,修改了CCM,可能会 导致其他不相近颜色受到影响;颜色 调整比较困难由于当前的采样点数9x9x9偏少,颜色容易过渡 不自然,且调整了数值以后会影响像素点的去噪 强度,会引入噪声

至于选择哪种方案,实际项目中在颜色喜好和过渡及噪声直接做权衡。

4.2 功能说明​

3维查找表3 dimensional look-up-tables(3DLUT)

图 9x9x9 bypass 3dlut示意

任意一个颜色均能被独立的映射为另外一个值

图 9x9x9 绿色增强3dlut示意

RK1109上3D LUT为9x9x9,表中没有记录的值可以通过三线性插值得到

4.3 关键参数​

参数见IQ json文件的lut3d_calib节点。

使能控制及模式选择​

在common节点下

参数描述
enable3DLUT使能开关,1表示使能;取值0或1
mode3DLUT模式;取值CALIB Lut3D MODE AUTO或CALIB Lut3D MODE MANUAL, _ _ _ _ _ _ CALIB Lut3D MODE MANUAL表示使用手动配置3DLUT _ _ _ CALIB Lut3D MODE AUTO表示使用自动配置3DLUT _ _ _

|wbgain_tolerance| 3DLUT白平衡增益变化容忍度:

白平衡增益统计值差值小于该阈值时,可认为白平衡增益满足3DLUT的稳定条件;取值范围0.0-1| |gain_tolerance | 3DLUT曝光增益变化容忍度:

曝光增益统计值差值小于该阈值时,可认为曝光增益满足3DLUT的稳定条件;取值范围0.0-1|

手动3DLUT参数​

在MLut3D节点下

使用手动3DLUT参数,需将common节点中的mode参数置为 CALIB_3DLUT_MODE_MANUAL

参数描述
look up table r _ _ _R通道查找表,取值范围:[0,1023]
look up table g _ _ _G通道查找表,取值范围:[0,4095]
look up table b _ _ _B通道查找表,取值范围:[0,1023]

自动3DLUT参数​

在ALut3D节点下

参数描述
damp en _3DLUT平滑功能开关,1表示使用该功能;取值0或1

3DLUT参数

参数描述
Name3DLUT名字
awbGain对应的标准白平衡增益,由标定工具生成,取值大于0
gaingain-alpha之曝光增益分量,小数,取值大于0
alphagain-alpha之3DLUT强度分量,小数,取值大于0
look up table r _ _ _R通道查找表,取值范围:[0,1023]
look up table g _ _ _G通道查找表,取值范围:[0,4095]
look up table b _ _ _B通道查找表,取值范围:[0,1023]

4.4 调整示例​

目前RK调整该功能的工具尚未开发,以下为调整效果对比