Rockchip_Color_Optimization_Guide_ISP20_CN
:::info 文档信息
文档标识:RK-SM-YF-603 · 发布版本:V1.2.8 · 发布日期:2021-10-20 · 页数:66 · 语言:英文
原始文档:Rockchip_Color_Optimization_Guide_ISP20_CN_v1.2.8.pdf
:::
章节大纲
- Rockchip_Color_Optimization_Guide_ISP20_CN(P1)
- 1 概述(P4)
- 2 AWB(P4)
- 2.1 功能描述(P4)
- 2.2 关键参数(P5)
- 手动白平衡/自动白平衡/白平衡校正使能(P13)
- hdrFrameChoose(P13)
- luma limit(P14)
- mainWindow(P14)
- multiwindow(P14)
- downScaleMode(P15)
- lscBypassEnable(P15)
- 硬件的白点检测流程(P15)
- RGB2XY(P16)
- XY domain white points detector(P17)
- UV domain white points detector(P17)
- YUV domain white points detector(P17)
- 增加非白点的区间,或者额外光源的白点区间(P19)
- AWB 策略(P20)
- 分区策略计算WBGain(P20)
- (1) 分区间参数(P21)
- (2)策略wbgain 相关参数(P21)
- (3) 光源权重计算相关参数(P23)
- 分区策略计算WBGain(P20)
- WBGain色适应调整(P25)
- WBGain范围限制(P25)
- WBGain色调调整(P27)
- WBGain平滑(P29)
- 其他(P30)
- tolerance(P30)
- runInterval(P30)
- LVMatrix(P30)
- 白平衡收敛判断(P30)
- wbGain偏移(P31)
- 中框、大框、附加白点框选择参数(P31)
- 2.3 标定(P32)
- AWB标定基本原理(P32)
- AWB标定的raw图要求(P32)
- AWB标定工具的界面说明(P32)
- AWB标定步骤(P35)
- AWB标定结果(P39)
- 2.4 FAQ(P43)
- 2.4.1 AWB问题定位推荐流程(P43)
- Log分析(P43)
- AWB log 解读(P43)
- Log分析步骤(P45)
- Raw数据仿真(P46)
- (1) 例1(P46)
- (2) 例2(P48)
- Log分析(P43)
- 2.4.2 如何处理暗光场景下(例如:增益>256x)图像偏红问题(P50)
- 2.4.3 如何处理白平衡设置为自然光模式下,自动白平衡失效问题(P52)
- 2.4.4 如何处理标定数据中,色温HZ/A光源下白点分布不集中问题(P52)
- 2.4.5 如何处理CC模块光源估计不稳定,导致色彩调节振荡问题(P52)
- 2.4.1 AWB问题定位推荐流程(P43)
- 3 基础颜色调整CC(P53)
- 3.1 功能描述(P53)
- 3.2 关键参数(P53)
- 使能控制(P55)
- 亮度-饱和度调节(P55)
- 像素亮度相关饱和度调节(P55)
- 全局饱和度调整(P55)
- CCM选择控制参数(P56)
- CCM参数(P56)
- 3.3 CCM标定(P56)
- RAW数据采集(P56)
- 标定光源选择(P56)
- 采集步骤(P56)
- 标定(P56)
- 步骤(P56)
- 色差图介绍(P57)
- 注意事项(P57)
- RAW数据采集(P56)
- 3.4 颜色调整(P58)
- 整体颜色饱和度调整(P58)
- 调整gain_alphaScale_curve的参数(P58)
- 调整gains-sat(P58)
- 增加高饱和度的CCM(P58)
- 降低暗的像素的色彩饱和度(P58)
- 某些颜色调整(P58)
- 确认白平衡是否正确(P58)
- 确认白平衡是否与对比机一致及调整(P59)
- 调整亮度与对比机一致(P59)
- 调整CCM(P59)
- 重新用工具标定CCM(P59)
- 手动调整CCM(P60)
- 获取RK RGB值(P60)
- 获取目标RGB值(P60)
- 调整CCM说明(P61)
- 调整CCM示例(P62)
- 整体颜色饱和度调整(P58)
- 4 高级颜色调整-3DLut(P64)
- 4.1 CCM VS 3DLut(P64)
- 4.2 功能说明(P65)
- 4.3 关键参数(P65)
- 4.4 调整示例(P66)
在线预览
若预览无法显示,请直接下载 PDF 后用本地阅读器打开。
1 概述
ISP20 相关的颜色调整模块有 自动白平衡(auto white balance,AWB),颜色校正(color correction,CC),3维查找表(three dimension look up table,3dlut)
2 AWB
2.1 功能描述
自动白平衡算法能自动的计算WB gain (R G B通道的白平衡增益),并将其与RGB通道分别相乘后,使受环境光影响的白色还原成纯白色,保证在各个光线条件下,相机成像色彩跟物体真实的色彩保持一致。当场景存在白点时基于自动检测的白点计算WB gain,当场景不存在白点时通过单纯色方法得到WB gain。色适应模块,对白平衡校正的目标进行调节,使白平衡校正后的图像尽可能与人眼感知的外貌一致。色调调整模块,根据喜好调整整体色调。由硬件的统计和软件的策略构成自动白平衡,如AWB流程图所示图 AWB 流程
2.2 关键参数
所有参数汇总表
| 参数名称 | 参数 类型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| wbBypass | 调试 参数 | 用户调试 参数 | Y | N |
| awbEnable | 调试 参数 | 用户调试 参数 | Y | Y |
| MeasureParaV200.Globals.hdrFrameChoose.mode | 调试 参数 | 用户调试 参数 | Y | N |
| MeasureParaV200.Globals.hdrFrameChoose.frameChoose | 调试 参数 | 用户调试 参数 | Y | N |
| MeasureParaV200.Globals.lscBypassEnable | 调试 参数 | 用户调试 参数 | N | 仿真 支持 |
| MeasureParaV200.Globals.uvDetectionEnable | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.xyDetectionEnable | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.yuvDetectionEnable | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.lsUsedForYuvDet | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.lsUsedForYuvDet | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.downScaleMode | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.blckMeasureMode | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.measureWindow.mode | 调试 参数 | 用户调试 参数 | Y | N |
| MeasureParaV200.Globals.multiWindowEnable | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.limitRange.Y | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.limitRange.R | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.limitRange.G | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.limitRange.B | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.limitRange | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.multiwindow | 调试 参数 | 用户调试 参数 | N | N |
| MeasureParaV200.Globals.excludeRange.Domain | 调试 参数 | 用户调试 参数 | N | 仿真 &标 定支 持 |
| 参数名称 | 参数 类型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| MeasureParaV200.Globals.excludeRange.mode | 调试 参数 | 用户调试 参数 | N | 仿真 &标 定支 持 |
| MeasureParaV200.Globals.excludeRange.window | 调试 参数 | 用户调试 参数 | N | 仿真 &标 定支 持 |
| StrategyPara.Globals.wbGainAdjustEnable | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainDaylightClipEnable | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.wbGainClipEnable | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.lightSourceForFirstFrame | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.uvRangeSmallEnable | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.ca Enable _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.tolerance.LV | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.tolerance.value | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.tolerance | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.runInterval.LV | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.runInterval.value | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.runInterval | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.multiwindowMode | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.dampFactor.dFStep | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.dampFactor.dFMin | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.dampFactor.dFMax | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.dampFactor.LvIIRsize | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.dampFactor.LvVarTh | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.dampFactor | 调试 参数 | 用户调试 参数 | Y | N |
| 参数名称 | 参数 类型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| StrategyPara.Globals.LVMatrix | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.LV THL _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.LV THL2 _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.LV THH _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.LV THH2 _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.WP THL _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.WP THH _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proDis THL _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proDis THH _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proLV Indoor THL _ _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proLV Indoor THH _ _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proLV Outdoor THL _ _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.proLV Outdoor THH _ _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.temporalCalGainSetSize | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.temporalGainSetWeight | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.wpNumPercTh | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.tempWeigth | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.ca LACalcFactor _ | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.singleColorProcess.lsUsedForEstimation | 调试 参数 | 用户调试 参数 | N | 标定 工具 支持 |
| StrategyPara.Globals.singleColorProcess.alpha | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.convergedVarTh | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.xyRegionStableSelection.xyRegionSize | 调试 参数 | 用户调试 参数 | N | N |
| 参数名称 | 参数 类型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| StrategyPara.Globals.xyRegionStableSelection.LvVarTh | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.xyRegionStableSelection | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.Globals.wbGainAdjust.ct grid num _ _ | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainAdjust.ct in range _ _ | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainAdjust.cri grid num _ _ | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.wbGainAdjust.cri in range _ _ | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainAdjust.lutAll.LvValue | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainAdjust.lutAll.ct out _ | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainAdjust.lutAll.cri out _ | 调试 参数 | 用户调试 参数 | Y | Y |
| StrategyPara.Globals.wbGainDaylightClip.outdoor cct min _ _ | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.wbGainClip.cri bound up _ _ | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.wbGainClip.cri bound low _ _ | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.Globals.wbGainClip | 调试 参数 | 用户调试 参数 | Y | N |
| StrategyPara.LightSources.doorType | 调试 参数 | 用户调试 参数 | N | 标定 工具 生成 |
| StrategyPara.LightSources.staWeigthSet | 调试 参数 | 用户调试 参数 | N | N |
| StrategyPara.LightSources.spatialGain LV THSet _ _ | 调试 参数 | 用户调试 参数 | N | N |
| 参数名称 | 参数 类型 | 简要说明 | ||
| MeasureParaV200.Globals.measureWindow.resAll.resolution | 标定 参数 | 标定工具 生成,与 CIS相关 | Y | 标定 工具 生成 |
| MeasureParaV200.Globals.measureWindow.resAll.measureWindowSize | 标定 &调 试参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | Y | 标定 工具 生成 |
| MeasureParaV200.Globals.pseudoLumWeight | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| 参数名称 | 参数 类型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| MeasureParaV200.Globals.rotationMat | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.k2Set | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.b0Set | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.k3Set | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.k ydisSet _ | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.b ydisSet _ | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.uRefSet | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| MeasureParaV200.LightSources.yuvRegion.vRefSet | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| StrategyPara.Globals.lineRgBg | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| StrategyPara.Globals.lineRgProjCCT | 标定 参数 | 标定工具 生成,与 CIS相关 | N | 标定 工具 生成 |
| 参数名称 | 参 数 类 型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| MeasureParaV200.LightSources.lightURegion | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.lightVRegion | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.lightXYRegion.normal | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.lightXYRegion.big | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.lightXYRegion.small | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.yuvRegion.disSet | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| MeasureParaV200.LightSources.yuvRegion.tHSet | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 仿真 &标 定工 具支 持 |
| StrategyPara.Globals.spatialGain L _ | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 支持 |
| 参数名称 | 参 数 类 型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| StrategyPara.Globals.spatialGain H _ | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 支持 |
| StrategyPara.Globals.temporalDefaultGain | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 支持 |
| StrategyPara.Globals.ca TargetGain _ | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | N |
| StrategyPara.Globals.singleColorProcess.colorBlock.index | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 生成 |
| StrategyPara.Globals.singleColorProcess.colorBlock.meanC | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 生成 |
| StrategyPara.Globals.singleColorProcess.colorBlock.meanH | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 生成 |
| StrategyPara.Globals.singleColorProcess.lsUsedForEstimation.RGain | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 支持 |
| StrategyPara.Globals.singleColorProcess.lsUsedForEstimation.BGain | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 支持 |
| 参数名称 | 参 数 类 型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| StrategyPara.LightSources.standardGainValue | 标 定& 调 试 参 数 | 1 标定工 具生成, 与CIS相关 2 调试阶 段微调 | N | 标定 工具 生成 |
手动白平衡/自动白平衡/白平衡校正使能
| 名称 | 描述 |
|---|---|
| wbBypass | 取值0或1 0表示做白平衡校正,使用的白平衡增益由awbEnable控制 1表示不执行白平衡校正 |
| awbEnable | 取值0或1 0表示使用手动白平衡增益 1表示使用自动白平衡算法计算白平增益 |
| lightSourceForFirstFrame | 取值为光源名 awbEnable 为1时,所配光源的白平衡增益用于打开相机的前几帧 wbEnable 为0时,所配光源的白平衡增益用于所有帧,即手动白 平衡增益 |
| standardGainValue | 取值范围0-8 为某个光源的白平衡增益 |
几种配置为:
自动白平衡+白平衡校正使能(推荐配置)
wbBypass = 0
awbEnable = 1
白平衡校正不使能
wbBypass = 1
手动白平衡+白平衡校正使能(将固定使用lightSourceForFirstFrame对应的standardGainValue)
wbBypass = 0
awbEnable = 0
hdrFrameChoose
对于hdr sensor 可以指定从长中短的其中一帧进行白平衡相关统计,推荐使用自动模式。
| 名称 | 描述 |
|---|---|
| mode | 取值0 或1 0 固定模式 1 自动模式,自动选择哪一帧用于白平衡统计,推荐值。 |
| frameChoose | mode 为0 时有效; 两帧hdr下:取值为 0 或1; 0 选择短帧用于白平衡统计; 1 选择长帧用于白平衡统计; 三帧hdr下:取值为 0、1或 2; 0 选择短帧用于白平衡统计; 1 选择中帧用于白平衡统计; 2 选择长帧用于白平衡统计; |
luma limit
对应XML中的limitRange节点,进入白点统计的像素点值域范围,超过范围的点不进行统计。想增加白点数增加值域;想提高白点精准度需调整值域使参与统计的点不能太暗或太亮。
| 名称 | 描述 |
|---|---|
| Y | Y通道值域,整型,最大值域为[0 255],左边界推荐值3,右边界推荐值255-黑电平-3 |
| R | R通道值域,整型,最大值域为[0 255],左边界推荐值3,右边界推荐值255-黑电平-3 |
| G | G通道值域,整型,最大值域为[0 255],左边界推荐值3,右边界推荐值255-黑电平-5 |
| B | B通道值域,整型,最大值域为[0 255],左边界推荐值3,右边界推荐值255-黑电平-5 |
mainWindow
对应XML中的measureWindow节点,对应awb统计主窗口配置。推荐使用自动配置模式;对于特殊应用,如广角镜头时四周colorshading 比较重的情况下可以自定义主窗口大小,减少对AWB统计的影响
| 名称 | 描述 |
|---|---|
| mode | 取值 0 或1 0 自动配置统计主窗口为raw大小,推荐值 1 自定义统计窗口大小 |
| resAll | mode 为1 时使能 支持不同resolution下配置不同的measureWindowSize measureWindowSize =[h offset,v offset,h size,v size],h代表水平方向,v代表垂直 _ _ _ _ 方向 |
multiwindow
配合人脸检测窗口使用,现在没有应用。对应XML中multiWindowEnable及multiwindow,对应awb统计的多个子窗口配置
| 名称 | 描述 |
|---|---|
| multiWindowEnable | 取值 0 或1 0 多个子窗口统计不使能 1 多个子窗口统计使能,默认值 |
| multiwindow | 最多可配置8个子窗口 每个窗口 配置[h offset,v offset,h size,v size] _ _ _ _ 取值范围 0-4095 |
多个子窗口的统计需结合策略参数(对应XML中multiwindowMode)使用,如当有人脸检测模块时,可以将mode设为1,且multiwindow中配置人脸窗口的位置,达到统计的白点扣除肤色点的意图,以提高白点检测准确性的目的。
| 名称 | 描述 |
|---|---|
| multiwindowMode | 多窗口的模式 取值为0,或1 0 表示多个子窗口的统计没有被使用 1 表示白点的统计=主窗口的统计-子窗口的统计 |
downScaleMode
| 名称 | 描述 |
|---|---|
| downScaleMode | 取值 0 或1 0 raw 4x4下采样作为AWB 统计模块的输入,水平和垂直方向的下采样倍数 ds w,ds h都为4 _ _ 1 raw 8x8下采样作为AWB 统计模块的输入,水平和垂直方向的下采样倍数 ds w,ds h都为8,默认值 _ _ |
lscBypassEnable
| 名称 | 描述 |
|---|---|
| lscBypassEnable | 取值0 或1; 0 白平衡统计通路的lens shading correction (LSC)不使能; 1 白平衡统计通路的LSC使能; 不影响主ISP通路的LSC模块 |
硬件的白点检测流程
图 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域白点; |
当上述三个参数都配置为0时,则落在统计窗口内,且亮度符合要求的点都会被当成白点。来不及标定,又想看一下自动白平衡后的效果时,可以这样使用
RGB2XY
RGB域到XY域变换参数由标定工具自动生成,XML中参数如下
| 名称 | 描述 |
|---|---|
| pseudoLumWeight | 使不同光源的白点尽量在一条直线上,参数由标定工具生成,取值范围 0~1,不建议调整 |
| rotationMat | 旋转矩阵,使x轴表征黑体辐射色温的变化,y轴表征同温异谱的光源,参 数由标定工具生成,取值范围[-3.99,3.99],不建议调整 |
XY domain white points detector
图 XY域白点区间
XY域白点区间如上所示,在矩形框内的为白点,XML中参数如下
| 名称 | 描述 |
|---|---|
| lightXYRegion | XY域白点区间,共有三个大小的白点区间,白点区间如图所示[x0,x1,y0,y1] 在标定工具上手动调整白点区间生成 |
| normal | 中框白点区间,取值范围[-8,7.99] |
| big | 大框白点区间,取值范围[-8,7.99] |
| small | 小框白点区间,取值范围[-8,7.99] |
UV domain white points detector
图 UV域白点区间
UV域白点区间如上所示,在四边形框内的为白点,XML中参数如下
| 名称 | 描述 |
|---|---|
| lightURegion | UV域白点条件的U坐标,构成一个闭环,如[u0,u1 u2,u3,u0],取值范围[0,255], 小数位值只能是0或0.5 在标定工具上手动调整白点区间生成 |
| lightVRegion | UV域白点条件的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,则认为该点是白点,否则非白点。对于不同位置(近似于用二维uv平面上该点(u0,v0)到标准白点的距离dis区分位置)可以设置不同的白点阈值th,如分段直线dis-th所示:在标定工具上参考场景中的点(y0,u0,v0)的diff和dis去调整相应光源的dis-th分段直线实现白点正确估计和非白点排除的目的(目前该功能尚未实现),光源由前面xy和uv域的方法得到,固yuv方法不能单独使能,必需要联合xy或uv域白点检测方法使用。
对应XML中参数如下所示
| 名称 | 描述 |
|---|---|
| yuvRegion | YUV域白点区间,由标定工具自动得到 |
| k2Set | 由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 取值范围[-2^18,2^18-1],9bit有符号整数+10bit小数 不建议调整 |
| b0Set | 由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数br/>取值范围 [0,2^17-1],17bit无符号整数+0bit小数 不建议调整 |
| k3Set | 由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 取值范围[-2^14,2^14-1],1bit有符号整数+14bit小数 不建议调整 |
| k ydisSet _ | 由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 取值范围[-2^18,2^18-1],9bit有符号整数+10bit小数 不建议调整 |
| b ydisSet _ | 由(y0,u0,v0)得到理论白点(y‘,u0,v0)计算所需参数 取值范围[-2^18,2^18-1],17bit有符号整数+0bit小数 不建议调整 |
| uRefSet | 计算th所需参数 取值范围[0,255] 不建议调整 |
| vRefSet | 计算th所需参数 取值范围[0,255] 不建议调整 |
| disSet | 计算th所需参数,分段直线dis-th的dis 取值范围[0,2^12-1],8bit无符号整数+4bit小数 注:需满足相邻两个dis分量的差为2的幂次方 |
| tHSet | 计算th所需参数,分段直线dis-th的th,是否是白点阈值条件 取值范围[0,2^8-1],8bit无符号整数+0bit小数 注: 分段直线dis-th必须为单调递增 |
增加非白点的区间,或者额外光源的白点区间
一般要同时落在XY、UV、YUV的白点区间内的点才会是白点,而有些非白点也可能满足这种情况,且位于区间的中心位置,不好排除出去。这种情况可以在UV或XY空间上增加非白点区间,只要落入该区间的点都会被当成非白点。
有些光源的点又偏离常见标准光源比较远,如果强行加入该光源的点会导致白点区间里面包含了很多颜色块。这时可以在UV或XY空间上增加额外光源的白点区间,当前面所述的XY、UV、YUV的白点区间内白点空间没有点的时候,落入该额外光源的白点区间的白点会被当成白点。
非白点区间和额外光源白点区间个数和最大为7。
对应XML中的excludeRange参数,
| 名称 | 描述 |
|---|---|
| Domain | 取值0或1 0 UV域白点区间 1 XY域白点区间 |
| mode | 取值1或3 1 该range 为非白点区间 3 该range为额外光源的白点区间 |
| window | 配置区间如上图所示[x0,x1,y0,y1] 当Domain=0时,取值范围为[0,511],其中1bit为小数位 当Domain=1时,取值范围为[-8192,8191],其中10bit为小数位 |
#####
AWB 策略
分区策略计算WBGain
图 AWB 分区策略计算WBGain示意
对环境亮度-白点数量空间进行分区,使不同的区间用不同的方法计算白平衡增益。补充环境亮度含义说明:1x曝光gain和1ms曝光积分时间下若场景的平均亮度为255(最大值),则环境亮度为255000;该值越大表示环境越亮。(1) 分区间参数
分区间参数对应XML中的参数如下
| 名称 | 描述 |
|---|---|
| LV THL _ | 图上的环境亮度阈值LV THL1 _ 取值范围0-255000 |
| LV THL2 _ | 图上的环境亮度阈值LV THL2 _ 取值范围0-255000 |
| LV THH _ | 图上的环境亮度阈值LV THH1 _ 取值范围0-255000 |
| LV THH2 _ | 图上的环境亮度阈值LV THH2 _ 取值范围0-255000 |
| WP THL _ | 图上的白点数量阈值WP THL _ 取值范围0-100000 实际的白点数量和WP THL/100000*totalPixe比较, _ 其中totalPixel = wight * height /ds w/ds h,图像宽高为wight ,height ,水平和 _ _ 垂直方向的下采样倍数分别为ds w,ds h _ _ |
| WP THH _ | 图上的白点数量阈值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加权得到
对应XML中参数,
① DayGain
| 名称 | 描述 |
|---|---|
| spatialGain L _ | 特别亮日光下的推荐wbgain 取值范围[0.5-3.9] |
| spatialGain H _ | 普通日光下的推荐wbgain 取值范围[0.5-3.9] |
| spatialGain LV THSet _ _ | 表示spatialGain LV THL和spatialGain LV THH,分别和 _ _ _ _ spatialGain L和spatialGain H对应。不同光源可以有不同配置 _ _ 取值[0-255000] |
| staWeigthSet | WPType3中的wbgain计算时StaGain i的权重。不同亮度下对应不同 _ StaGain 权重,与XML中LvMatrix对应。DayGain i的权重为100- _ _ staWeigthSet。不同光源可以有不同配置。通常情况StaGain的权重都 为100效果最优,对于室外蓝天偏红的场景可以通过配置 spatialGain H为d65为标准wbgain,spatialGain H为d50为标准 _ _ wbgain,且减小改场景亮度下的staWeigth值改善 取值 [0-100] |
根据环境亮度、spatialGain_LV_THSet、spatialGain_L、spatialGain_H即可线性插值得到不同光源的DayGain_i。用后面讲到的光源权重加权后得到给WPType1区间中的DayGain。
② NightGain
| 名称 | 描述 |
|---|---|
| temporalDefaultGain | 即为前面所述的NightGain,环境亮度低时的推荐wbgain 取值范围[0.5-3.9] |
| tempWeigth | WPType3中的wbgain计算时NightGain的权重,不同亮度下对应不同 权重,与XML中LvMatrix对应。 取值范围0-100 |
③ SingleColorGain(singleColorProcess)
实现大面积单纯色白平衡的功能,基于场景信息从配置的颜色集合和光源集合中选出颜色和WBGain。目前默认标定参数可以识别的颜色有红绿蓝黄紫。可以根据实际应用场合去增删待选择的颜色集合(colorBlock),及调整待选择的光源集合(lsUsedForEstimation),工具尚未支持该功能。
| 名称 | 描述 |
|---|---|
| colorBlock | 待选择的颜色集合,由工具生成 |
| index | 颜色索引,标记标定时用到的颜色块,修改对效果没有影响, 取值范围 1-24 标定工具默认选择x-rite色卡上的13、14、15、16、5、10 |
| meanC | 该颜色在LCH空间的平均色度值 |
| meanH | 该颜色在LCH空间的平均色调值 |
| lsUsedForEstimation | 待选择的光源集合,由工具生成 |
| name | 光源名 |
| RGain | 该光源的红色通道白平衡增益 取值大于0,小数 |
| BGain | 该光源的蓝色通道白平衡增益 取值大于0,小数 |
| alpha | LCH空间的H权重 使用默认值即可,不用调整 取值范围[0.0-1.0] |
④ 若前几帧有白平衡增益了,则用前几帧加权的wbgain作为WpType3的白平衡增益
| 名称 | 描述 |
|---|---|
| temporalCalGainSetSize | 记录的白平衡增益的帧数取值 0-4 |
| temporalGainSetWeight | 这几帧白平衡增益参与WpType3的白平衡增益计算的权重,数组中 第0个位置对应最远一帧的权重,最后一个位置对应最近一帧的权重 取值 [0-100] |
(3) 光源权重计算相关参数
WpType3内不同光源的概率计算参数
①距离概率参数
由前一帧的wbgain到各个光源的标准wbgain的欧式距离(gain_dis),根据下图分段直线计算得到距离概率对应XML中的参数如下
| 名称 | 描述 |
|---|---|
| proDis THL _ | 图上的距离阈值disTHL 取值范围[0-4] |
| proDis THH _ | 图上的距离阈值disTHH 取值范围[0-4] |
②场景亮度概率参数
室外类型的光源其光源的概率为 pout,pout根据图 4- 14亮度-pout曲线计算
室内类型的光源其光源的概率为 pin = 1-pout
不能严格区分的光源,如pd50 = max(pout,pin)
对应XML中的参数如下
| 名称 | 描述 |
|---|---|
| proLV Outdoor THL _ _ | 图上的环境亮度阈值outdoorTHL 取值范围0-255000 |
| proLV Outdoor THH _ _ | 图上的环境亮度阈值outdoorTHH 取值范围0-255000 |
| doorType | 光源属于室内还是室外,不同光源有不同的配置 1 表示 室内 2 表示介于室内和室外之间 3 表示 室外 |
③场景白点数量概率参数
对应XML中的参数如下
| 名称 | 描述 |
|---|---|
| wpNumPercTh | 当某个光源白点数量小于wpNumPercTh*totalPixel,且白点数量占所有光源 的白点数比例小于20%,则该光源白点数量概率为0,其中totalPixel = wight* height /ds w/ds h,图像宽高为wight ,height ,水平和垂直方向的下采样 _ _ 倍数分别为ds w,ds h _ _ 取值范围0-1 |
WBGain色适应调整
暂不推荐使用,对应XML中参数如下,
| 名称 | 描述 |
|---|---|
| ca Enable _ | 白平衡校正后的图像尽可能与人眼感知的色彩外貌一致的使能 取值0或1,分别代表不使能、使能 |
| ca LACalcFactor _ | 控制不同亮度下色适应程度的因子,默认值为40。 |
| ca TargetGain _ | 用wbgain来表征光源,调整色彩外貌将被调整为该光源下的样子 取值范围0-4,默认值为d50白平衡增益 |
WBGain范围限制
将白平衡增益限制在上图所示红色直线围成的区域内,其中横坐标为相对色温,纵坐标为显色指数,这两个为光源的属性。
XML中参数如下
| 名称 | 描述 |
|---|---|
| wbGainDaylightClipEnable | 室外最低色温限制使能 取值0或1,分别代表不使能、使能 |
| wbGainClipEnable | 色温范围限制使能 取值0或1,分别代表不使能、使能 |
| wbGainDaylightClip | 室外最低色温限制参数 |
| outdoor cct min _ _ | 室外最低色温取值不限 |
| wbGainClip | 色温范围限制 |
| 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 |
若wbGainClipEnable = 1,场景为(cct0,cri0),若cct0 超出左(右)边界,则输出cct0将被强制设置为左(右)边界的值;若cri0<-cri_bound_up,则输出cri0=-cri_bound_up;若cri0>cri_bound_low,则输出cri0=cri_bound_low;若wbGainDaylightClipEnable = 1,且场景为室外场景,若cct0>outdoor_cct_min,则输出cct0=outdoor_cct_min。
WBGain色调调整
| 名称 | 描述 |
|---|---|
| wbGainAdjustEnable | 色调调整使能 取值0或1,分别代表不使能、使能 |
| ct grid num _ _ | 输入色温表之色温的采样点数 取值0-10 |
| ct in range _ _ | 输入色温表之色温的范围 取值不限 |
| cri grid num _ _ | 输入色温表之显色指数的采样点数 取值0-10 |
| cri in range _ _ | 输入色温表之显色指数的范围 取值不限 |
| lutAll | 不同的环境亮度可以配置不同的输出色温表,最多可以配三个环境亮度 |
| LvValue | 环境亮度 取值范围0-255000 |
| ct out _ | 如下表所示每个圆点的ct值,从左到右(色调从冷到暖),从下到上 取值范围0-255000 |
| cri out _ | 如下表所示每个圆点的cri,从左到右,从下到上(色调从紫到绿) 取值范围不限 |
不进行色温调整时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平滑
用于计算前一帧白平衡增益的权重(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;
}
| 名称 | 描述 |
|---|---|
| dFStep | wbGainDampFactor变化的步长 取值范围0-1 |
| dFMin | wbGainDampFactor最小值 取值范围0-1 |
| dFMax | wbGainDampFactor最大值 取值范围0-1 |
| LvIIRsize | 记录几帧的环境亮度 取值范围0-255 |
| LvVarTh | 用于判断wbGainDampFactor是否要变化的环境亮度方差阈值 取值范围0-255000 |
其他
tolerance
用于控制wbgain的更新,不同环境亮度(LV)下可配置不同的阈值(value)。几帧内由AWB策略算出的白平衡增益(所有通道)差值的平均小于该阈值时,wbgain使用前一帧的值,其中帧数由temporalCalGainSetSize配置。
| 名称 | 描述 |
|---|---|
| LV | 环境亮度,取值范围[0-255000],参考后面的LVMatrix来配置 |
| value | 帧数,取值范围[0-1] |
runInterval
用于控制隔几帧做一次自动白平衡,不同环境亮度(LV)下可配置不同的帧数(value)
| 名称 | 描述 |
|---|---|
| LV | 环境亮度,取值范围[0-255000],参考后面的LVMatrix来配置 |
| value | 帧数,取值范围[0-255] |
LVMatrix
| 名称 | 描述 |
|---|---|
| LVMatrix | 将环境亮度划分为15个等级,每一级的起始环境亮度值取值范围0-300000 |
白平衡收敛判断
| 名称 | 描述 |
|---|---|
| convergedVarTh | 白平衡收敛阈值; 几帧内由AWB策略算出的白平衡增益(所有通道)差值的平均小于2倍该阈 值时,且几帧内平滑后的白平衡增益(所有通道)差值的平均小于该阈值时 认为白平衡收敛;其中帧数由temporalCalGainSetSize配置 取值范围0.0-1; 推荐值0.03 |
wbGain偏移
对应XML中wbGainOffset 结构体
| 名称 | 描述 |
|---|---|
| enable | 使能开关 取值0或1,分别代表不使能、使能 |
| offset | wbgain与offset相加,对应R GR GB B通道的偏移 取值范围由wbgain与offset相加值确定,即wbgain与offset相加后范围在[0,4] (ISP20),wbgain与offset相加后范围在[0,8](ISP21) |
支持缺省,有需要可以复制下面内容到xml中AWB节点下的Strategy- Globals的最后一个节点wbGainClip后面
[0]
[0 0 0 0]
中框、大框、附加白点框选择参数
见XML中的xyRegionStableSelection节点
XML V1.4.8以前的版本为:
| 名称 | 描述 |
|---|---|
| xyRegionSize | xyRegionSize和LvVarTh用于稳定选框的结果,xyRegionSize帧内选投票比较多 的框,作为最终的结果,且LvIIRsize(见”WBGain平滑“章节)帧内环境亮度的 方差小于LvVarTh时,不更新选框的结果,即前一帧用什么框,后面一帧一直都 用这个框。 取值范围0-1000; |
| LvVarTh | 见上面一行描述; 取值范围0-1000; |
xyRegionSize =0 或LvVarTh = 0,将每帧都去应用当前帧信息对应的选框结果。
if(中框白点数量>WP_THH/100000*totalPixel){
则计算wbgain的白点来自于中框与小框,即小框内白点权重是普通白点的两倍}else{
计算wbgain的白点来自于大框
if(大框白点数量<=WP_THH/100000*totalPixel && 附件白点框里面的白点总数>0){
计算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 FAQ
2.4.1 AWB问题定位推荐流程
为了解决白平衡异常的问题,通常需要抓log和抓raw分析原因,通过修改白点条件或修改策略参数来解决。
Log分析
用于debug的awb log等级为export persist_camera_engine_log=0x2ff4
AWB log 解读
(1) 控制及模式的log
① AwbReConfigV200: byPass: 0 mode:1
byPass 为0 表示白平衡校正使能,为1 表示白平衡校正不使能
mode为0表示当前为手动白平衡模式,为1表示当前为自动白平衡模式
(2) 算法相关log一般由统计信息type0/1/2: gain到最终的current gain 经过下面几个步骤:
type0/1/2: gain+策略wgain相关参数 ==> 得到wbGainType1和wbGainType3 ==>wbGainType1和wbGainType3混合 ==> WBGain范围限制==> WBGain色调调整==> WBGain偏移==> current gain
① awbConverged 为 0 或1分别为AWB未收敛和收敛;frameChoose 为 0 1 2 分别表示用了 短、中、长帧作为AWB硬件统计的输入;LVValue 为环境亮度值
② WPNo为小框、中框、大框的白点数
③ effective xy type 为 0 1 2分别表示用了中框、大框、额外光源的白点算WBGain,vaild wp number为对应的白点数量(大于wpNumPercTh的点数和);WPType为 1 2 3 对应分区策略图里的WpType1、WpType2、WpType3
④ current gain 为此次算出的wbgain;df为当前的平滑系数wbGainDampFactor ⑤ wbGainSgc为单纯色算法算出来的WBGain;wbWeightSgc为wbGainSgc的权重,-1表示没有用到该算法
⑥ wbGainSpa为dayGain,wbWeightSpa为dayGain的权重,-1表示没有用到
⑦ wbGainType1为WpType1算出来的WBGain
⑧ wbGainType3为WpType3算出来的WBGain,wbWeightType3为权重(WpType1的权重为1- wbWeightType3)
⑨ 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)为大框统计的白平衡增益,白点数量
⑭ type2: gain (rg,bg):(1.288622,2.825095) WPNo(6905) Weight(0.895939) 为小框统计的白点增益,白点数量,及参与WBGain计算的权重
⑮ excWpRangeResult[0]: gain (rg,bg):(0.000000,0.000000) WPNo(0),mode(0) 分别表示第0个非白点区间或额外光源的白点区间统计的白平衡增益,白点数量
(3) 其他
①
这些信息用于表征场景的色温,只是辅助信息,Global为综合的色温,ill列出参与WBGain计算的前几个光源的概率及色温
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 的值,需要和XML里面设置的limitRange对比,看是否超出范围了,若是这种情况,可以适当放宽点limitRange范围。因为特别暗和特别亮的点受噪声或某个通道饱和的影响,其Rgain Bgain与实际的会有些偏差,所以这个范围需要权衡;
若即在limitRange范围内,又在XY、UV的白点区间内,但是又没被识别为白点,还需确认YUV 的TH,后面AWB Simulaton界面上也会显示出该点的th , 参考界面上的这个值去调整YUV 的TH;
⑦ 调整完,单击AWB界面上的Save,单击AWB Simulation界面上的 Run Simlation 重新仿真。
修改XY、UV的白点区间后,白点检测如下,就解决了白平衡异常的问题(2) 例2
对于电视摄像头而言,特殊之处在于场景的光源受电视的屏幕光源及电视画面内容影响比较大。如下所示为电视摄像头白平衡异常的现象。红色的箭头指出了灰白点在XY域和UV域映射的位置,可以看出这个时候偏离正常的白点比较远。固可以增加额外白点区间包含这些光源,
如下所示
需要注意的是,需要手动修改mode为3默认mode = 1时,把该区间当做非白点区间
2.4.2 如何处理暗光场景下(例如:增益>256x)图像偏红问题
现象:暗光下曝光增益较大(如大于256倍)时,图像偏红,如下所示
分析:该问题可能有几方面的因素造成:blc偏小(高ISO下blc也容易波动),sensor线性度差,awb gain计算不对,mfnr的frame_limit_UV值比较大。就awb gain计算不对的这个问题而言,高ISO下噪声比较大,识别到的白点不是那么可靠,可以增加LvValue小的(暗的环境)cell对应的选框白点阈值wpNumThForBigType和wpNumThForExtraType,下图分别为中框和附加框识别到的白点修改后的效果为
解决方案:
1 增加额外白点区间,参考例2
2 增加LvValue小的(暗的环境)cell对应的选框白点阈值wpNumThForBigType和wpNumThForExtraType,使其进入使用额外白点区间的模式3 可以使用一个超级大的额外白点区间加一个刚好包围住大框的额外白点区间的方式,重合区域区间里面的点会被重复统计,即理想白区的权重变大。
2.4.3 如何处理白平衡设置为自然光模式下,自动白平衡失效问题
通过查看log发现当前mode=1 为手动模式
更改白平衡模式后可解决这个问题
2.4.4 如何处理标定数据中,色温HZ/A光源下白点分布不集中问题
实际效果如下,白平衡做不对
后面测试发现是因为红外滤光片不合格导致近红外波段没有被截止,通过更换红外滤光片解决。
2.4.5 如何处理CC模块光源估计不稳定,导致色彩调节振荡问题
通过增加xml 中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 关键参数
所有参数汇总表
| 参数名称 | 参数类 型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| enable | 调试参 数 | 用户调试参数 | Y | Y |
| damp enable _ | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.lumaCCM.RGB2Y para _ | 调试参 数 | 用户调试参 数,使用默认 值 | Y | Y |
| Mode.lumaCCM.low bound pos bit _ _ _ | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.lumaCCM.y alpha curve _ _ | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.lumaCCM.gain alphaScale curve.gain _ _ | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.lumaCCM.gain alphaScale curve.scale _ _ | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.aCcmCof.illAll.matrixUsed | 调试参 数 | 用户调试参数 | Y | N |
| Mode.aCcmCof.illAll.sat | 调试参 数 | 用户调试参数 | Y | Y |
| Mode.matrixAll.illumination | 调试参 数 | 用户调试参数 | Y | N |
| Mode.matrixAll.saturation | 调试参 数 | 用户调试参数 | Y | N |
| Mode.aCcmCof.illAll.wbGain | 标定& 调试参 数 | 1 标定工具生 成,与CIS相关 2 调试阶段微 调 | Y | N |
| Mode.aCcmCof.illAll.gains | 标定& 调试参 数 | 1 标定工具生 成,与CIS相关 2 调试阶段微 调 | Y | Y |
| Mode.matrixAll.ccMatrix | 标定& 调试参 数 | 1 标定工具生 成,与CIS相关 2 调试阶段微 调 | Y | Y |
| 参数名称 | 参数类 型 | 简要说明 | API 支 持 | IQ Tool 支持 |
|---|---|---|---|---|
| Mode.matrixAll.ccOffsets | 标定& 调试参 数 | 1 标定工具生 成,与CIS相关 2 调试阶段微 调 | Y | Y |
使能控制
| 参数 | 描述 |
|---|---|
| enable | 色彩校正使能开关,1表示使能;取值0或1 |
| damp enable _ | 色彩校正矩阵平滑功能开关,1表示使用该功能;取值0或1 |
亮度-饱和度调节
像素亮度相关饱和度调节
| 参数 | 描述 |
|---|---|
| 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)对应不同的校正强度scale,对应节点gain_alphaScale_curve下的参数
| 参数 | 描述 |
|---|---|
| gain | gain-scale之曝光增益分量,小数,取值大于0 |
| scale | gain-scale之校正强度分量,小数,取值范围[0,1] |
CCM选择控制参数
根据白平衡增益自动选择相应光源的参数,某个光源下可配置不同曝光增益(gain)对应不同的饱和度(sat)CCM
| 参数 | 描述 |
|---|---|
| name | 光源名 |
| wbGain | 光源对应的标准白平衡增益,小数,由标定工具生成,取值大于0 |
| matrixUsed | 该光源下将会用到的CCM |
| gains | gains-sat之曝光增益分量,小数,取值大于0 |
| sat | gains-sat之饱和度分量,小数,取值大于0 |
CCM参数
| 参数 | 描述 |
|---|---|
| Name | CCM名字 |
| illumination | 光源名 |
| saturation | 对应的饱和度,由标定工具生成,取值大于等于0 |
| ccMatrix | 颜色校正矩阵,由标定工具生成,小数,取值范围[-8, 7.992] |
| ccOffsets | R\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的任务是根据喜好去调整个别的颜色。两者对颜色调整的优缺点如下:
| CCM | 3DLut | |
|---|---|---|
| 优 点 | 颜色过渡自然,不容易引人噪声 | 对某个颜色的色调调整及饱和度调整比较容易; 对不相近的颜色可以没有影响 |
| 缺 点 | 针对某个喜好,修改了CCM,可能会 导致其他不相近颜色受到影响;颜色 调整比较困难 | 由于当前的采样点数9x9x9偏少,颜色容易过渡 不自然,且调整了数值以后会影响像素点的去噪 强度,会引入噪声 |
至于选择哪种方案,实际项目中在颜色喜好和过渡及噪声直接做权衡。
4.2 功能说明
3维查找表3 dimensional look-up-tables(3DLUT)
图 9x9x9 bypass 3dlut示意
任意一个颜色均能被独立的映射为另外一个值
图 9x9x9 绿色增强3dlut示意
RK1109上3D LUT为9x9x9,表中没有记录的值可以通过三线性插值得到
4.3 关键参数
| 参数 | 参数 类型 | 描述 | API支持 | IQ Tool 支持 |
|---|---|---|---|---|
| enable | 调试 参数 | 3DLUT使能开关,1表示使能; 取值0或1 | Y | N |
| alp | 调试 参数 | 3DLUT强度调节因子,取值范 围:[0,1.0] | Y | N |
| look up table r _ _ _ | 调试 参数 | R通道查找表,取值范围: [0,1023] | 手动模式下 支持 | N |
| look up table g _ _ _ | 调试 参数 | G通道查找表,取值范围: [0,4095] | 手动模式下 支持 | N |
| look up table b _ _ _ | 调试 参数 | B通道查找表,取值范围: [0,1023] | 手动模式下 支持 | N |
4.4 调整示例
目前RK调整该功能的工具尚未开发,以下为调整效果对比