5.17.8.1. 修订记录

修订记录列出文档版本发生主要更改。下表列出每次文档更新技术内容。

版本 修订日期 修订说明
V0.1 2023-03-25 第一次汇总完成(Cmodel阶段)
V0.2 2024-01-12 整体结构汇总完成
V0.3 2024-03-09 更新参数列表说明
V0.4 2024-04-09 调整文档格式
V0.5 2024-05-09 更新参数说明调试流程图
V1.0 2024-06-17 补充3A调试说明,调整部分文字表述
V1.1 2024-09-04 修正格式错误,完善AE/AWB/WDR ISP模块功能描述
V2.0 2026-08-10 更新3A、DOL2、compand模块使用说明,完善各个ISP模块调试指导。

5.17.8.2. 1 X5 ISP 介绍

1.1 功能简介

文档介绍了Horizon Sunrise X5 图像处理器测试调试方案,详细说明静态图像动态视频图像质量系统化调试方法。调试效果受到CMOS sensor,镜头光学,模组结构图像处理器因素影响,因此实际调试需要结合硬件项目具体需求采用适合调试方案。

图像质量测试需要贯穿整个项目开发周期中,分不同阶段进行针对性图像质量调优。项目开发至少进行两轮比较全面图像质量评估调试;图像评估测试需要借助标准实验室环境图像质量进行精确客观评估,实验室环境需要包含可调照度色温设备满足不同光照条件测试评估。大致流程如下

image

Figure 1.11 ISP Tuning流程

文档包含客观图像质量测试相关描述,客观图像质量测试可以较为精确图像进行定量分析。部分调试需要特定光照条件进行,可以通过竞品摄像头进行客观数据对比进行针对性优化调试。

主观调试需要针对实际场景进行测试,测试需要使用调试效果参数进行场景测试,并针对测试结果进行细节优化。对于特殊应用摄像头产品,因应用特殊性需要针对特定产品使用环境进行针对性优化调试;

文档后续章节具体介绍调试测试方法、调试流程、数据分析如何通过数据测试分析进行ISP参数调优。

Horizon Sunrise X5可以支持3种模式:Linear,2DOL和Native-WDR-lin。文档主要介绍Linear 模式图像调试,如非Linear模式调试方法进行特别说明。

1.2 ISP Pipeline

image

Figure 1.21 ISP模块流程图

图中,背景黄色模块代表在RAW域进行处理,背景蓝色模块代表在RGB域处理,背景红色模块代表在YUV域处理,背景浅紫色内容代表AE/AWB的统计计算。虚线引出四个位置为AE/AWB的统计位置统计位置,可实际需求切换,一般保持默认。

5.17.8.3. 2 ISP调试概览

2.1 调试流程

2.1.1 调试依赖设备

Horizon X5 ISP图像质量调试基于实际应用场景准备相应仪器,以保证调试能够顺利进行。

以下为Horizon Sunrise X5 ISP进行典型场景调试需要实验室设备仪器:

  • 24 X-Rite Color 图卡

  • Edmund optics Opal diffusing glass

  • ISO12233 图卡

  • ISO15739 图卡

  • 2个可调照度立式灯箱

  • 三角架摄像头模组固定支架

  • 标准可调色温灯箱(QC灯箱和D75/D50滤光片)

  • Studio scene

  • 光照度

  • 曝光测试仪器

  • DNP灯箱

  • 36阶透射式HDR测试仪器

2.1.2 调试阶段

ISP参数校正流程主要包含三个阶段:

第一阶段:需要确认CMOS sensor能够正确进行初始化,获取正确的RAW信息,进行特性参数配置;

第二阶段:ISP相关算法模块基于Sensor特性进行效果优化调试;

第三阶段:系统化测试评估,系统化综合调试满足场景图像质量需求。

Figure 2.1-1三个调试阶段流程图

image

Figure 2.11 ISP调试阶段说明

2.1.2.1 第一阶段 – 客观标定部分

Hbplayer 是一个集显示采集数据功能一体可视化工具,调试用来采集Raw图和yuv数据,会随带地瓜机器人SDK版本打包释放。在调试初期需要使用Calibration Tool对sensor进行特性配置。根据各个模块调试需求采集相应的Raw 图,通过Calibration Tool标定sensor的静态调试参数。静态Raw图采集工具Hbplayer 和客观参数标定工具Calibration Tool的使用见《X5-Calibration Tool工具指南》。

Sensor特性配置光学特性校正需要使用如下模块:

  • Black Levels. – 必要

  • De-Companding (frontend/FE) LUTs. For HDR PWL mode – HDR-Native模式需要

  • Noise profile (NP). – 非必要

  • Green equalize (GE) – 非必要

  • Lens shading correction (LSC) – 必要

  • Auto-white balance (AWB) – 必要

  • Gamma – 必要

  • Color correction matrix (CCM) – 必要

  • Chromatic aberration correction (CAC) – 非必要

2.1.2.2 第二部分 – 板端部署模块优化

第二个阶段调试依赖调试的CMOS sensor特性选定的ISP算法模式,并相应参数依据光照条件进行参数优化。这个阶段调试主要通过动态调试工具VTunerClient进行实现,VTunerClient的使用见《X5-VTunerClient工具指南》。基于以下模块系统化调试图像质量场景需求进行优化。

  • Stitching

  • Dynamic dead pixel correction (Dynamic DPC)

  • Auto-exposure (AE) -

  • 2DNR(空域降噪)

  • 3DNR(时域降噪)

  • Demosaic

  • WDR(LTM+GTM)

  • Color noise reduction(CNR)

  • Edge Enhanced

  • Purple fringe correction (PF)

2.1.2.3 第三部分 – 场景权衡调试

前面两个阶段调试参数可能不能覆盖所有场景,导致部分场景出现适合不能接受图像效果, 需要第三阶段针对一些特定场景进行细节优化。一般来说,这个阶段调试需要使用不同亮度不同色温光照条件。需要不同光照环境进行对应测试,来评估调试参数是否覆盖足够真实场景。图像效果分析需要结合主观客观方面进行综合评估。对于这些需要调试场景,在重新调试参数需要先对当前图像质量参数进行分析对应进行。通过反复测试调试确定调试方向,找到改善问题关键参数进行适当优化。

第三阶段通常需要调试的ISP模块如下:

  • 2DNR 强度

  • 3DNR 强度

  • CNR 强度

  • WDR 强度

  • CCM模块色彩饱和度强度

  • Demosaic

  • EE 强度

注:在整个三个阶段调试过程需要注意,初始化之后任何修改可能影响后续模块效果,如色彩还原、降噪效果图像细节等,如Figure2.1-2。相应解决方法按照图示方式进行迭代调试。例如需要调试Black levels模块,因为BLC是ISP pipeline中第一个模块,会影响颜色噪声/细节,所有其他模块需要重新调试。

image

Figure 2.12 Tuning cycles

2.1.3 调试模式

根据模组模式类别,分为以下三类;

  • SDR Mode(linear)

  • HDR – DOL2

  • HDR – Native

三种模式对应的ISP处理pipe会有些区别,这里列出每个模式调试的pipeline模块,设计模块调试细节可以参考下文对应模块

2.1.3.1 SDR模式(linear)

针对线性模式,图像质量主要关注以下维度:亮度、清晰度噪声、通透性、色彩还 原等方面;调试涉及模块和pipe如下

image

Figure 2.13 SDR调试管线

2.1.3.2 HDR模式

针对 HDR 模式,图像质量主要关注以下维度:图像动态范围、亮度、清晰度噪 声、通透性、色彩还原以及合成区域运动拖尾表现方面;调试涉及模块和pipe如下

image

Figure 2.14 HDR调试管线

2.2 ISP调试系统需求准备

调试需要相关设备环境信息进行核实确认:

2.2.1 调试依赖信息

  • 产品应用场景画质需求

  • ISP调试结果交付方式

  • ISP调试软硬件环境具备,如一致性要求需要具备Golden模组。

  • 图像处理应用模式:Linear,2DOL,Native-WDR-lin等

  • 是否需要部署OTP参数(效果一致性保障)

  • 是否具备内置ISP

2.2.2 Sensor 配置信息

  • 动态模式(HDR-DOL2),sensor曝光比及曝光时间限定信息

  • 动态模式(HDR-Native),sensor的规格书资料及其解压节点信息

  • Sensor可设置曝光增益范围

  • Sensor支持分辨率以及时间。

  • Sensor输出数据格式

  • Sensor raw原始数据结构

  • 调试sensor的Color pattern mode

2.2.3 模组性能情况

  • 模组个体硬件性能一致性评估

  • 模组可靠性,成熟度满足量产工艺。

  • 红外截止滤光片特性

  • 电平漂及是否模拟增益变化

2.2.4 ISP相关参数

调试过程致力于确定ISP图像处理模块参数最佳值。这些参数保存相应文件中,从调试工具Calibration Tool和VTunerClient中可以获取相应参数文件。主要调试参数文件说明如下:

文件名 描述
sensor_calibration.XML (Calibration Tool导出,客观部分) sensor_calibration.json (Calibration Tool导出,客观部分) 模组标定文件,包含BLC、LSC、CCM、WB、NoiseProfile等同模组本身特性相关需要基于模组RAW数据标定得到数据;推荐导出为json文件,具体参考X5-Calibration Tool工具指南。
xxxx(sensor)_tuning.json (VTunerClient导出,主客观全量) ISP Pipeline中模块调试参数配置,包含Manual和Auto模式参数配置模组标定参数,具体参考X5-VTunerClient工具指南。

Table 2.21 ISP初始调试配置文件说明

2.2.5 调试工具(Calibration Tool/VTunerClient/HBplayer)

Horizon X5 ISP通过两个工具辅助效果调试,静态校正工具Calibration Tool和动态调试工具 VTunerClient。工具一般随带SDK包一同Release,只需要安装VTunerClient工具和matlab依赖程序runtime。成功安装后VTunerClient会生成快捷方式打开;Calibration tool可以通过VTunerClient下面入口打开。

image

Figure 2.21 Calibration Tool入口

2.2.5.1 Calibration Tool

Calibration Tool用于生成静态标定的calibration file,在参数集成时要用到这个文件,一般命名为sensorName.json或sensorName.xml。该文件包含一些与lens和sensor相关的tuning参数,例如black level,shading lookup tables,以及AWB算法开放用于tuning的参数。

image

Tuning第一阶段目标主要就是通过Calibration Tool去校准得到静态标定calibration file。这个工具之后阶段可能用于修正之前校准错误问题。

Figure 2.22 Calibration Tool主界面

使用Calibration Tool的时,可按照界面序号进行,逐个模块进行标定。也可以单独运行其中单个模块进行参数标定。标定完成后,通过XML Generator生成对应静态标定calibration file。.

2.2.5.2 VTunerClient

VTunerClient可以用来修改各个模块效果参数,修改参数效果实时在hbplayer工具显示画面体现效果变化。在VTunerClient的调试界面上,效果参数按照功能模块进行分类的,在对应模块可以进行参数修改。VTunerClient导入Calibration Tool校正得到效果文件调整对应模块参数。调试完成可以保存当前调试参数(json文件)。VTunerClient界面如Figure 2.23 。

image

Figure 2.23 VTunerClient 调试界面

2.2.6 Hbplayer

Hbplayer是用来实时显示设备画面编码工具,依赖网络传输,因此受到带宽传输限制出现显示帧(不代表输出帧);工具用于保存不同数据格式图像数据,例如RAW,YUV,BMP,JPG。Hbplayer的界面如Figure 2.24,页面参数说明Table 2.2-2。在Init_config内设置正确设备IP和端口点击左侧功能的connect按钮即可看到数据流。若要dump raw需要勾选raw_en,然后在raw_num栏输入大于0的自然数,再勾选save_raw框。详细参考芯片指导手册中“hbplayer 和 tuning_tool 工具使用指南”章节。

image

Figure 2.24 Hbplayer 界面

模块 功能 说明
version select (part 1 in Figure 2.2 4) 选择平台 选择对应平台
network (part 2 in Figure 2.2 4) 网络连接/断开 -
mode-select (part 3 in Figure 2.2 4) 网络传输/静态显示切换 实时数据流选dynamic-display 打开静态数据选static-display
image-options (part 4 in Figure 2.2 4) 显示图片信息 -
save-config (part 5 in Figure 2.2 4) 保存raw或者yuv 在raw_num/yuv_num栏输入数字勾选save_raw/ save_yuv即可保存
raw-channel (part 6 in Figure 2.2 4) 通道显示raw图 勾选raw_en后看到raw图,一般使用raw_l_win;依赖启流指令后面加上‘-r 1’启动。
init_config (part 7 in Figure 2.2 4) 配置网络端口号 开发板网络IP
Apply (part 8 in Figure 2.2 4) 确认配置 -

Table 2.22 Hbplayer初始配置界面说明

5.17.8.4. 3 ISP调试模块

X5的效果参数json中参数结构分为Manual和Auto;每个模块控制Enable/Disable功能往往在Manual参数中,通过每个模块下state参数控制(0-off;1-Manual下参数生效;2-Auto参数生效);

在X5最新SDK关于效果参数json中,模块名字关键字如下对应表格

Table 31 X5效果参数模块关键字

ISP模块 Manual参数 Auto参数
AE EC_2 AE_4
AWB WB_1_1 AWB_4
2DOL HDR_3_2DOL /
Compand CPD_1_1 /
BLS BLS ABLS
RGBIR RGBIR_1_1 /
LSC LSC_3 ALSC_3
ISP Digital gain DG /
WDR WDR_5_2_1 AWDR_5_2_1
Green Equalization GE /
DPC DPCC ADPCC
2DNR 2DNR_6 A2DNR_6
3DNR 3DNR_4 A3DNR_4
Demosaic DMSC_3 ADMSC_3
CCM CCM ACCM
Gamma GC_2 AGC_2
Edge Enhancement EE_3 AEE_3
Color Processing CP_1_2 ACP_1_2
CNR CNR_2_2 ACNR_2_2
AF AF_4 /

3.1 Auto-Exposure (AE)

3.1.1 功能描述

自动曝光(Auto-Exposure,AE)是通过调整图像亮度,来准确还原当前场景亮度。尽管AE在表征Sensor的特性扮演次要角色,但整个ISP调试过程属于基础关键模块,可以使用VTunerClient 分三个步骤对AE做调整。

  • 第一阶段:调试其它模块时,可以手动设定AE。这依赖于每个模块曝光要求,具体要求每个模块调试文档详细说明。

  • 第二阶段:参照客观指标要求,在实验室大部分场景AE参数进行校正。

  • 第三阶段:微调AE参数适合所有场景。主要调整依据增益动态变化参数。

3.1.2 关键参数功能说明

下图是AE处理流程图:

image

Figure 3.11 AE处理流程图

统计位置

Pipeline中AE有4个统计位置,如Figure 3.1-2所示。

image

Figure 3.12 AE统计数据节点

统计数据存储处理

ISP 自动曝光控制通用统计模块整个图像分割为 32×32 块,并计算每个通道(R、GR、GB、B)的平均值。这些平均值作为统计数据输出,用于实现自动曝光。

对于32×32统计阵列每个子块,输出1个32 位统计数据,其中包含 R、GR、GB 和 B 通道平均值,统计数据数据结构如下所示。

image

Figure 3.13 AE/AWB统计数据存储格式

以linear模式3840x2160分辨率图像为例,32×32个窗格分布情况如下所示

image

3.1.2.1 AE使能设定

自动曝光(AE)模块根据目标平均亮度(setPoint)与当前平均亮度比值自动调整相机曝光。该比值决定调整比例。

使用以下参数使能 AE。

Table 3.11基本 AE 参数

Parameter Type / Range Description Default Value
enable Type: bool
Range: {true, false}
是否使能 AE。
Usage Frequency:high
false

3.1.2.2 Anti-Flicker

闪烁(anti-flicker)功能用于减少人工光源(如日光灯、LED 灯)引起图像闪烁。为更好使用功能,需检测光源频率根据检测频率设置闪烁模式。

下表提供配置闪烁模式参数。

Table 3.12防闪烁模式参数

Parameter Type / Range Description Default Value
antiFlickerMode Type: enum
Range: {CAMDEV_FLIKER_PERIOD_OFF, CAMDEV_FLIKER_PERIOD_50Hz, CAMDEV_FLIKER_PERIOD_60Hz, CAMDEV_FLIKER_PERIOD_USER_DEFINED}
闪烁模式。
CAMDEV_FLIKER_PERIOD_OFF(默认):禁用闪烁;
CAMDEV_FLIKER_PERIOD_50Hz:用于 50 Hz 频闪光源;
CAMDEV_FLIKER_PERIOD_60Hz:用于 60 Hz 频闪光源;
CAMDEV_FLIKER_PERIOD_USER_DEFINED:用于用户自定义频闪频率。
Usage Frequency:medium
CAMDEV_FLIKER_PERIOD_OFF
FlickerUseDefinedPerious Type: float
Range: (0, 255)
光源用户自定义闪烁频率。
Usage Frequency:high
50

3.1.2.3 AE Target设定

表列出调整图像目标亮度参数。

Table 3.13目标图像亮度参数

Parameter Type / Range Description Default Value
setPoint Type: float
Range: (0, 255)
目标平均亮度(luma)。值越图像越亮。
Usage Frequency:high
50

3.1.2.4 统计测光模式

AE 模块测光(metering)将图像划分多个测量每块亮度,图像实际亮度所有平均亮度决定。可用以下测光模式。

平均测光

平均测光默认测光模式。此模式图像划分为 32×32 块,图像亮度所有平均亮度。

ROI统计设定

ROI 测光下,图像划分多个块,块数由 roiNumber 指定。图像亮度平均测光模式整图平均亮度各 ROI 的平均亮度按 roiWeight 指定权重决定。roiWeight 值越大,越侧重 ROI 的平均亮度。

下表描述了 ROI 测光参数。

Table 3.14ROI 测光参数

Parameter Type / Range Description Default Value
roiNumber Type: uint8_t
Range: [0, 25]
ROI 区域数量。
Usage Frequency:medium
0
roiWeight Type: float
Range: (0, 1)
ROI 区域平均亮度权重,测光整图整体平均亮度进行加权。
Usage Frequency:medium
0.5
roiWindow Type: Vsi3ARoiWindow_t[25*5]
Range: weight: [0, 255];其他成员图像尺寸变化
ROI 窗口位置尺寸。fx:水平方向起始位置;fy:垂直方向起始位置;fw:宽度;fh:高度;weight:权重。 调试设定方法参考X5-VTunerClient工具指南 - ROI 矩阵参数章节
Usage Frequency:medium
[0, 0, 100, 100, 1]

高光抑制低光补偿

高亮抑制测光模式通过将 aeStrategyMode 设为 CAMDEV_AE_STATEGY_HIGHLIGHT_PRIOR 使能。此模式图像亮度主要基于图像高亮区确定,以实现高亮抑制。

低光补偿测光模式通过将 aeStrategyMode 设为 CAMDEV_AE_STATEGY_LOWLIGHT_PRIOR 使能。此模式图像亮度主要基于图像低光区确定,以实现低光补偿。

下表描述高亮抑制测光低光补偿测光参数。

Table 3.15高亮抑制低光补偿测光参数

Parameter Type / Range Description Default Value
aeStrategyMode Type: enum
Range: {CAMDEV_AE_STATEGY_OFF=0, CAMDEV_AE_STATEGY_HIGHLIGHT_PRIOR=1, CAMDEV_AE_STATEGY_LOWLIGHT_PRIOR=2}
AE 模式。支持:高亮抑制模式、低光补偿模式、高亮抑制低光补偿禁用普通模式。
Usage Frequency:medium
CAMDEV_AE_STATEGY_OFF
hightLightLumathr Type: float
Range: [0, 255]
统计判定高亮阈值。块亮度超过阈值视为高亮区。值越大高亮抑制效果越弱。
Usage Frequency:medium
180
lowLightLumathr Type: float
Range: [0, 255]
各块判定低光区阈值。块亮度低于阈值视为低光区。值越低光补偿效果越弱。
Usage Frequency:medium
20
histRatioSlope Type: float
Range: [1, 255]
计算整图期望亮度高亮低光块权重贡献。值越低光补偿高亮抑制效果越强。
Usage Frequency:medium
15
maxHistOffset Type: float
Range: [0, 1]
最大直方图偏移。
Usage Frequency:medium
0

其他测光参数设定

其他测光参数如下所示。模块功能完善建议使用

Table 3.16其他测光参数

Parameter Type / Range Description Default Value
expv3RoiWindowWeight Type: float
Range: (0, 1)
各 ROI 的权重。
Usage Frequency:low
0.5
aeFrontGroundType Type: enum
Range: {CAM_DEV_FRONT_MODE, CAM_DEV_FACE_MODE, CAM_DEV_TOUCH_MODE}
ROI 测光模式,可前置(front)、人脸(face)或触控(touch)ROI 测光。
Usage Frequency:low
CAM_DEV_FRONT_MODE
aeFaceWeight Type: float
Range: (0, 1)
人脸 ROI 区域平均亮度权重,测光整图整体平均亮度加权。
Usage Frequency:low
0.5
aeTouchWeight Type: float
Range: (0, 1)
触控 ROI 区域平均亮度权重,测光整图整体平均亮度加权。
Usage Frequency:low
0.5

3.1.2.5 自适应AE设定

适应 AE 用于逆光低光场景根据场景评估调整目标平均亮度。使用适应 AE 需先使场景评估。经自适应 AE 处理的 setPoint 值,由处理的 setPoint 值压缩的 setPoint 值按 targetFilter 设定权重决定。

表列出基本适应 AE 参数。

Table 3.17基本适应 AE 参数

Parameter Type / Range Description Default Value
semMode Type: enum
Range: {CAMDEV_AE_SCENE_EVALUATION_FIX, CAMDEV_AE_SCENE_EVALUATION_ADAPTIVE}
是否使能场景评估功能。CAMDEV_AE_SCENE_EVALUATION_FIX:禁用场景评估;CAMDEV_AE_SCENE_EVALUATION_ADAPTIVE:使能场景评估。
Usage Frequency:low
CAMDEV_AE_SCENE_EVALUATION_FIX
targetFilter Type: float
Range: (0, 1)
获取适应 AE 后 setPoint 值权重。值越大,自适应 AE 处理的 setPoint 值处理后 setPoint 值贡献越大。
Usage Frequency:low
0.5

背光补偿参数设定

Table 3.18逆光补偿参数

Parameter Type / Range Description Default Value
wdrContrastMin Type: float
Range: (0, 255)
判定正常曝光阈值 c1。当前亮度小于 c1 时曝光正常。
Usage Frequency:low
10
wdrContrastMax Type: float
Range: (0, 255)
判定逆光阈值 c2。当前亮度大于 c2 时为逆光;小于 c2 但大于 c1 时为轻度逆光。
Usage Frequency:low
110

同时减小 wdrContrastMin 与 wdrContrastMax(即降低逆光上限最小最大值),图像低亮明显提亮、接近 setPoint,但高亮区可能曝。

同时增大 wdrContrastMin 与 wdrContrastMax(即增大逆光上限最小最大值),图像整体亮度接近 setPoint,低亮区略微提亮保持相对较暗。

3.1.2.6 目标亮度场景联动设定

当前低光等级取决于曝光。曝光越大,光照条件越暗,setPoint 需压缩多。

低光条件拍摄照片往往噪声多。若 setPoint 过大,AE 调整图像更亮、噪声放大。因此环境亮度越低,setPoint 应适当压缩。

表列出线性模式与 HDR 模式调整低光条件目标亮度参数。两种模式调试方法类似。

Table 3.19低光条件适应 AE 参数

Parameter Type / Range Description Default Value
lowlightLinearLevel Type: uint32_t
Range: [0, 16]
线性模式下 Gain/Repress 数组节点数。
Usage Frequency:medium
4
lowlightLinearRepress Type: float[5]
Range: [0, 1]
线性模式目标亮度增益变化压缩比数组。
Usage Frequency:medium
[1.0, 0.8, 0.6, 0.4, 0.4]
lowlightLinearGain Type: float[5]
Range: [0, 255]
线性模式下 sensor 总增益关键节点数组。
Usage Frequency:medium
[4.0, 8.0, 16.0, 32.0, 100.0]
lowlightHdrLevel Type: uint32_t
Range: [0, 16]
HDR 模式下 Gain/Repress 数组节点数。
Usage Frequency:low
4
lowlightHdrRepress Type: float[5]
Range: [0, 1]
HDR 模式目标亮度增益变化压缩比数组。
Usage Frequency:low
[1.0, 0.8, 0.8, 0.8, 0.8]
lowlightHdrGain Type: float[5]
Range: [0, 255]
HDR 模式下 sensor 总增益关键节点数组。
Usage Frequency:low
[4.0, 8.0, 16.0, 32.0, 100.0]

通过 lowlight{X}Level(X = Linear 或 Hdr)控制亮度级数。lowlight{X}Gain 数组第 n(n = 1 至 16)个元素表示第 n 个亮度等级曝光值,n 越大曝光越大、环境亮度越低。setPoint 的压缩比由 lowlight{X}Repress 控制,元素索引越大压缩程度越高。

  • 设定值 ≤ 1:数值越小,压缩级别越高目标亮度小;

  • 1 <设定值 ≤ 100:数值越高目标亮度提升越大,适用特殊需求下暗环境亮度提升。

下图低光场景目标亮度随Gain关系图:

image

Figure 3.1-4 低光场景target值随Gain关系

3.1.2.7 运动检测设定

AE 的运动检测检测物体相对周围环境位置变化,该模块在AE自适应模式生效。下表列出运动检测参数。

Table 3.110运动检测参数

Parameter Type / Range Description Default Value
motionFilter Type: float
Range: (0, 1)
控制运动向量累积计算。值越运动向量变化平滑更新及时,可能导致当前运动幅度较大运动检测功能检出。
Usage Frequency:low
0.5
motionThreshold Type: float
Range: (0, 1)
判定系统是否处于运动状态阈值。运动向量超过阈值当前视为运动中。该参数决定运动检测灵敏度,减小其值提高灵敏度。灵敏度越高,曝光时间图像物体轻微移动视为运动。
Usage Frequency:low
0.7

运动检测逻辑

image

Figure 3.15 AE Motion Detection处理流程

3.1.2.8 AE收敛控制

阻尼(damping)使曝光平滑。下表列出了 AE 阻尼相关参数。

Table 3.111AE 阻尼参数

Parameter Type / Range Description Default Value
dampOver Type: float
Range: (0, 1)
AE 从过状态过渡影响收敛速度值。值越收敛快。
Usage Frequency:high
0.7
dampUnder Type: float
Range: (0, 1)
AE 从状态过渡影响收敛速度值。值越收敛快。
Usage Frequency:high
0.7
dampOverGain Type: float
Range: (0, 128)
AE 从过状态过渡控制阻尼因子指数值。值越收敛快。
Usage Frequency:high
1
dampUnderGain Type: float
Range: (0, 16)
AE 从状态过渡控制阻尼因子指数值。值越收敛快。
Usage Frequency:high
1
dampOverRatio Type: float
Range: (1, 4)
AE 朝目标平均亮度方向收敛阈值。值越快速收敛范围越小。在阈值目标平均亮度之间收敛渐变。
Usage Frequency:medium
2
dampUnderRatio Type: float
Range: (0, 1)
AE 朝目标平均亮度方向收敛阈值。值越快速收敛范围越小。在阈值目标平均亮度之间收敛渐变。
Usage Frequency:medium
0.5

dampOver/UnderRatio和dampOver/UnderGain这两个参数通常用于控制系统响应速度稳定性:

  • 减少 dampOver或增加 dampOverGain ,较亮环境AE更收敛目标亮度;

  • 减少 dampUnder或增加 dampUnderGain,较暗环境下AE更收敛目标亮度;

  • 增加 dampOverRatio,较亮环境快速收敛范围变小;

  • 减少 dampUnderRatio,较暗环境快速收敛范围变小。

参数关系示意图如下:

image

Figure 3.16 AE damp示意图

希望 AE 在高光条件收敛,减小 dampOver 或增大 dampOverGain。若希望低光条件收敛,减小 dampUnder 或增大 dampUnderGain。若希望高光条件快速收敛范围小,增大 dampOverRatio。若希望低光条件快速收敛范围小,减小 dampUnderRatio。

3.1.2.9 AE锁定解锁设定

AE 锁定解锁由下表的 tolerance 参数决定。

Table 3.112锁定解锁参数

Parameter Type / Range Description Default Value
tolerance Type: float
Range: (0, 100)
锁定解锁 AE 模块阈值。值过大时,即使环境光大幅变化曝光保持不变,导致图像亮度剧变;值过小时 AE 可能频繁解锁,难以稳定。
Usage Frequency:high
20

正确锁定解锁 AE,可如下设置 tolerance:

  • AE 处于解锁状态时,可增大 tolerance 值锁定 AE。此时 tolerance 决定不再施加阻尼、曝光直接切换目标曝光点。tolerance 越大,人眼感知亮度变化明显。

  • AE 处于锁定状态时,可减小 tolerance 值解锁 AE。tolerance 越大曝光值越保持不变,即使环境光剧变,AE 越难解锁。若希望 AE 不环境光轻微变化轻易解锁,可增大 tolerance。

3.1.2.10 曝光梯度设定

下表所示通用曝光分解表示例,由曝光值、曝光等级曝光相关参数组成。可查表获得最终曝光值,定义如下:

New exposure = exposureTime × dGain × aGain × ispDgain

曝光分解表中,曝光时间(exposureTime)、模拟增益(aGain)、数字增益(dGain)、ISP 增益(ispGain)按曝光等级分段,各等级对应不同参数取值,使曝光等级平滑变化。

表列出曝光分解相关参数。

Table 3.113曝光分解参数

Parameter Type / Range Description Default Value
expTableNum Type: uint32_t
Range: [0, 255]
曝光分解表节点数。
Usage Frequency:high
5
exposureTime Type: float32_t[expTableNum-1]
Range: 按 sensor 限定值使用需求
曝光时间数组。
Usage Frequency:high
按 sensor 限定值使用需求
aGain Type: float32_t[expTableNum-1]
Range: 按 sensor 限定值使用需求
sensor 模拟增益数组。
Usage Frequency:high
1
dGain Type: float32_t[expTableNum-1]
Range: 按 sensor 限定值使用需求
sensor 数字增益数组。
Usage Frequency:high
1
ispGain Type: float32_t[expTableNum-1]
Range: (0, 255)
ISP 增益数组。
Usage Frequency:high
1

下面表格一个曝光分解表示例。

Parameter e0 a0 d0 i0<Exposure< e1 a0 d0 i0 e1 a0 d0 i0<Exposure< e1 a1 d0 i0 e1 a1 d0 i0<Exposure< e1 a1 d1 i0 e1 a1 d1 i0<Exposure< e1 a1 d1 i1
Exposure time e0 Exposure/ a0 d0 i0 e1 e1 e1 e1 e1 e1 e1
aGain a0 a0 a0 Exposure/ e1 d0 i0 a1 a1 a1 a1 a1
dGain d0 d0 d0 d0 d0 Exposure/ e1 a1 i0 d1 d1 d1
ispGain i0 i0 i0 i0 i0 i0 i0 Exposure/ e1 a1 d1 i1

Table 3.114 AE 曝光表示

上表展示一个通用曝光分解表。在示例中,仅列出两个级别作为说明,所有其他级别之间曝光参数分解模式遵循两个级别展示模式。当曝光两个级别之间时,首先增加曝光时间,然后依次增加 aGain、dGain 和 ispGain。

实际生效曝光配置曝光参数软件驱动配置方面影响,若配置曝光表范围软件驱动配置范围内,将按照曝光表配置下发曝光参数;若配置曝光表范围大于软件驱动配置范围,将会按照驱动配置范围下发曝光参数,并且用户侧报warning。

例如,驱动配置曝光时间范围是5ms~20ms,若曝光表配置曝光时间范围是10ms~20ms,那么实际生效曝光时间曝光表范围进行下发,最小曝光时间为10ms,最大曝光时间为20ms,软件不会报错。若此时曝光表配置曝光时间范围是1ms~30ms,那么实际生效最小曝光时间为5ms,最大曝光时间为20ms,且软件侧会提示曝光表越界的warning。增益设置同理。曝光表配置建议软件驱动配置范围一致,避免出现曝光效果不符预期情况。

3.1.2.11 AE计算方式设定

逐帧计算功能使 AE 库逐运行输出,并逐帧应用曝光值,有利于曝光平滑收敛。

下表描述逐帧 AE 计算参数。

Table 3.115逐帧计算参数

Parameter Type / Range Description Default Value
frameCalEnable Type: bool
Range: {0, 1}
是否使能逐帧 AE 计算。0:禁用;1:使能。
Usage Frequency:low
1

3.1.3 调试流程

3.1.3.1 第一阶段

调试第一阶段,Black Level和AWB模块需要设定符合条件值(具体参考模块详细说明)。在ISP pipeline一些前端模块调试过程中,对AE要求不高,不一定达到准确曝光值。针对这种对AE要求不高模块,可以通过VTunerClient使能Manual AE来控制图片亮度。

3.1.3.2 第二阶段

完成下表中先决条件设定后,AE调试可以作为第二阶段调试初始值。

先决条件 状态 / 值
Sensor driver Fully tested
Black level Tuned
Lens shading Tuned
WDR Disabled
Initial gamma Set
Set initial AE_LDR_Target Objectively chosen according to the output gamma chosen

Table 3.116 AE 第二阶段先决条件

调试流程

调试流程如Figure 3.16所示:

image

Figure 3.16 AE第二阶段流程图

实验室环境检查AE的初始表现。将ColorChecker置于1500lux环境中,确保ColorChecker占在30% ~ 50%(如下所示)。拍图通过Imatest的ColorChecker功能分析灰度值,也可以通过Adobe Photoshop 或者 GIMP手动分析ColorChecker 中灰度值。

image

Figure 3.17 ColorChecker 占

  • 使用Imatest分析:

Imatest 功能输出exposure error 和 density response and curve fit测量指标。f-stop值在-0.25 ~ 0.25 间可以接受的。建议测量得到的f-stop值在 -0.1 ~ 0之间。

image

Figure 3.18曝光测量指标

  • 使用Photoshop或GIMP分析:

使用ROI选择工具选取ColorChecker中每个灰块部分区域。对每个Patch而言,定义选择区域后,使用intensity/luminance 直方图计算所区域均值。

image

Figure 3.19灰块像素均值测量

对8-bit直方图而言,每个灰块像素均值接受范围如下表格。一般来讲,期望测量得到得灰块像素平均值理想值-10 ~ 10区间可以的。最好状态图片轻微曝,与理想差值在 -5 ~0 之间。

Patch编号 理想 最小值 最大值
19 240 230 250
22 122 112 132
24 40 30 50

Table 3.117 ColorChecker灰块推荐值

注:Patch 22反映是18%灰

以上内容概述了AE控制以及影响AE算法因素。

3.1.3.3 第三阶段

实验室实景调试

完成AE的第一阶段第二阶段调试后,可实验室实景灯箱进行第三阶段主观调试。第三阶段调试过程中,可依据需求喜好增加减少曝光。这样目的主要尽可能真实还原实际场景提高输出图片主观接受度。在低光条件下,对清晰度噪声平衡尤为突出。AE要具体需求导向,这主要由于整个相机系统实际应用为主,手机、监控工业相机不同应用领域各自特殊要求。

第三阶段调试主要包含两个LUT表,分别是LowLightLinearGain和LowLightLinearRepress。这个两个LUT表实现不同照度动态改变AE目标亮度功能。调试主要流程如Figure 3.110。

image

Figure 3.110 AE第三阶段调试流程

首先需要实景灯箱进行验证测试,实景灯箱尽量模拟实际环境,灯箱需要包含图像测试卡、不同色彩不同纹理实物。亮度控制可以通过调节亮度灯箱控制,照度范围囊括不同亮度段,大致分为高亮(3000lux以上)、中亮(100 ~3000lux)和低亮(0 ~ 100lux)。在不同亮度条件下,分别拍摄照片通过第二阶段提到工具(Imatest、Photoshop和GIMP)来分析确认当前亮度曝光是否需求接受范围内。

Figure 3.15中创建7个节点定义不同照度范围,这是远远不够的,还需要进一步对AE在不同照度验证。针对每个照度下AE验证,需要通过Imatest/Phototop/GIMP来分析每个灰块亮度值。在测试中如发现存有曝光范围值,则重复上述校准步骤。在优化过程中,不可能兼顾所有场景,会存在参数节点重叠冲突问题,这种情况需要根据具体需求取舍。

注:在调整AE参数时,为避免更改模块查找表中先前参数,调整周期单位进行调整(逐亮度逐个Gain)。在第三阶段中,调试应从调制有关所有系统参数最低增益开始, 不只是AE模块。 然后递增增益,逐增益调整所有相关系统参数。

场景测试

完成所有实验室调试后,最后需要真实场景进行调试。这么主要发现实验室条件设备实际应用环境差异。在实验室调试效果分析前,需要拍摄涵盖比较多样目标场景照片,需要捕获各种照明天气条件图片,用来对比色彩纹理还原表现。使用参考相机调试同时拍摄相同场景,然后可以调试相机图像参考相机图像进行比较,可以直观发现调试相机参考特点需要优化方向。

采集图像进行主观分析时,需重点关注实验室调试失败地方。可能由于曝光欠佳噪声过多导致的。将参考相机输出图像视为最低接受质量,通过不断迭代先前调试参数,直到场景范围符合标准为止。

其它调试信息

如果图像仍然存在噪声,可以尝试动态范围高亮区域移动,以降低曝光。如果噪声不是问题,则最好使用WDR补偿校正低亮区域同时能够保留高光部分信息。

3.2 Auto-White Balance (AWB)

3.2.1 功能描述

自动白平衡(AWB)模块用于自动调整图像白平衡。

AWB 算法结合白块判别色温权重,支持 D65、D50、D75、CWF、TL84、A、F12 光源。

AWB 使能后,ISP 硬件一帧划分为 32×32 块。某块的 R gain 与 B gain 值构成一个点 (R_Gain, B_Gain),即的 x 坐标为 R gain 值、y 坐标为 B gain 值。32×32 块所有构成一条标定色温曲线,如下所示。

image

Figure 3.21R Gain 与 B Gain 色温曲线

AWB Statistics模块整个划分为32x32子块, 计算每个子块中R,Gr, Gb,B 4个Bayer像素平均值。RAW数据来源(统计位置)可以设定成BLC(DeGamma)、LSC、AWB Gain、WDR,其中一个。

image

Figure 3.22 AWB统计数据节点

3.2.2 关键参数功能说明

3.2.2.1 AWB基础参数

表列出了 AWB 模式选择参数

Table 3.21基本 AWB 参数

Parameter Type / Range Description Default Value
enable Type: bool
Range: {true, false}
是否使能 AWB。
Usage Frequency:high
true
confidenceThreshold[10] Type: float32_t
Range: [0, 3]
光源半径阈值。若白块的 (R_Gain, B_Gain) 与光源的 (R_Gain, B_Gain) 距离小于阈值,则白块视为单一光源下;否则视为混合光源下。阈值越高,最接近光源 (R_Gain, B_Gain) 的白块的 (R_Gain, B_Gain) 对最终白平衡结果贡献越大。
Usage Frequency:high
成员为 0.3

其中:

enable为AWB的总开关;mode为算法模式,一般选用默认算法,不建议修改。

confidenceThreshold[10]:光源距离阈值,范围0-3,判断白点属于单一光源 / 混合光源;

  • 值越 → 判定严格 → 只有非常标准白光采纳 →AWB 更稳,但可能收敛;

  • 值越 → 判定宽松 → 很多杂色当成白光 →AWB容易稳定 、偏色。

3.2.2.2 AWB模式选择

表列出了 AWB 模式选择参数。

Table 3.22AWB 模式选择参数

Parameter Type / Range Description Default Value
mode Type: enum
Range: {CAMDEV_AWB_MODE, CAMDEV_AWB_METEDATA_MODE}
选择 AWB 模式。CAMDEV_AWB_MODE:sensor 上默认 AWB 算法;CAMDEV_AWB_METEDATA_MODE:sensor 上自定义 AWB 算法。
Usage Frequency:low
CAMDEV_AWB_MODE

3.2.2.3 纯色校正

纯色校正用于避免在 D50 光源图像出现大面积纯色(如黄、绿、蓝)时色温误判。

校正流程:

  1. 通过调整 confoundPointXRg 与 confoundPointXBg(X = Cwf、TL84 或 D65),标定 D50 光源下绿、黄纯色中心的 R gain 与 B gain。

  2. 将 customPositionXEnable(X = Cwf、TL84 或 D65)设为 true,使能纯色校正。

  3. 通过 confoundPointXThreshold(X = Cwf、TL84 或 D65)配置三个纯色范围阈值。该范围白块 (R_Gain, B_Gain) 与纯色中心点 (R_Gain, B_Gain) 之间距离。阈值过高可能将 CWF/TL84/D65 光源白块误判为 D50 下绿/黄/蓝纯色块;阈值过低可能将 D50 下纯色误判为 CWF/TL84/D65 光源白块。

  4. 检查每个白块是否在 D50 光源蓝、黄绿标定范围内。

  5. 所有白块标定范围内,则当前白块光源改为 D50 光源。后续光源概率、色温偏好低光色彩校正基于校正的 D50 光源进行。

3.2.2.3.1 纯绿色校正

下表提供纯色绿校正参数。

Table 3.23绿色校正参数

Parameter Type / Range Description Default Value
customPositionCwfEnable Type: bool
Range: {true, false}
是否使能绿色校正。
Usage Frequency:low
false
confoundPointCwfRg Type: float32_t
Range: (0, 4)
标定绿色的 R gain。用于调整 D50 光源绿色的 R Gain 标定值。
Usage Frequency:low
1.0
confoundPointCwfBg Type: float32_t
Range: (0, 4)
标定绿色的 B gain。用于调整 D50 光源绿色的 B Gain 标定值。
Usage Frequency:low
1.0
confoundPointCwfThreshold Type: float32_t
Range: (0, 3)
判断是否绿色阈值。若块的 (R_Gain, B_Gain) 点超过阈值,则视为绿色块。
Usage Frequency:low
2.0
3.2.2.3.2 纯黄色校正

下表提供纯色校正参数。

Table 3.24黄色校正参数

Parameter Type / Range Description Default Value
customPositionTl84Enable Type: bool
Range: {true, false}
是否使能黄色校正。
Usage Frequency:low
false
confoundPointTl84Rg Type: float32_t
Range: (0, 4)
标定黄色的 R gain。用于调整 D50 光源黄色的 R gain 标定值。
Usage Frequency:low
1.0
confoundPointTl84Bg Type: float32_t
Range: (0, 4)
标定黄色的 B gain。用于调整 D50 光源黄色的 B gain 标定值。
Usage Frequency:low
1.0
confoundPointTl84Threshold Type: float32_t
Range: (0, 3)
判断某块是否黄色阈值。若某块的 (R_Gain, B_Gain) 点超过阈值,则视为黄色块。
Usage Frequency:low
2.0
3.2.2.3.3 纯蓝色校正

下表提供纯色校正参数。

Table 3.25蓝色校正参数

Parameter Type / Range Description Default Value
customPositionD65Enable Type: bool
Range: {true, false}
使能蓝色校正。
Usage Frequency:low
false
confoundPointD65Rg Type: float32_t
Range: (0, 4)
标定蓝色的 R gain。用于调整 D50 光源蓝色的 R gain 标定值。
Usage Frequency:low
1.0
confoundPointD65Bg Type: float32_t
Range: (0, 4)
标定蓝色的 B gain。用于调整 D50 光源蓝色的 B gain 标定值。
Usage Frequency:low
1.0
confoundPointD65Threshold Type: float32_t
Range: (0, 3)
判断某块是否蓝色阈值。若某块的 (R_Gain, B_Gain) 点超过阈值,则视为蓝色块。
Usage Frequency:low
2.0

3.2.2.4 光源概率调整

光源(D65、D50、D75、CWF、TL84、A 或 F12)有 18 个曝光等级(gain倍数),brightnessLevel[18] 数组的 18 个元素必须按照单调递增设定,否则模块生效。光源每个曝光等级概率。模块一共10组参数,分别对应不同色温(按照客观标定结果顺序对应,json效果参数检索‘illumination’对应色温顺序)

这 18 个概率曝光等级升序存于 weight[18] 数组中。光源概率影响某块 R gain 与 B gain 的权重。若需调整光源曝光范围 a 至 b(a、b = 0 至 17)内概率值,可改变光源的 brightnessLevel 值 a 至 b。

必须根据亮度条件每个光源配置 brightnessLevel 与 weight,亮度条件曝光等级反映:亮度越低,曝光等级越高。例如 A 光源环境亮度通常低,对应曝光等级,因此 A 光源的 weight 数组应为索引较大元素设置概率值。

表列出光源概率参数。

Table 3.26光源概率参数

Parameter Type / Range Description Default Value
lightWeightLevelEnable Type: bool
Range: {true, false}
是否使能光源概率,以根据当前亮度调整不同光源图像块 (R_Gain, B_Gain) 值权重。设为 true 使能光源概率。
Usage Frequency:high
false
brightnessLevel Type: float[18]
Range: [0, 70000]
光源曝光值。数组索引代表曝光等级。
Usage Frequency:high
1
weight Type: float[18]
Range: [0, 1]
光源概率。增大光源 weight 数组索引 j(j = 0 至 17)的元素值,可有效提高在 brightnesslevel[j] 曝光等级检测光源概率。
Usage Frequency:high
1

3.2.2.5 颜色偏好

每个光源 i(i = D65、D50、D75、CWF、TL84、A、F12),分别通过 brightnessLevel、grayRgain、grayBgain 配置曝光与 R、B 通道增益。然后获取当前曝光量,找到每个白块光源,再根据当前曝光从 grayBgain 与 grayRgain 中插值出该白块光源的 R、B gain 调整量。模块一共10组参数,分别对应不同色温(按照客观标定结果顺序对应,json效果参数检索‘illumination’对应色温顺序)

若需调整特定光源曝光范围 a 至 b(a、b = 0 至 17)内红、蓝通道增益,可改变光源的 brightnessLevel 值 a 至 b。grayBgain 与 grayRgain 数组索引增大表示环境亮度降低。因此,若增大光源 grayBgain 与 grayRgain 数组较大索引元素值,则光源低光条件视为光源的 B gain 与 R gain 会相应增大。应对 R gain 施加增益校正低光条件偏红误差。

表列出色彩校正参数详细信息。

Table 3.27色彩校正参数

Parameter Type / Range Description Default Value
preferenceGainEnable Type: bool
Range: {true, false}
是否使能色彩校正校正不同光强引起偏差。设为 true 使能色彩校正。
Usage Frequency:high
false
brightnessLevel Type: float[18]
Range: [0, 17]
光源曝光值。数组索引代表曝光等级。曝光大,环境亮度越低。
Usage Frequency:high
1
grayBgain Type: float[18]
Range: (0, 512)
通道相对值 256 的增益。数组索引代表曝光等级。
Usage Frequency:high
256
grayRgain Type: float[18]
Range: (0, 512)
通道相对值 256 的增益。数组索引代表曝光等级。
Usage Frequency:high
256

3.2.2.6 色温偏好设定

色温偏好允许整体 AWB 调整良好前提下,针对不同色温图像色调红/黄蓝/紫方向调整。

识别每个白块对应色温光源后,色温偏好功能原始 R gain 与 B gain 值乘以偏好增益。

表列出色温偏好相关参数详细信息。

Table 3.28色温偏好参数

Parameter Type / Range Description Default Value
temperatureEnable Type: bool
Range: {true, false}
是否使能色温偏好功能。设为 true 使能色温偏好。
Usage Frequency:medium
false
preferenceA Type: uint16_t
Range: (0, 512)
低温光源色彩偏好,通过修改 R gain 实现。增大该值使 A 光下图像更红。
Usage Frequency:medium
256
preferenceCwf Type: uint16_t
Range: (0, 512)
中温光源色彩偏好,通过修改 CWF 光下 R gain 实现。增大该值使图像更红。
Usage Frequency:medium
256
preferenceD65 Type: uint16_t
Range: (0, 512)
高温光源色彩偏好,通过修改 B gain 实现。增大该值使 D65 光下图像蓝。
Usage Frequency:medium
256

3.2.2.7 Face AWB

目前模块功能支持。

人脸 AWB 工作原理如下:

  1. 获取人脸区域人脸 ROI 的 R gain 与 B gain 值。

  2. 根据人脸色彩偏好调整获取的 R gain 与 B gain 值。

  3. 计算调整后 R gain 与 B gain 值平均值,得到人脸区域平均 R gain 与 B gain 值。

  4. 人脸区域平均 R gain 与 B gain 值加权,得到整图的 R gain 与 B gain。

表列出人脸 AWB 参数详细信息。

Table 3.29人脸 AWB 参数

Parameter Type / Range Description Default Value
faceAwbEnable Type: bool
Range: {true, false}
是否使能人脸 AWB。必须先设为 true 使能人脸 AWB。
Usage Frequency:low
false
faceAwbRoiNum Type: uint8_t
Range: [0, 25]
人脸 ROI 数量。
Usage Frequency:low
0
faceWeight Type: float32_t
Range: [0, 1]
人脸 AWB 在整体 AWB 增益计算比例。值越大,人脸区域 AWB 增益整图影响越大,图像偏紫。这是因为人脸区域的 R gain 与 B gain 高于白块。
Usage Frequency:low
0.5
faceAwbRg Type: float32_t
Range: (0, 1)
人脸 AWB 中 R gain 的偏好。值越大,AWB 处理人脸区域整图越红。
Usage Frequency:low
1.0
faceAwbBg Type: float32_t
Range: (0, 1)
人脸 AWB 中 B gain 的偏好。值越大,AWB 处理人脸区域整图蓝。
Usage Frequency:low
1.0

3.2.2.8 ROI AWB

ROI AWB 工作原理如下:

  1. 获取各 ROI 的 R gain 与 B gain 值。

  2. 计算获取的 R gain 与 B gain 值平均值,得到 ROI 的平均 R gain 与 B gain 值。

  3. 平均 R gain 与 B gain 值加权,得到整图的 AWB 增益。

表列出了 ROI AWB 参数详细信息。

Table 3.210ROI AWB 参数

Parameter Type / Range Description Default Value
roiNumber Type: uint8_t
Range: [0, 25]
ROI AWB 的 ROI 区域数量。应大于 0 以使能 ROI AWB。
Usage Frequency:medium
0
roiWeight Type: float32_t
Range: (0, 1)
ROI AWB 功能计算的 AWB 增益总 AWB 增益贡献权重。值越大,ROI 区域 AWB 增益总 AWB 增益影响越大。
Usage Frequency:medium
0.5
roiWindow Type: Vsi3ARoiWindow_t[25*5]
Range: weight: [0, 255];其他成员图像尺寸变化
ROI 窗口位置尺寸(fx、fy、fw、fh、weight)。 调试设定方法参考X5-VTunerClient工具指南 - ROI 矩阵参数章节
Usage Frequency:medium
[0, 0, 100, 100, 1]

3.2.2.9 AWB收敛

AWB 阻尼使白平衡增益平滑。下表列出了 AWB 阻尼相关参数。一般保持默认。

Table 3.211AWB 阻尼参数

Parameter Type / Range Description Default Value
dampEnable Type: bool
Range: {true, false}
是否使能 AWB 阻尼。重要:设为 false 时 AWB 无法工作。若不想对 AWB 增益施加阻尼,建议将 useManualDampCoeff 设为 true 并将 iirDampCoeff 设为 0。
Usage Frequency:medium
true
useManuDampCoeff Type: bool
Range: {true, false}
是否手动设置阻尼系数。设为 false 时 AWB 根据曝光变化自动计算 iiRDampCoeff。
Usage Frequency:low
false
iiRDampCoeff Type: float
Range: (0, 1)
AWB 阻尼系数。系数越大,AWB 收敛平滑,减少色彩变化。
Usage Frequency:medium
0.5

3.2.2.10 AWB锁定解锁阈值

外部环境色温变化可能导致 AWB 锁定状态改变。下表列出调整 AWB 锁定阈值相关参数。一旦阈值大于 0,AWB 锁定功能使能。参数值过大可能导致 AWB 锁定解锁状态保持不变,且 AWB 处理图像色彩准确。

Table 3.212AWB 锁定参数

Parameter Type / Range Description Default Value
awbEnterUnlockThreshold Type: float32_t
Range: [0, 0.2]
AWB 进入解锁状态阈值。阈值越大,AWB 越难锁定。
Usage Frequency:low
0
awbEnterLockThreshold Type: float32_t
Range: [0, 0.2]
AWB 进入锁定状态阈值。阈值越大,AWB 越易锁定。
Usage Frequency:low
0

3.2.2.11 AWB性能参数设定

AWB 性能优化用于提高 AWB 算法每帧处理速度,同时降低 CPU 占用。

表列出了 AWB 性能优化参数。

Table 3.213AWB 性能优化参数

Parameter Type / Range Description Default Value
performanceOptiMode Type: enum
Range: {CAMDEV_PERFORMANCE_NO_OPTIMIZATION, CAMDEV_PERFORMANCE_GENERAL_OPTIMIZATION, CAMDEV_PERFORMANCE_FAST_OPTIMIZATION}
AWB 性能优化模式。CAMDEV_PERFORMANCE_NO_OPTIMIZATION(默认):禁用优化;CAMDEV_PERFORMANCE_GENERAL_OPTIMIZATION:普通优化,将 32×32 块按 16 块一组处理;CAMDEV_PERFORMANCE_FAST_OPTIMIZATION:快速优化,将 32×32 块按 32 块一组处理。可普通快速优化提高 AWB 性能,但处理速度可能导致 AWB 处理图像色彩准确性下降。
Usage Frequency:low
CAMDEV_PERFORMANCE_NO_OPTIMIZATION

3.2.3 调试流程

3.2.3.1 第一阶段

调试前置准备工作

Parameter name Description
Black level Tuned
Lens shading Tuned
CCM Tuned
GAMMA Tuned
Manual exposure -0:25 < exposure error < 0:25 (f-stops). This can be verified through Imatest.

Table 3.214 AWB第一阶段准备条件

使用的Calibration通过采集标准灯箱不同色温下ColorChecker和灯箱的RAW,来进行WB标定。具体详细标定方法参见《X5-Calibration Tool工具指南》中有关AWB标定部分。通过采集不同色温下RAW图进行标定计算标定普朗克曲线图。

拍摄多种色温的colorchecker 24色卡Raw data,如下表所列。

注:在采集RAW数据时候使用照度计(例如:Minolta CL-200A)记录色温值。

Illuminant Color Temperature Planckian/non-Planckian
D75 7500K Planckian
D65 6500K Planckian
D50 5000K Planckian
CWF 4150K Planckian
TL84 3800K Planckian
A 2800K Planckian
H 2300K Planckian

Table 3.215 AWB标定色温列表

3.2.3.1.1 调试校验

通过Imatest中的Colorcheck选项运行ColorChecker图像。 可以测试一系列图表颜色信息,用于颜色分析,获取色块20-22的色相饱和度值(HSV)并平均。

另外:可以参考数值判断AWB效果,最终表现取决于图像传感器质量客户要求。

image

Figure 3.23 Imatest颜色分析窗口

AWB quality 6,500K (HSV) 4,000K (HSV) 2,700K (HSV)
Great <0.025 <0.035 <0.030
Good 0.025 - 0.050 0.035 - 0.060 0.030 - 0.065
Fair 0.050 - 0.100 0.060 - 0.110 0.065 - 0.160
Poor >0.100 >0.110 >0.160

Table 3.216 AWB HSV数据参考

3.2.3.2 第三阶段

根据第一阶段完成实验室标定通过结果实际场景验证,根据实际场景表现参考3.2.2进行fine Tuning。

3.3 High Dynamic Range(2DOL)

3.3.1 功能描述

现实场景动态范围远高于低成本 CMOS 图像传感器可用动态范围。图像传感器只能捕获场景照度一小范围映射可用输出范围,超出传感器范围照度裁剪黑色白色。

自动曝光控制(AEC)决定场景照度一部分映射传感器范围,采用场景评估确定最佳曝光值。

扩展动态范围,利用曝光传感器获取不同动态范围像素,扩展暗灰近白区域细节,尤其对比场景有效复现完整场景辐照范围。共址曝光(co-sited multi exposure)指同一位置像素具有不同曝光值,合并单元根据各帧重叠动态范围融合一个高位像素。HDR 模块无需访问 DDR 的情况下,将融合一帧高位数据,WDR 模块增强高位压缩回 12 位,保留原始线性信息。不同曝光之间比例曝光时间曝光增益决定。2-DOL 模式下仅使用 Long 与 Short 两帧,参数说明涉及 Very Short(VS)帧部分对 2-DOL 不生效。

HDR 模块处理流程如下所示:

image

其中两个通路的BLC、DGAIN、AWB模块需要用户具体调试;firmware会根据标定结果自动应用。

Figure 3.3-1 HDR 模块框图

3.3.2 关键参数

HDR 模块基本算法流程:长短预处理(BLS、DGain、AWB 等)后,进行运动检测重影,最后合并动态范围图像。预处理阶段计算图像灰度亮度值,运动检测阶段依据传感器线性假设判定运动区域并用短帧替换,合并阶段按 transRange 权重区间融合长短帧。

HDR 模块可调参数如下所示。参数 Type/Range 与 Default Value 如下,描述标注 2-DOL 下实际生效情况。

Table 3.3-1 HDR 参数说明

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1}
0:禁用模块;1:使能模块。
Usage Frequency:high
0
bypass Type: bool
Range: {false, true}
true:使能旁路功能;false:禁用旁路功能。
Usage Frequency:medium
false
bypassSelect Type: int
Range: [0, 2]
0:仅输出长帧;1:仅输出短帧;2:仅输出超短帧。2-DOL 下仅 0 与 1 可用。
Usage Frequency:low
0
colorWeight[3] Type: int
Range: [0, 255]
颜色权重,格式 [stitchColorWeight0, stitchColorWeight1, stitchColorWeight2]:stitchColorWeight0 为最大值通道权重;stitchColorWeight1 为中间通道权重;stitchColorWeight2 为最小值通道权重。须满足 stitchColorWeight0 + stitchColorWeight1 × 2 + stitchColorWeight2 = 256。stitchColorWeight0 越大,越易对应通道饱和点结合短帧;短帧噪声很大减小 stitchColorWeight0 并增大其他权重。降噪优先级低于 transRange。
Usage Frequency:low
[255, 0, 1]
ratio[2] Type: float
Range: [1.0, 256.0]
曝光比,格式 [long/short, short/very short]。2-DOL 下仅 long/short 元素有效。
Usage Frequency:high
[16.0, 16.0]
transRange[4][2] Type: float
Range: [0.0, 1.1]
每个合成区间(两帧重叠处)的起止值。格式 [[L+S_ref(L)_start, L+S_ref(L)_end], [LS+VS_ref(LS)_start, LS+VS_ref(LS)_end], [L+S_ref(S)_start, L+S_ref(S)_end], [LS+VS_ref(VS)_start, LS+VS_ref(VS)_end]]。2-DOL 下格式为 [[L+S_ref(L)_start, L+S_ref(L)_end], [L+S_ref(S)_start, L+S_ref(S)_end]]。参考像素低于起始值合成像素为长帧;高于结束值时帧;区间内为长短融合。
Usage Frequency:high
[[0.85, 0.95], [0.85, 0.95], [0, 0.1], [0, 0.1]]
extendBit[2] Type: int
Range: [-1, 8]
扩展位值,格式 [L/S merge, LS/VS merge]。0-8:扩展位设指定值;-1(推荐):按 ratio 自动计算扩展位。
Usage Frequency:low
[-1, -1]
deGhostLs.isEnable Type: bool
Range: {true, false}
true:使能 LS 去鬼影;false:禁用 LS 去鬼影。
Usage Frequency:medium
false
deGhostLsVs.isEnable Type: bool
Range: {true, false}
true:使能 LSVS 去鬼影;false:禁用 LSVS 去鬼影。
Usage Frequency:medium
false
motionWeight[2] Type: int
Range: [0, 1024]
运动区域权重。2-DOL 下仅 motionWeight[0] 有效。
Usage Frequency:medium
[1024, 1024]
deGhostLs.motionLowerThreshold Type: int
Range: [0, 4095]
运动检测阈值。建议随短增益增大增大参数值。
Usage Frequency:medium
16
deGhostLsVs.motionLowerThreshold Type: int
Range: [0, 4095]
运动检测阈值。建议随短增益增大增大。2-DOL 下该参数无效。
Usage Frequency:low
16
deGhostLs.darkLowerThreshold Type: int
Range: [0, 4095]
暗区阈值。建议随短增益增大增大。
Usage Frequency:medium
16
deGhostLsVs.darkLowerThreshold Type: int
Range: [0, 4095]
暗区阈值。建议随短增益增大增大。2-DOL 下该参数无效。
Usage Frequency:low
16
deGhostLs.darkUpperThreshold Type: int
Range: [0, 4095]
暗区阈值。建议随短增益增大增大。
Usage Frequency:medium
256
deGhostLsVs.darkUpperThreshold Type: int
Range: [0, 4095]
暗区阈值。建议随短增益增大增大。2-DOL 下该参数无效。
Usage Frequency:low
256

3.3.2 调试流程

HDR 模块推荐调试顺序为:确认曝光比率 → 调整 transRange 过渡区 → 调整 Deghost 去重影。建议配合实时预览对比逐步收敛。

Step 1 确认曝光比率(ratio)

使用模拟器调试,需确保设置的 ratio 与实际有效比率一致;若板端通过 3A 调试,可此步。2-DOL 下仅 ratio[0](long/short)生效,需确认实际长短曝光比率一致,否则后续 transRange 与 deghost 的判定基准失准。

Step 2 调整 transRange(过渡区)

transRange 表示长帧融合权重过渡区间。调整目标:输出亮区不过曝、暗区噪声不过高、过渡自然。若过渡自然,可降低起始值扩大过渡区间;若噪声过多,可同时提高起始值结束值以减少短帧参与融合。2-DOL 下仅使用 transRange 中 L+S 相关两组。

transRange 示意图如下:

image

Figure 3.3-2 transRange 示意图

不同 transRange 取值效果比如下图(左上:transL 0.2/0.9;右上:transL 0.85/0.95;左下:transVS 0.5/0.9;右下:transVS 0.95/1.0,VS 对比 2-DOL 不生效仅作参考)。默认值 [[0.85,0.95],[0.85,0.95],[0,0.1],[0,0.1]] 中 2-DOL 仅第 1、3 组有效,可作为起点场景亮度分布微调。

image

Figure 3.3-3 transRange 调试效果对比

Step 3 调整 Deghost(去运动重影)

利用 deghost 功能去除长短同时捕获、场景存在运动物体产生融合重影。调试流程如下:

(1)观察输出是否存在运动重影;若存在,设 deGhostLs.isEnable 为 true、motionWeight 为 [1024, 1024](运动区域替换)。2-DOL 下仅 motionWeight[0] 生效。

Deghost 功能示意图如下:

image

Figure 3.3-4 Deghost 示意图

不同 motionWeight 取值效果比如下图(左:deghost 关闭;中:motionWeight[0]=1024;右:motionWeight[0]=0)。

image

Figure 3.3-5 motionWeight 调试效果对比

(2)调整 deGhostLs.motionLowerThreshold与deGhostLs.motionUpperThreshold,直到输出重影。阈值判定:低于 lower threshold 判静止区,高于 upper threshold 判运动区,区间线性插值。2-DOL 下仅 deGhostLs 组阈值生效,deGhostLsVs 组无效。

不同运动检测阈值效果比如下图(左:thrH 128/thrL 16;中:256/64;右:512/128)。

image

Figure 3.3-6 运动检测阈值调试效果对比

(3)若某些区域过暗、静止误判运动区,或过暗区域可用信息,则调整 deGhostLs.darkLowerThreshold 与 deGhostLs.darkUpperThreshold,降低区域权重。2-DOL 下仅 deGhostLs 组生效。建议随短增益增大相应提高阈值。

不同暗区阈值效果比如下图(左:dark_thrH 32/thrL 0;右:64/0)。

image

Figure 3.3-7 暗区阈值调试效果对比

3.4 Compand

3.4.1 功能描述

Compand 模块位于 Bayer 域,主要用于调整优化图像亮度色彩,使图像不同环境呈现最佳效果。其作用平衡图像亮度分布,改善视觉表现,使显示图像内容创作者原始意图一致,在实现准确悦目图像复现方面关键作用。

Compand 包含两个模块:expand 子模块电平减除(BLS)子模块。expand 子模块输入数据(12 位)扩展为 20 位 raw 数据;BLS 子模块用于避免直流偏置(DC offset)。Compand 模块框架如下所示。

image

Figure 3.4-1 Compand 模块框架图

3.4.2 关键参数

Expand Curve 中 X 与 Y 用于输入输出曲线节点。内部这些分配两个 RAM 表,分别用于 X、Y 分量,每个包含 64 个节点。expandCurveX 表示相邻 X 锚点距离,expandCurveY 表示每个 X 锚点对应的 Y 值,曲线关系详见 Figure 3.4-1。

Compand 模块可调参数如下所示。

Table 3.4-1 Compand 参数说明

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1}
0:禁用模块;1:使能模块。
Usage Frequency:high
0
expandCurveX[64] Type: int
Range: [0, 20]
expand 曲线相邻两个 X 锚点距离:x[0]=0,dx[n]=(1<<expandCurveX[n]),x[n+1]=x[n]+dx[n],其中 n=0 至 63。曲线详见 Figure 49。
Usage Frequency:high
expandCurveY[64] Type: int
Range: [0, 1048576]
expand 曲线各 X 锚点的 Y 值:y[0]=0,y[n+1]=expandCurveY[n],其中 n=0 至 63。曲线详见 Figure 49。
Usage Frequency:high
expandUseOutYCurve Type: bool
Range: {true, false}
true:使用手动配置的 Y 值;false:使用内置固定公式配置的 X 计算 Y。
Usage Frequency:high
false

3.4.3 调试流程

使用用户自定义 expand 曲线,或标定工具获取 expand 曲线,两种方式择一。

方式一:配置用户自定义 expand 曲线

推荐步骤如下:

  1. 设置 expandCurveX 与 expandCurveY 以指定用户自定义曲线。

  2. 计算以 20 位配置 BLS 值。

  3. 设置 blsEnable 为 true、state 为 1、expandUseOutYCurve 为 true。

方式二:配置标定工具获取的 expand 曲线

电平校正(BLC)子模块中,由标定工具获取 expand 曲线推荐步骤如下:

  1. 使用标定工具获取 expand 曲线数据 expand_px 与 expand_y。

  2. 将 expand_px 拷贝到 .json 配置文件的 expandCurveX,expand_y 拷贝到 expandCurveY。

  3. 计算以 20 位配置 BLS 值。

  4. 设置 blsEnable 为 true、state 为 1、expandUseOutYCurve 为 true。

3.4.4 调试建议功能说明

● 若 expandCurveX 成员数不足 64,在 expandCurveX 末尾补 0。例如:

[17, 16, 14, 10, 16, 14, 10, 9, 16, 14, 10, 9, 16, 14, 10, 16, 14, 10, 16, 14, 10, 9, 16, 14, 10, 16, 14, 10, 9, 16, 14,

10, 16, 14, 10, 9, 16, 14, 10, 9, 11] → [17, 16, 14, 10, 16, 14, 10, 9, 16, 14, 10, 9, 16, 14, 10, 16, 14, 10, 16, 14,

10, 9, 16, 14, 10, 16, 14, 10, 9, 16, 14, 10, 16, 14, 10, 9, 16, 14, 10, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0] → 在末尾补 0 至 64 个元素。

● 若 expandCurveY 成员数不足 64,将最后一个成员复制到 expandCurveY 末尾补齐。例如:

[512, 915, 1016, 1022, 1827, 2029, 2042, 2048, 3661, 4064, 4090, 4109, 7335, 8142, 8192, 14645, 16258,

16359, 29239, 32466, 32667, 32768, 58579, 65032, 65435, 116957, 129862, 130669, 131072, 234316,

260128, 261741, 467826, 519448, 522675, 524288, 937266, 1040510, 1046963, 1048575, 1048575] [512,

915, 1016, 1022, 1827, 2029, 2042, 2048, 3661, 4064, 4090, 4109, 7335, 8142, 8192, 14645, 16258, 16359,

29239, 32466, 32667, 32768, 58579, 65032, 65435, 116957, 129862, 130669, 131072, 234316, 260128,

261741, 467826, 519448, 522675, 524288, 937266, 1040510, 1046963, 1048575, 1048575, 1048575,

1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575,

1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575, 1048575] 最后一个值 1048575 复制填充至 64 个元素。

3.5 BLS(Black Level Subtraction)

3.5.1 功能描述

BLS 模块用于校正电平。

3.5.2 关键参数

表列出了 BLS 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.5-1 BLS 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {1, 2}
BLS 模块自动模式控制。 1:关闭自动模式,模块运行手动调试模式; 2:使能自动模式,由算法自动计算电平减除量。
Usage Frequency:medium
2
data[4]
bls[4]**
Type: Int
Range: [0,4095]
通道(R/Gr/Gb/B)黑电平减除值,用于校正通道电平偏置。数值标定获得。 值越大,减除大,暗部趋近真实黑;反之,值越小,减除小,暗部残留偏亮。 过大会过度减除,致使暗部细节丢失、画面偏暗;过小会导致电平残留、画面偏亮发灰。
Usage Frequency:high
[0, 0, 0, 0]
isOverrideCalibration Type: bool
Range: {true, false}
控制是否调试数据覆盖标定数据。 true:使能覆盖,使用调试数据; false:关闭覆盖,使用标定数据。
Usage Frequency:low
true

3.5.3 调试建议功能说明

● 黑电平数值标定获得,一般不会调整。若遇到暗处偏色问题,可以适当增加对应通道电平数值。

3.6 RGBIR

3.6.1 功能描述

RGB-IR 模块处理 4×4 RGB-IR 数据图案。它将 RGB-IR 数据转换为 RGB Bayer 数据和 IR 数据,供后续 ISP pipeline 处理。

图3.6-1 所示,RGB-IR 处理流程。

image

Figure 3.6-1 RGB-IR 处理流程

3.6.2 关键参数

表列出了 RGB-IR 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.6-1 RGB-IR 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1}
RGB-IR 模块使能开关。 0:关闭RGB-IR 模块; 1:使能RGB-IR 模块。 使能后,RGB-IR 模块将 4×4 RGB-IR 数据图案转换为 RGB Bayer 数据与 IR 数据,供后续 ISP pipeline 处理;关闭后该转换流程执行。默认值为 0。
Usage Frequency:low
0
irThreshold Type: int
Range: [0, 4095]
红外通道饱和曲线起始点,用于抑制区域偏紫。 当 IR 数据强度超过起始点时,对红外通道启动饱和处理,衰减输出 IR 数据抑制紫色伪彩。值越大,去饱和作用起始位置越高,紫色抑制越弱;反之,值越小,起始位置越低,紫色抑制越强。 过大可能导致区域偏紫无法消除;过可能导致正常 IR 数据过度衰减、红外灵敏度下降。 建议区域用 irThreshold 抑制紫色。
Usage Frequency:medium
4095
lThreshold Type: int
Range: [0, 4095]
权重曲线起始点,控制 IR 数据加权强度光照变化衰减行为。 当光照大于曲线起点时,权重曲线下降;当光照大于曲线终点时,权重为 0。值越大,权重曲线起点越高,IR 数据保持完整权重光照范围宽;反之,值越小,起点越低,IR 数据加权衰减早。 过大可能导致区域 IR 权重过高偏紫,过可能导致 IR 加权过早衰减、红外响应不足。 建议场景使用 lThreshold。
Usage Frequency:medium
4095
dpccTh[4] Type: int
Range: [0, 65535]
DPCC(Defective Pixel Correction by Correlation)阈值,基于均值判定坏点。 若 |中心像素−均值| > dpccTh,该像素视为坏点予以校正。取值范围 0~4095,值越大,判定坏点容忍度越高,被识别坏点数量少;反之,值越小,判定严格,识别坏点多。 过大可能导致坏点漏判、校正不足;设为 4095 时关闭 DPCC;过可能导致正常像素误判坏点、图像细节受损。 调试图像坏点建议减小该值。
Usage Frequency:low
[4095, 4095, 4095, 4095]
dpccMidTh Type: int
Range: [0, 65535]
DPCC(Defective Pixel Correction by Correlation)阈值,基于判定坏点。 若 |中心像素−中值| > dpccMidTh,该像素视为坏点予以校正。取值范围 0~4095,值越大,判定坏点容忍度越高,被识别坏点数量少;反之,值越小,判定严格,识别坏点多。 过大可能导致坏点漏判、校正不足;设为 4095 时关闭 DPCC;过可能导致正常像素误判坏点、图像细节受损。 调试图像坏点建议减小该值。
Usage Frequency:low
4095
ccMatrix[3][4] Type: float
Range: [-4.0, 4.0]
3×4 颜色转换矩阵,将 RGB-IR 数据转换为 RGB Bayer 数据与 IR 数据核心映射矩阵。 通过 3 行 4 列系数实现 RGB-IR 通道到 RGB 三通道线性变换,是 RGB-IR 模块关键参数。矩阵系数标定获得,每个 sensor 需单独标定,直接影响颜色还原准确度与 IR 分离质量。矩阵偏差越大,颜色偏移与 IR 串扰明显;矩阵精确,RGB 与 IR 分离干净、色彩还原真实。 不建议手动修改,默认值标定结果填充。
Usage Frequency:high
[[1.0,0.0,0.0,0.0],[0.0,1.0,0.0,0.0],[0.0,0.0,1.0,0.0]]
outRgbPattern Type: int
Range: [0, 3]
输出 RGB 图案枚举,指定 RGB-IR 转换输出的 Bayer 排列方式。0:RGGB;1:GRBG;2:GBRG;3:BGGR。 依据后续 ISP pipeline 期望的 Bayer 排列选择对应图案,确保与 Demosaic 等下游模块图案一致。图案选择错误导致颜色错位伪彩,需与 sensor 实际输出下游模块配置严格匹配。
Usage Frequency:low
0

3.6.3 调试流程

推荐以下流程调试 RGB-IR 模块:

步骤 1:基于标定设置 ccMatrix。标定说明见《X5-Calibration Tool工具指南》。

步骤 2:观察图像区域是否偏紫。若是,调整 lThreshold 参数校正颜色。

步骤 3:检查图像是否坏点。若有,减小 dpccTh 和 dpccMidTh 进行校正。

图3.6-2 所示,调试 dpccTh 和 dpccMidTh 参数示例结果。

image

左图:dpccTh=4095, dpccMidTh=4095,右图:dpccTh=2500, dpccMidTh=2500

Figure 3.6-2 调试 RGB-IR dpccTh 和 dpccMidTh 的示例结果

3.6.4 调试建议功能说明

● ccMatrix 参数值通过标定获得,是关键参数。每个 sensor 需单独标定。

● lThreshold 与 irThreshold 功能一致,但建议区域用 irThreshold 抑制紫色(因衰减输出 IR 数据);其他情况建议用 lThreshold。

3.7 Lens Shading Correction

3.7.1 功能描述

Shading是由于镜头成像时光中心外围区域亮度均匀导致画面暗角现象。使用Lens shading模块可以校正图像这种问题。同时,也可以校正色彩均匀性(chroma shading),对于图像最终颜色还原非常重要。

Shading的表现模组特性相关,取决于制造商组装光学器件工艺红外滤光片性能。此外,不同光照影响chroma shading,有时候因为Ir cut滤光片无法做出准确波长截止导致问题。

下面提供模块调整概述:

  • 第一阶段:在实验室标准光源标定Lens shading,通过Calibration Tool来完成。

  • 第二阶段:无需调整,除非其他模块导致shading校正出现不良问题。

  • 第三阶段:无需调整,除非其他模块导致shading校正出现不良问题实际应用场景出现标定光源没有覆盖场景。

3.7.2 关键参数

Shading关键参数

LSC模块参数包含在VTunerClient中Lens Shading Correction中。

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
0:禁用模块;1:在 manual 模式使模块;2:在 auto 模式使模块。
Usage Frequency:high
0
xSize[32] Type: unsigned int
Range: [8, 1023]
x 方向网格尺寸,x[0] + … + x[31] = 图像宽度。
Usage Frequency:low
[60, 60, …, 60, 60]
ySize[32] Type: unsigned int
Range: [8, 1023]
y 方向网格尺寸,y[0] + … + y[31] = 图像高度。
Usage Frequency:low
[34, 34, 34, 33, …, 34, 34]
matrix[4][33*33] Type: unsigned int (U4.10)
Range: [1024, 16383]
四个通道镜头阴影校正矩阵。
Usage Frequency:low
[[1024, …, 1024], …, [1024, …, 1024]]
damping** Type: float
Range: [0, 1]
时域阻尼系数。值越收敛速度越慢。(auto)
Usage Frequency:medium
0.5
interMode** Type: unsigned int
Range: {0, 1, 2}
0:增益插值;1:色温插值;2:增益色温插值。(auto)
Usage Frequency:low
1
strength** Type: float
Range: [0, 1]
基于 ISO 等级校正强度。值越边缘校正强度越大。(auto)
Usage Frequency:low
1.0

Table 3.71 LSC调试参数

静态校正关键参数

LSC静态标定可以支持多组色温校正表,最少标定高、中、低3个色温的shading校正表。

Parameter name Description
Shading_ls_d75_[R/Gr/Gb/B] Shading_ls_d75_[ R/Gr/Gb/B] D75 Shading表
Shading_ls_d65_[R/Gr/Gb/B] Shading_ls_d65_[ R/Gr/Gb/B] D65 Shading表
Shading_ls_d50_[R/Gr/Gb/B] Shading_ls_d50_[ R/Gr/Gb/B] D50 Shading表
Shading_ls_tl84_[ R/Gr/Gb/B] Shading_ls_tl84_[ R/Gr/Gb/B] TL84 Shading表
Shading_ls_cwf_[R/Gr/Gb/B] Shading_ls_cwf_[ R/Gr/Gb/B] CWF Shading表
Shading_ls_a_[ R/Gr/Gb/B] Shading_ls_a_[ R/Gr/Gb/B] A Shading表
Shading_ls_h_[ R/Gr/Gb/B] Shading_ls_h_[ R/Gr/Gb/B] H Shading表

Table 3.72 Mesh-based lens shading Static calibration参数

注:[R / Gr /Gb/ B]表示Bayer域每个颜色单独标签/参数

Lens shading 生成最大增益值配置的,最大增益支持到16倍,对镜头补偿最大值使用calibration tool校准进行配置。

3.7.3 调试流程

由于Shading的标定依赖模组特性,在完成Table3.7-3中先决条件后,可进入调试流程。按照的《X5-Calibration Tool工具指南》文档对应章节说明进行参数标定。

Prerequisite Status / value
Black level Tuned
Gamma FE/BE Tuned(仅限Native HDR)

Table 3.73 Shading 标定先决条件

Shading校正在pipeline中属于前端模块,在第三阶段模块基本参数已经调整完毕,仅需要依据实际应用场景要求场景验证微调参数。

Shading强度调整时应根据主观分析可见噪声决定,为了得到每个增益正确强度值,需要调整环境亮度使gain达到不同梯度。

Shading主观场景调试方法

  1. 摄像头置于studio的环境中,边角最好灰色平面区域,确保当前增益为1x gain,当前应该所有亮度下shading表现最好一组,因此图像效果好,边角噪声小,因此当前gain梯度强度可以设置shading强度最大值。在高倍gain及环境亮度低时,需要判断边角噪声大小,根据以上介绍调试方法决定shading强度。

image

Figure 3.71 ISP Gain 0, 1000 lux场景

  1. 降低环境亮度,gain增加让shading 强度达到一个梯度,主观评估噪声决定当前状态强度值,同样设定到shading strength对应的gain档位里,重复以上操作所有gain 档位调试匹配的shading 强度值。

image

Figure 3.72 ISP Gain 3, 500 lux 场景。

例如光照为(500 lux)的场景,增益值大约为3x。此时,图像噪点开始增加,因此,对于增益为3的情况下,稍微降低shading强度可以接受的。

image

Figure 3.73 ISP max gain, 20 lux-max strength

image

Figure 3.74 Max gain – low strength

在20 lux的弱光条件下,此时往往达到最大增益。Figure 3.73显示最大shading校正强度图像效果,Figure 3.74是适当降低shading强度图像效果。从结果来看降低Shading强度可以降低图像噪声,同时角落亮度出现一定程度降低,但获得场景对象信息。调试时要根据实际需求,对边角亮度噪声表现折中,以获得适配需求画质表现。

3.7.4 调试建议功能说明

调试建议

在 Auto 模式下,通过修改strength来控制校正强度,strength是根据gain梯度匹配的,在不同的gain梯度下面,找到当前场景正确的shading strength设定值。

在gain较小时(场景亮度高)不需要降低强度,随着光亮降低和gain的增加,图像噪声起来,此时为了整体效果特别边角噪声,shading 强度可以降低。特殊情况下,为了图像表现可以强度设置为“0”(边角亮度低)。

此外,2DNR模块具有针对shading去功能,可以与shading强度结合。如果2DNR强度设定值造成图像模糊情况下,无法消除所有角落噪声,则需要降低shading的强度抑制噪声。

功能说明

LSC模块可以校正空间非对称真的shading,映射整张图片校正。LSC校正数据包含Bayer 4个通道正值。阴影校正算法目标校正实现整个画面亮度颜色均匀性。因此,每个输入像素PIN(x, y)都乘以校正因子F(x, y)。校正因子一个固定点数,整数部分为4位,小数部分为10位,有效范围为[1.0,15.999]。校正因子取决于像素画面坐标像素颜色。

根据以下公式计算校正像素值PCOR(x, y):

PCOR(x, y) = PIN(x, y) * F(x, y)

为了提高校正功能精确性,在 x 和 y 维度分割为32个区域。下图概述镜头阴影校正区域分布情况。

image

Figure 3.75 LSC区域划分

每个区域坐标可编程的(默认均匀分布)。此外,每个区域每个颜色分量镜头阴影校正参数可编程的(通过Calibration tool可以设定生成参数,一般保持默认均分mesh矩阵)。每个坐标适用每个颜色分量。

每个区内,校正函数F(x,y)可以表示四个边缘离散正值之间线性插值函数。这种插值硬件图像数据处理过程实时执行的。

3.8 DG(Digital Gain)

3.8.1 功能描述

数字增益模块对 raw 数据执行线性亮度补偿。

3.8.2 关键参数

表列出数字增益模块调试参数。这些参数手动模式设置,可由 AE 算法动态调整。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.8-1 数字增益参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1}
数字增益(Digital Gain)模块使能开关。 0:关闭数字增益; 1:使能数字增益。 使能模块对 raw 数据执行线性亮度补偿调整整体亮度;关闭模块参与成像链路。
Usage Frequency:low
1
red Type: float
Range: [1, 255]
R 通道数字增益系数,对 raw 数据中 R 通道执行线性亮度补偿。 值越大,R 通道亮度提升显著,整体画面暖;反之,值越小,R 通道亮度越低,画面冷。
Usage Frequency:high
1.0
green red Type: float
Range: [1, 255]
Gr 通道数字增益系数,对 raw 数据中 Gr 通道执行线性亮度补偿。 值越大,Gr 通道亮度提升显著,整体亮度越高;反之,值越小,Gr 通道亮度越低。
Usage Frequency:high
1.0
green blue Type: float
Range: [1, 255]
Gb 通道数字增益系数,对 raw 数据中 Gb 通道执行线性亮度补偿。 值越大,Gb 通道亮度提升显著,整体亮度越高;反之,值越小,Gb 通道亮度越低。
Usage Frequency:high
1.0
blue Type: float
Range: [1, 255]
B 通道数字增益系数,对 raw 数据中 B 通道执行线性亮度补偿。 值越大,B 通道亮度提升显著,整体画面冷;反之,值越小,B 通道亮度越低,画面暖。
Usage Frequency:high
1.0

3.8.3 调试建议功能说明

数字增益一般自动曝光算法计算获得,不建议手动调整。

3.9 WDR

3.9.1 功能描述

动态范围(WDR, Wide Dynamic Range)是一种结合全局局部灰度映射方法,用于将位从 20 位压缩到 12 位,并增强图像可见度,尤其暗图效果显著。它同时提升局部对比度全局对比度,主要用于动态范围图像,如逆光场景大块阴影区域风景。

WDR 模块工作流程如下所示。

image

Figure 3.9-1 WDR 工作流程图

WDR提供两种不同平滑强度(smoothing strength)配置模式:

全局模式:所有使用相同平滑强度,这有助于整个图像实现一致视觉效果。

局部模式:平滑强度可以根据之间亮度内容差异进行调整。这意味着图像不同区域可以应用不同处理强度,以更好处理局部光照变化。

通过上述方法,WDR模块能够有效调整图像局部全局对比度,特别背光场景阴影区域,能够提供更加清晰细腻图像细节。

3.9.2 关键参数

WDR 模块可调参数如下所示。参数描述标注 auto 模式(带 *)与 manual 模式可用性。

Table 3.9-1 WDR 参数说明

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
0:禁用模块;1:在 manual 模式使模块;2:在 auto 模式使模块。
Usage Frequency:high
0
WDR Strength 调试参数
strength Type: int
Range: [0, 128]
stitching 强度。不建议修改。 设为 0-128 之间启用 stitching。 值 0 表示输出 WDR 前乘以 HDR ratio; 固定为 128 时禁用 stitching 并输出 WDR 帧。
Usage Frequency:low
128
highStrength* Type: int
Range: [0, 128]
值越大高亮信息丰富、全局亮度越暗。
Usage Frequency:high
0
lowStrength* Type: int
Range: [0, 256]
值越低光信息丰富、全局亮度越亮。
Usage Frequency:high
256
Local跟global的比重设定
contrast* Type: int
Range: [-1023, 1023]
局部曲线全局曲线合并权重。 当contrast = 1023时,局部曲线权重为1,全局曲线权重为0,仅局部曲线生效; 当contrast = 0时,局部曲线权重为0,全局曲线权重为1,仅全局曲线生效; 当contrast在(0,1023)内时,局部曲线全局曲线各自比例进行合并。
Usage Frequency:high
0
entropyEnable Type: bool
Range: {true, false}
true:熵信息参与分类(熵信息参与的local权重调整); false:熵信息亮度信息参与的local权重调整。 此模块目的不同亮度区(或者不同信息区)Local比重
Usage Frequency:low
false
entropySlope* Type: int
Range: [0, 1023]
base 越大、slope 越小,局部对比度越强。
Usage Frequency:high
0
entropyBase* Type: int
Range: [0, 1023]
基值。
Usage Frequency:high
0
wdrLumaThr* Type: int
Range: [0, 1023]
暗区亮区阈值。entropyEnable 为 true 时无效。
Usage Frequency:high
64
Local平滑计算相关参数
flatMode Type: bool
Range: {true, false}
局部对比度增强强度调整模式。true:auto 模式(manual 部分 + 自动增量部分);false:manual 模式。
Usage Frequency:low
false
flatLevel* Type: int
Range: [0, 15]
局部对比度增强手动强度。值越手动强度越低。
Usage Frequency:medium
5
flatLevelInc[4][17] Type: int
Range: [0, 15]
局部对比度增强自动增量强度。值越自动增量强度越低。
Usage Frequency:low
[[3,2,1,0,...], [5,4,3,2,1,...], [7,6,5,4,3,2,1,...], [10,10,9,8,7,6,5,4,3,2,1,...]]
darkAttentionLevel Type: int
Range: [0, 14]
暗区关注等级。值越暗区关注少。
Usage Frequency:low
0
Global auto曲线设定
fixedWeight* Type: int
Range: [0, 1023]
全局曲线手动权重。
Usage Frequency:high
0
flatLevelGlobal* Type: int
Range: [0, 15]
auto 全局对比度增强强度。值越强度越低。
Usage Frequency:high
15
Global Manual曲线参数相关设定
wdrCurveSelect Type: int
Range: [0, 2]
手动全局曲线类型:0=内置曲线,1=对数曲线,2=S 曲线。
Usage Frequency:medium
0
logWeight* Type: int
Range: [0, 10]
(Curve 1) 手动全局曲线对数权重。
Usage Frequency:medium
0
logAnchorXLog* Type: float
Range: [0.0, 20.0]
(Curve 1) 对数曲线拐点 X 坐标(对数域)。线性映射区 ≤2^ logAnchorXLog,对数压缩区 > 2^ logAnchorXLog。
Usage Frequency:low
0
logAnchorSlope* Type: int
Range: [0, 4096]
(Curve 1) 对数曲线线性映射斜率。
Usage Frequency:low
16
ratioActual Type: float
Range: (0.0, 2.0]
(Curve 2) 短帧比。
Usage Frequency:low
2
curve2Thr Type: float
Range: [0.0, 1.0]
(Curve 2) S 曲线拐点 X 坐标。
Usage Frequency:low
1
curve2LoSat Type: float
Range: [0.0, 1.0]
(Curve 2) S 曲线拐点 Y 坐标。
Usage Frequency:low
0.7
curve2LoFactor Type: float
Range: (0.0, 2.2]
(Curve 2) S 曲线前半段弯曲方向程度:<1.0 凹,=1.0 直,>1.0 凸。
Usage Frequency:low
1
curve2HiFactor Type: float
Range: (0.0, 2.2]
(Curve 2) S 曲线后半段弯曲方向程度:<1.0 凹,=1.0 直,>1.0 凸。
Usage Frequency:low
1
WDR gain限定值设置
deGamma* Type: float
Range: (0.0, 3.0]
degamma 曲线因子。值越图像越暗。
Usage Frequency:low
1.0
maxGain* Type: float
Range: [0.0, 4096.0]
最大 WDR 增益。
Usage Frequency:high
16
minGain Type: float
Range: [0.0, 4096.0]
最小 WDR 增益。
Usage Frequency:high
1
WDR高对比度边缘抑制
diffHigh Type: float
Range: [0.0, 100.0]
检测对比边缘阈值,检测对比边缘变浅。值越检测对比边缘少。
Usage Frequency:medium
100
diffLow Type: float
Range: [0.0, 100.0]
检测对比边缘阈值,检测对比边缘变浅。值越检测对比边缘少。
Usage Frequency:medium
100
WDR暗区饱和度参数
satRange* Type: float
Range: [0.0, 1.0]
饱和度降低强度。
Usage Frequency:low
0
satThrGainDown* Type: int
Range: [0, 256]
确定需去饱和像素阈值。值越大去饱和像素少。
Usage Frequency:low
1
satThrGainUp* Type: int
Range: [0, 256]
确定需去饱和像素阈值。可用于降低暗色噪声异常色。
Usage Frequency:low
16
WDR预处理相关参数
wdrRgbCoef[3] Type: int
Range: [0, 128]
权重 [weight_r, weight_g, weight_b],须满足 weight_r + weight_g + weight_b = 128。
Usage Frequency:low
[38, 75, 15]
wdrLightnessWeight Type: int
Range: [0, 128]
最大 RGB 权重 max_rgb_weight。
Usage Frequency:low
128
wdrColorWeight[3]* Type: int
Range: [0, 128]
权重 [gray_weight, lightness_weight, raw_weight],须满足三者和 = 128。
Usage Frequency:low
[128, 0, 0]
WDR Halo Color Fading调试参数
lightEn* Type: bool
Range: {true, false}
true:使能 halo 色彩淡化功能;false:禁用。
Usage Frequency:low
false
lightSatLoThr* Type: int
Range: [0, 255]
低/高饱和度阈值。pixel_sat ≤ lightSatLoThr 为饱和需去饱和;lightSatLoThr < pixel_sat ≤ lightSatHiThr 为过渡区间;pixel_sat > lightSatHiThr 为饱和需去饱和。
Usage Frequency:low
64
lightSatHiThr* Type: int
Range: [0, 255]
饱和度阈值(见 lightSatLoThr)。
Usage Frequency:low
128
lightRedThrLog[4]* Type: float
Range: [0.0, 20.0]
红色阈值,单调递增(对数域)。
Usage Frequency:low
[0, 0, 0, 0]
lightGreenThrLog[4]* Type: float
Range: [0.0, 20.0]
绿色阈值,单调递增(对数域)。
Usage Frequency:low
[0, 0, 0, 0]
lightBlueThrLog[4]* Type: float
Range: [0.0, 20.0]
蓝色阈值,单调递增(对数域)。
Usage Frequency:low
[0, 0, 0, 0]
lightYellowThrLog[4]* Type: float
Range: [0.0, 20.0]
黄色阈值,单调递增(对数域)。
Usage Frequency:low
[0, 0, 0, 0]
lightCyanThrLog[4]* Type: float
Range: [0.0, 20.0]
青色阈值,单调递增(对数域)。
Usage Frequency:low
[0, 0, 0, 0]
WDR 高光补偿参数
hlcBaseLog Type: float
Range: [0.0, 19.0]
高光补偿阈值(对数域)。值越大,检出高光块少。
Usage Frequency:low
0.0
hlcSlope Type: int
Range: [0, 256]
高光补偿强度。值越大,高光补偿越强。
Usage Frequency:low
0
WDR Damping 参数
dampMode Type: int
Range: {0, 1}
0:manual 模式(可直接配置阻尼系数);1:auto 模式(阻尼系数根据场景变化检测结果适应计算)。
Usage Frequency:low
0
dampCurveCoef Type: int
Range: [0, 127]
局部曲线阻尼参数。(manual 模式有效)值越大,图像亮度收敛快。
Usage Frequency:low
127
dampCurveMax Type: int
Range: [0, 127]
曲线阻尼系数上限(auto 模式)。
Usage Frequency:low
127
dampCurveMin Type: int
Range: [0, 127]
曲线阻尼系数下限(auto 模式)。
Usage Frequency:low
0
dampAvgCoef Type: int
Range: [0, 127]
平均亮度阻尼系数(manual 模式)。
Usage Frequency:low
127
dampAvgMax Type: int
Range: [0, 127]
平均亮度阻尼系数上限(auto 模式)。
Usage Frequency:low
127
dampAvgMin Type: int
Range: [0, 127]
平均亮度阻尼系数下限(auto 模式)。
Usage Frequency:low
0
dampCoefDecLimit Type: int
Range: [0, 127]
阻尼系数单步减小限值(auto 模式)。
Usage Frequency:low
127
dampCoefIncLimit Type: int
Range: [0, 127]
阻尼系数单步增大限值(auto 模式)。
Usage Frequency:low
127
dampFilterSize Type: int
Range: [0, 16]
场景变化检测参考数(auto 模式)。
Usage Frequency:low
8

3.9.3 调试流程

建议分别调试 local 层与 global 层,再混合。开始将 WDR 参数默认值关闭附加功能。

Step 1 调试 Local 层

用 flatLevel 调整 local 层对比度、噪声阴影。此步需设 contrast=1023。

● flatLevel=0:平均亮度适中,直方图中心两侧单调递减,但曝区像素堆积多,灰阴影严重,通常不用。

● flatLevel=7:平均亮度适中,直方图单调递减,灰阴影减轻。

● flatLevel=15:平均亮度适中,直方图单调递减,死曝区灰阶留白,灰阴影进一步减少。

image

Figure 3.9-2 flatLevel 调试效果(0 / 7 / 15)

flatMode=0 时为 manual 模式,使用 flatLevel 值;flatMode=1 时为 auto 模式,使用 flatLevel 加 flatLevelInc 指定自动增量。flat 参数按块亮度区域纹理丰富两维自动计算,flatLevelInc 每行对应不同亮度(暗/中暗/中亮/亮),每列对应纹理丰富度,列索引越大纹理丰富。

Step 2 调试 Global 层

依次调试手动全局曲线、自动全局曲线,再混合。此步需设 contrast=0、entropyBase=0、entropySlope=0。

  1. 手动全局曲线:fixedWeight=1023,调 gamma 使平均亮度适中。常用对数曲线,可汇聚灰阶像素,对比度虽降信息基本可见,通过 logWeight 易于调整。需按 WDR 计算平均亮度调 gamma,平均亮度 [0,1023] 越大,logWeight 越小。

image

Figure 3.9-3 logWeight 调试效果(4 / 8)

  1. 自动全局曲线:fixedWeight=0。全局直方图曲线使像素均匀分布、对比度合适,自然亮度适中,flatLevelGlobal 可固定在 15 以内。

image

Figure 3.9-4 flatLevelGlobal 调试效果(0 / 7 / 15)

  1. 混合:fixedWeight 设 0~1023。自动全局曲线扩大光晕,增益越大 fixedWeight 越大。

image

Figure 3.9-5 全局混合效果(0-auto / 1023-manual /512- mixed)

Step 3 混合 Local 曲线与 Global 曲线

用 contrast、entropyBase、entropySlope 混合 local 层与 global 层。

● 设 contrast 指定每块全局 local 层权重,范围 0~1023(如 512)。

● 按 brightness tradeoff 设 entropyBase 与 entropySlope,按亮度指定 local 层权重。亮度越高 local 权重越低:

▪ 室外:降低 local 权重可减轻天空阴影。

▪ 室内:降低 local 权重可减轻白墙阴影。

▪ 夜间:降低 local 权重可减轻灯光晕。

Local 层、Global 层、混合图像不同参数对比效果如下。

image

Figure 3.9-6 Local 层 / Global 层 / 混合图像

image

Figure 3.9-7 不同参数混合对比(contrast=512 / contrast=256, entropyBase=256, entropySlope=1023)

Step 4 限制 WDR 增益

设 maxGain 与 minGain 限制 WDR 增益。暗区增益较大,但夜间暗区增益放大噪声,用 maxGain 限制最大增益,minGain 限制最小增益,maxGain 更常用。

image

Figure 3.9-8 maxGain 调试效果(4096 / 16 / 8)

Example Results

WDR 模块效果示例如下图(state=0 与 state≠0)。

image

Figure 3.9-9 WDR 效果示例(state=0 / state≠0)

3.9.4 调试建议功能说明

Preprocessing – 预处理

图像处理中,特别动态范围(WDR)技术应用中,原始图像数据预处理至关重要步骤,预处理流程图如下。

image

Figure 3.910 WDR预处理

以下输入原始图像进行预处理两个关键步骤详细描述:

  1. Luma值计算。预处理第一步计算亮度(luma)值。这涉及以下步骤:

  1) 使用3x3的像素窗口,首先计算红色(R)、绿色(G)、蓝色(B)值加权平均值。
  2) 计算R/G/B值最大值最小值加权。
  3) 将上述两个计算结果输入原始数据结合,得到最终的luma值。

  1. Pre-Gamma映射。对luma值应用pre-gamma映射和low_strength模块进行进一步处理。Pre-Gamma LUT这是一个包含65个bin的查找表,用于扩展灰度值,使更加分散,从而增强图像动态范围。Low_Strength这是一个配置参数,用于控制图像暗区亮度。参数值越大,暗区亮度信息丰富,使得全局亮度提高。

完成上述预处理步骤后,将对luma值进行全局局部统计。

全局统计:计算整幅图像平均值方差,以获取图像整体亮度对比度信息。

局部统计:将图像划分为MxN像素块,并每个单独计算局部曲线。这包括计算每个平均值直方图,后者通过将20位灰度分成64个区间使用直方图LUT进行配置实现的。

这些预处理步骤为WDR算法提供必要数据,以优化图像局部全局对比度,特别动态范围场景中,如背光阴影区域。

Entropy

函数控制方式如下:

● 熵信息参与 local 权重调整:entropyEnable=0。

▪ 块亮度信息参与:entropyBase=0、entropySlope=0。

▪ 块亮度信息参与:entropyBase=a1、entropySlope=1023、wdrLumaThr=a2。块均值亮度 < wdrLumaThr 时,每块最终 local 权重为 contrast 加逐渐递减的 entropyBase;块均值亮度 > wdrLumaThr 时,最终 local 权重由 contrast设定。

image

Figure 3.9-11 WDR Luma 阈值

● 熵信息亮度信息参与 local 权重调整:entropyEnable=1。entropyBase 越大,熵丰富的 local 权重越大;entropySlope 越大,大 local 权重暗区亮区下降快。

Manual Global Curve Types

手动全局曲线支持以下类型,通过 wdrCurveSelect 选择。

● 内置曲线(wdrCurveSelect=0)。

● 对数曲线(wdrCurveSelect=1):通过 logWeight、logAnchorXLog、logAnchorSlope 调整。对数曲线像素汇聚灰阶,对比度降低信息可见。不同对数曲线形状如下图。

image

Figure 3.9-12 对数曲线形状

● S 曲线(wdrCurveSelect=2):通过 ratioActual、curve2Thr、curve2LoSat、curve2LoFactor、curve2HiFactor 调整。若 pipeline 开启 HDR,ratioActual 应 ≥1 以使用 HDR 的 ratio;若关闭 HDR,ratioActual 可 <1(native HDR 模式实际 ratio,或仅用于调整 S 曲线拐点 x)。S 曲线拐点 x = 2^20 × curve2Thr × ratioActual,拐点 y = 2^20 × curve2LoSat,前后半段弯曲由 curve2LoFactor、curve2HiFactor 调整。不同 S 曲线形状如下图。

image

Figure 3.9-13 S 曲线形状

Defringe

Defringe 针对高对比度边缘。其工作逻辑如下所示。

image

Figure 3.9-14 Defringe 逻辑框图

Defringe 效果如下(左:diffHigh=100、diffLow=100;右:diffHigh=75、diffLow=50)。

image

Figure 3.9-15 Defringe 效果

Saturation Adjustment

饱和度调整降低提亮暗区导致过饱和。其工作逻辑如下所示。

image

Figure 3.9-16 饱和度调整逻辑框图

饱和度调整效果如下(左:satRange=0.0;右:satRange=0.5)。

image

Figure 3.9-17 饱和度调整效果

Halo Color Fading

Halo color fading 功能应用于 HSV 颜色空间,主要通过调整饱和度阈值六种纯色(红、绿、蓝、黄、青、品红)的参数调整单个像素饱和度。六种纯色整个色彩空间划分六个区间,若像素落入区间,仅相邻两个色相参数调整。如下图点 a,仅 R 与 Y 参数生效。

image

Figure 3.9-18 Halo Color Fading 逻辑框图

像素饱和度达到调整阈值时,也考虑相邻纯色参数。单个色相分为以下 5 段(color_thr 指 lightRedThrLog/lightGreenThrLog/lightBlueThrLog/lightYellowThrLog/lightCyanThrLog/lightMagentaThrLog 之一):

● pixel_value ≤ color_thr[0]:去饱和比例零,保护饱和像素。

● color_thr[0] < pixel_value ≤ color_thr[1]:像素值越大去饱和比例越大,用于过渡消除紫边。

● color_thr[1] < pixel_value ≤ color_thr[2]:去饱和比例为 1。

● color_thr[2] < pixel_value ≤ color_thr[3]:像素值越大去饱和比例越小,增强光晕颜色衰减形成吸光效果。

● pixel_value > color_thr[3]:去饱和比例零,保护光源中心颜色。

保持颜色单调性,通常将 color_thr[0] 与 color_thr[1] 设为 0;若需用功能消除紫边,需将 color_thr[2] 与 color_thr[3] 设最大值 20。最终饱和量 w 由 Figure 3.9-19 中 w1×w2 计算。Halo color fading 效果如下图。

image

Figure 3.9-19 Halo Color Fading 效果

Highlight Compensation

高光补偿功能基于局部对比度计算当前高光区域可能性,可能性越高光线衰减越大。其工作逻辑如下所示。

image

Figure 3.9-20 高光补偿逻辑框图

高光补偿效果如下(上:hlcBaseLog=0、hlcSlope=0 vs hlcSlope=2;下:hlcSlope=0 vs hlcSlope=4)。

image

Figure 3.9-21 高光补偿效果(hlcSlope=0 / 2)

image

Figure 3.9-22 高光补偿效果(hlcSlope=0 / 4)

Damping

Damping 功能解决场景变化时 WDR 产生闪烁。闪烁根因场景变化采集应用差异,采集生成曲线不适用于应用导致逐帧变化。分 manual 与 auto 两种模式:

● dampMode=0 为 manual 模式(常用),dampCurveCoef 与 dampAvgCoef 作为阻尼强度。

● dampMode=1 为 auto 模式,dampCurveCoef 与 dampAvgCoef 的自动计算逻辑如下图。

image

Figure 3.9-23 dampCurveCoef/dampAvgCoef 自动计算逻辑框图

dampLoThrLog 与 dampHiThrLog 为亮度变化检测阈值:达上阈值阻尼最强、低于阈值弱。dampFilterSize 设场景变化检测参考数;dampCoefDecLimit/dampCoefIncLimit 限制 dampCurveCoef/dampAvgCoef 单步变化(如为 a、当前为 b,则 b 限制在 [a-dampCoefDecLimit, a+dampCoefIncLimit]);dampCurveMax/Min 限制 dampCurveCoef 上下限,dampAvgMax/Min 限制 dampAvgCoef 上下限。

3.10 GE (Green Equalization)

3.10.1 功能描述

由于半导体工艺两行寄存器特性细微差异,生成图像中 Gr 和 Gb 像素强度均匀(每行像素小)。绿平衡(GE)的主要目的就是减小这一现象。

image

Figure 3.10-1 Gr/Gb 不均匀导致栅格

3.10.2 关键参数

表列出了 GE 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.10-1 GE 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1}
GE 模块使能开关。 0:关闭GE 模块; 1:使能GE 模块。 使能后,GE 模块对 Gr/Gb 像素执行绿平衡校正减小栅格伪影;关闭校正。
Usage Frequency:medium
1
threshold Type: float
Range: [0, 511]
GE 模块像素执行判定阈值。 用于控制绿平衡(Gr/Gb 均衡)处理像素覆盖范围;值越大,被执行 GE 处理像素多(存在上限),反之少,取值栅格难以消除。推荐取值范围 0.1 ~ 10。
Usage Frequency:medium
0.3

3.10.3 调试流程

推荐以下流程调试 GE 模块:

步骤 1:若输出出现栅格伪影,则启用 GE 模块。

步骤 2:将 threshold 设为 0.3。

步骤 3:若栅格仍然存在,将 threshold 调大,直到无伪影。

下图展示 GE 模块示例结果。本例中,GE 禁用栅格伪影明显影响画质;threshold 设0.3时栅格减弱;threshold 改为 1.2 时栅格几乎消除。

image

Figure 3.10-2 GE 效果示例(GE 禁用 / threshold=0.3 / threshold=1.2)

3.10.4 调试建议功能说明

● threshold 推荐取值范围为 0.1 ~ 10。取值增大一定程度后(具体数值相机模组相关)再提高取值,GE效果不会增强。

● 对每个像素而言,调整 threshold 仅影响像素是否执行 GE,不影响像素变化强度。

3.11 DPCC(Defect Pixel Cluster Correction)

3.11.1 功能描述

ISP调试遇到图像传感器像素数量模组成本有所不同。高端传感器追求高像素数量足够像素面积,而低成本模组存在缺陷。此外,对于低成本传感器,制造过程无法确定坏点位置。另一个问题是:热像素积分时间变得可见,密度最高达 5%,对 1200 万像素传感器而言意味着约 60 万个坏点。为解决问题,开发一种改进实时处理算法,称为坏点校正(DPCC)。

当前版本 DPCC 根据图像内容支持以下簇状缺陷尺寸:

● 单行单列多 4 个相邻像素。

● 红、绿、蓝像素簇中多 6 个像素。

● 单色(红、绿蓝)最多 2 个相邻像素。

超过 6 个像素缺陷、缺陷行、缺陷列,或 3×3 阵列中含 3 个同色像素缺陷支持。这意味着这些处理图像残留伪影。

3.11.2 关键参数

表列出了 DPCC 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.11-1 DPCC 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
DPCC 模块工作模式开关。 0:关闭模块; 1:手动模式使能,只使用一套检测阈值; 2:自动模式使能,由 ISP 内部适应判定坏点。
Usage Frequency:low
2
bptEnable Type: bool
Range: {true, false}
静态坏点校正(Static Bad Point Correction)使能开关。 0:关闭,不处理静态坏点,残留坏点动态检测环节处理; 1:使能,依据 bptPosX/bptPosY 坐标表对预设坏点进行插值校正。
Usage Frequency:low
false
bptNum Type: int
Range: [0, 1024]
静态坏点表中坏点数量。 值越大,可标记静态坏点多,坏点覆盖率越高;反之,可标记坏点少,覆盖率越低。 过大则存储资源占用增多、查表耗时上升;过小则部分静态坏点无法列入表中,残留可见。需传感器实际坏点一致。
Usage Frequency:low
0
bptOutMode Type: int
Range: [0, 15]
静态坏点校正输出模式,按位解析。 Bit1:中滤波计算正值是否包含 G 通道中心点; Bit2:是否包含 RB 通道中心点; Bit3:G 通道滤波是否使用 5×5 范围所有通道点; Bit4:RB 通道滤波是否使用 5×5 范围所有通道点。 各位为 1 表示使能,为 0 表示关闭。置位多,参与滤波样本越广,校正平滑细节损失越大;反之样本少,保留细节坏点残留风险上升。
Usage Frequency:low
0
bptPosX[2048] Type: int
Range: [0, 图宽]
静态坏点的 X 坐标,与 bptPosY 配对索引坏点表。 值越表示坏点位于图像水平方向靠右位置;反之靠左。需传感器实际坏点坐标一一对应,坐标错位导致坏点校正偏移正常像素。
Usage Frequency:low
[0]
bptPosY[2048] Type: int
Range: [0, 图高]
静态坏点的 Y 坐标,与 bptPosX 配对索引坏点表。 值越表示坏点位于图像垂直方向越靠位置;反之越靠上。需传感器实际坏点坐标一一对应,坐标错位导致坏点校正偏移正常像素。
Usage Frequency:low
[0]
outMode* Type: int
Range: [0, 15]
校正单元插值模式,按位解析。 Bit1:中滤波计算正值是否包含 G 通道中心点; Bit2:是否包含 RB 通道中心点; Bit3:G 通道滤波是否使用 5×5 范围所有通道点; Bit4:RB 通道滤波是否使用 5×5 范围所有通道点。 各位为 1 表示使能,为 0 表示关闭。置位多,参与滤波样本越广,校正平滑细节损失越大;反之样本少,保留细节坏点残留风险上升。
Usage Frequency:low
3
setUse* Type: int
Range: [0, 15]
DPCC 检测方法使用选择,按位解析。 Bit1:是否使能 stg1 整套参数; Bit2:是否使能 stg2 整套参数; Bit3:是否使能 stg3 整套参数; Bit4:是否使能两套内置坏点检测参数。 各位为 1 表示使能,为 0 表示关闭。使能方法集越多,检测覆盖充分计算开销越大;反之开销漏检风险上升。
Usage Frequency:low
3
methodsSet[3]* Type: int
Range: [0, 8191]
methodsSet[3] 为长度 3 的数组,分别对应 stg1/stg2/stg3 三套检测方法集;每个数组元素为 13 位使能位图,按位解析。不同方法并行使用,最终结果方法逻辑与。 Bit1-5表示G通道5种坏点检测方法使能位: Bit1:PG(peak gradient)方法;; Bit2:LC(line check)方法;; Bit3:RO(rank order)方法;; Bit4:RND(rank neighbor difference)方法;; Bit5:RG(ank gradient)方法; Bit9-13表示RB通道5种坏点检测方法使能位: Bit9:PG(peak gradient)方法;; Bit10:LC(ine check)方法;; Bit11:RO(rank order)方法;; Bit12:RND(rank neighbor difference)方法;; Bit13:RG(rank gradient)方法 各位为 1 表示使能,为 0 表示关闭。使能方法多,坏点检出率越高但误检率随之上升;反之误检率降低漏检增多。
Usage Frequency:low
[7967,1799,7967]
lineThresh[2][3]* Type: int
Range: [0, 255]
检测阈值,RB 通道与 G 通道三组。 值越大,坏点判定严格,检出坏点但误检越低;反之判定宽松,检出但误检越高。 过大则真实坏点漏检,残留可见坏点;过小则正常像素误判坏点,图像出现校正斑点。
Usage Frequency:low
[[8,16,32],[8,16,32]]
lineMadFac[2][3]* Type: int
Range: [0, 63]
LC 方法平均绝对差(MAD)因子。 值越大,对局部异常敏感度越高,坏点检出激进;反之敏感度越低,检出保守。 过大易高频细节误判坏点,造成纹理模糊,过小则变型坏点响应不足,漏检增加。
Usage Frequency:low
[[4,24,4],[4,16,4]]
pgFac[2][3]* Type: int
Range: [0, 63]
PG 方法检测因子。 值越大,坏点判定门限宽松,检出误检上升;反之门限严格,检出漏检增加。 过大导致细节纹理被误校正,边缘伪影增多;过小则坏点漏检,残留可见。
Usage Frequency:low
[[8,8,10],[8,6,10]]
rndThresh[2][3]* Type: int
Range: [0, 63]
RND 方法检测阈值。 值越大,判定严格,检出坏点但误检越低;反之判定宽松,检出但误检越高。 过大则真实坏点漏检,残留可见;过小则正常像素误判坏点,图像出现校正斑点。
Usage Frequency:low
[[10,8,8],[10,8,6]]
rgFac[2][3]* Type: int
Range: [0, 63]
RG 方法检测因子。 值越大,坏点响应敏感,检出激进;反之保守。 过大易误判高频细节坏点,造成纹理损失;过小则差异显著坏点漏检,残留可见。
Usage Frequency:low
[[32,8,4],[32,8,4]]
roLimits[2][3]* Type: int
Range: [0, 3]
RO 方法检测限值。 值越大,允许偏离范围宽,检出但误检越低;反之范围越窄,检出但误检越高。 过大则坏点漏检,残留可见;过小则正常像素误判坏点,出现校正斑点。
Usage Frequency:low
[[2,3,2],[2,3,2]]
rndOffs[2][3]* Type: int
Range: [0, 3]
RND 方法差分偏移。 值越大,差分基准越高,对噪声坏点容忍度越大,检出保守;反之基准越低,检出激进。 过大则噪声坏点漏检;过小则随机噪声过度响应,误检增多。
Usage Frequency:low
[[3,3,3],[3,3,3]]

3.11.3 调试流程

图3.11-1 所示,DPCC 模块示例结果。

image

左图:state=0,右图:state≠0

Figure 3.11-1 DPCC 示例结果

基于坏点数量类型,已预定若干参数集。可使用这些进行调试。但建议单个参数进行调试使用参数集,关键参数表格详细说明每个参数调试方向坏点影响。

Table 3.11-2 DPCC 可参数

情况 像素 小簇 大簇
少量缺陷 参数集 1 参数集 2 参数集 3
大量缺陷 参数集 4 参数集 5 参数集 6

Table 3.11-3 DPCC 参数

参数 集1 集2 集3 集4 集5 集6
outMode 3 3 3 3 3 3
setUse 3 3 7 3 15 15
methodsSet[3] [7967,1799,7967] [7967,1799,7967] [7453,1799,7967] [7453,1799,7967] [7453,1799,7967] [7453,1799,7967]
lineThresh[2][3] [[8,32,32],[8,24,32]] [[8,16,32],[8,16,32]] [[8,16,32],[8,12,32]] [[8,16,32],[8,12,32]] [[8,16,8],[8,12,8]] [[8,16,0],[8,12,0]]
lineMadFac[2][3] [[4,24,4],[4,16,4]] [[4,24,4],[4,16,4]] [[4,24,4],[4,16,4]] [[4,24,4],[4,16,4]] [[4,8,4],[4,8,4]] [[4,4,4],[4,4,4]]
pgFac[2][3] [[8,8,10],[8,6,10]] [[8,8,10],[8,6,10]] [[8,8,10],[8,6,10]] [[8,8,10],[8,6,10]] [[6,6,6],[6,6,6]] [[4,4,4],[4,4,4]]
rndThresh[2][3] [[10,8,8],[10,8,6]] [[10,8,8],[10,8,6]] [[10,8,8],[10,8,6]] [[10,8,8],[10,8,6]] [[8,8,8],[8,8,6]] [[8,8,8],[4,8,4]]
rgFac[2][3] [[32,8,4],[32,8,4]] [[32,8,4],[32,8,4]] [[32,8,4],[32,8,4]] [[32,8,4],[32,8,4]] [[16,8,4],[16,8,4]] [[8,8,4],[2,8,0]]
roLimits[2][3] [[2,3,2],[2,3,2]] [[2,3,2],[2,3,2]] [[2,3,2],[2,3,2]] [[2,3,2],[2,3,2]] [[2,3,2],[2,3,2]] [[2,3,2],[2,3,2]]
rndOffs[2][3] [[3,3,3],[3,3,3]] [[3,3,3],[3,3,3]] [[3,3,3],[3,3,3]] [[3,3,3],[3,3,3]] [[3,3,3],[3,3,3]] [[3,3,3],[3,3,3]]

3.12 Bayer NR(3DNR&2DNR)

3.12.1 功能描述

Bayer 降噪数字图像处理中起重要作用。它使原始数据非常接近传感器输出,通常保持良好噪声特性。

3.12.1.1 3DNR

3DNR 是一个根据各种标定噪声模型进行降噪模块。经频率分解后,3DNR 模块三个频带分别降噪。然后借助运动检测,对静态区域施加时域降噪(TNR)。下图所示为 3DNR 的框图,图中 L0 表示细节层,L12 表示细节层。

image

Figure 3.12-1 3DNR 框图

3.12.1.2 2DNR

借助运动检测,2DNR 模块运动区域施加空域降噪(SNR),并平滑融合空域滤波输出时域输出。最后,它合成三个频率分别进行细节增强。下图所示为 2DNR 的框图,图中 L0 表示细节层,L1 表示中间层,L2 表示细节层。

image

Figure 3.12-2 2DNR 框图

3.12.2 关键参数

介绍 Bayer 降噪配置关键参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

3.12.2.1 3DNR 参数

表列出了 3DNR 模块调试参数。

Table 3.12-1 3DNR 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
3DNR 模块工作模式开关。 0:关闭模块; 1:手动模式使能,参数用户配置; 2:自动模式使能,由 ISP 内部算法适应。
Usage Frequency:medium
2
isMotionDilate motionDilateEn** Type: bool
Range: {true, false}
运动检测膨胀使能开关,扩大运动掩码覆盖区域抑制运动边缘拖尾。 true:使能膨胀; false:关闭膨胀。
Usage Frequency:low
true
isGaussBlur Type: bool
Range: {true, false}
运动检测高斯模糊预处理使能开关,抑制微小噪声运动检测干扰。 true:使能预处理; false:关闭预处理。
Usage Frequency:low
true
isGammaFeBe Type: bool
Range: {true, false}
噪声模型 gamma 曲线前后处理使能开关。 true:使能,噪声模型按 gamma 曲线映射; false:关闭,噪声估计偏离实际分布。
Usage Frequency:low
true
inputBits Type: int
Range: {20, 24}
噪声模型曲线输入位深,决定噪声估计量化精度。值越大位深越高,噪声量化精细;反之粗糙。过大则计算开销增加;过小易量化失真。 默认20不能修改。
Usage Frequency:low
20
fixCurveStart* Type: int
Range: [0, 4095]
暗部噪声曲线线性保护起点。 值越保护区宽,暗部细节保留降噪偏弱;反之保护区窄,暗部降噪偏强细节损失。 过大暗部残留噪声;过小暗部过降噪。
Usage Frequency:low
256
noiseModelA* Type: double
Range: [0.1, 100]
噪声模型曲线斜率,反映增益噪声线性关系。 值越噪声估计增益上升快,降噪越强;反之上升越慢,降噪不足残留噪声。 由标定获得,不建议手动修改。
Usage Frequency:medium
0.3
noiseModelB* Type: double
Range: [0.1, 100]
噪声模型曲线偏移,反映增益本底噪声。 值越本底噪声估计越高,降噪越强;反之本底估计偏低,暗部易残留噪声。 由标定获得,不建议手动修改。
Usage Frequency:medium
1.5
blsExp[4]* Type: int
Range: [0, 1048575]
噪声模型展开图像电平减除(BLS)值,校正噪声估计基准。 值越减除多,噪声基准越低;反之减除不足,噪声估计偏高易降噪。
Usage Frequency:low
[0, 0, 0, 0]
vstFactor* Type: double
Range: [1.0, 1000.0]
分解滤波器 sigma 控制因子,影响尺度分解频带切分。 值越大 sigma 越大,频带划分边界高频移动,更区域划分纹理区,降噪增强但易损失细节;值越小 sigma 越小,频带划分边界低频移动,更区域划分纹理区,降噪减弱。
Usage Frequency:medium
16
tnrStrength* Type: int
Range: [0, 128]
TNR 细节输出强度,控制细节降噪结果原图混合比例。 值越降噪结果比越高,细节降噪越强;反之原图比越高,降噪越弱。设 0 输出原图,设 128 则输出 TNR处理结果。
Usage Frequency:high
128
tnrStrength2* Type: int
Range: [0, 128]
TNR 粗层输出强度,控制低频粗层降噪结果原图混合比例。 值越粗层降噪越强;反之越弱。设 0 则输出原图,设 128 则输出TNR处理结果。
Usage Frequency:high
128
filterLen* Type: int
Range: [1, 99]
TNR IIR 滤波窗口大小,决定时域滤波历史累积长度。 值越窗口越长,时域降噪越强运动拖尾越明显;反之窗口越短,拖尾降噪减弱。
Usage Frequency:high
6
filterLen2* Type: int
Range: [1, 99]
运动 IIR 滤波窗口大小,用于运动历史掩码生成。 值越运动历史累积越长,运动检测稳定响应越慢;反之响应但易噪声干扰检测稳定。
Usage Frequency:high
6
motionSmoothFactor* Type: double
Range: [0.1, 5.0]
运动检测输入图像高斯平滑 sigma,抑制输入噪声运动检测干扰。 值越平滑越强,抗噪越运动边缘模糊;反之平滑越弱,运动细节保留噪声误判运动。低 ISO 设小值,高 ISO 设大值。
Usage Frequency:medium
0.5
motionSmoothLevel motionSmoothLvl** Type: int
Range: {0, 1}
运动掩码后处理平滑等级。 0:强平滑(含采样、中滤波、上采样),运动掩码连贯边缘偏软; 1:弱平滑(仅滤波),边缘锐利掩码可能连续。
Usage Frequency:low
1
rangeH* Type: int
Range: {3, 6}
运动检测窗口宽度,决定像素参与运动判定邻域范围。 值越窗口宽,运动检测越鲁棒计算大;反之窗口越窄,计算但易局部噪声干扰。
Usage Frequency:low
3
dilateH* Type: int
Range: {3, 6}
水平方向运动掩码膨胀尺寸,扩大水平运动区域覆盖。 值越膨胀越大,运动区域完整但易覆盖静态区;反之膨胀越小,覆盖不足边缘残留拖尾。
Usage Frequency:low
3
sadWeight* Type: int
Range: [0, 16]
绝对和(SAD)的权重,与均值差(mean_diff)合并最终运动差值 diff=[sadWeight×sad+(16−sadWeight)×mean_diff]/16。 值越大 SAD 权重越大,运动检测绝对差越敏感;反之 mean_diff 权重越大,对均值差越敏感。
Usage Frequency:high
12
diffType Type: int
Range: {0, 1}
运动检测差值类型选择,决定参与运动判定差值计算方式。0/1 对应不同差值算法,影响检测灵敏度抗噪性。建议使用模式1。
Usage Frequency:low
1
sqrDiffFactor* Type: int
Range: [0, 10]
运动差值移位位数,调整运动差值量化动态范围,只在diffType = 1时生效; 值越移位多,差值动态范围越大精度下降;反之移位少,精度越高动态范围受限饱和。
Usage Frequency:high
2
noiseLevel Type: int
Range: [0, 65535]
运动分类静态阈值,像素运动差值小于此值静态。 值越静态判定宽松,更像素归为静态,时域降噪越强运动漏检;反之严格,运动检测灵敏静态区易误判运动。
Usage Frequency:low
100
thrMotionSlope Type: int
Range: [0, 4095]
运动分类运动斜率阈值,像素运动差值大于此值加 noiseLevel 判为 100% 运动。 值越运动判定严格,时域降噪越强运动区易残留拖尾;反之宽松,运动检测灵敏静态时域降噪减弱。
Usage Frequency:low
32
tnrLumaCurveX[12] Type: int
Range: [0, 65535]
TNR 运动分类器像素亮度曲线 X 轴节点,定义亮度分段采样位置。 节点值越对应亮度位置越高,分段越靠亮部;反之越靠暗部。节点分布过疏亮度分段粗糙,过密冗余。
Usage Frequency:medium
[0, 32, 64, 96, 128, 256, 512, 768, 1024, 1536, 2048, 4095]
tnrLumaCurveY[12]* Type: int
Range: [0, 65535]
TNR 运动分类器噪声等级曲线 Y 轴节点,定义亮度噪声等级。 值越噪声等级越高,对应亮度降噪越强,易过降噪损失细节;反之越弱,易噪声残留。
Usage Frequency:high
[4, 48, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]
tnrMotionSlopeY[12]* Type: int
Range: [0, 65535]
TNR 运动分类器运动斜率曲线 Y 轴节点,定义亮度运动判定斜率。 值越运动判定宽松,时域降噪越强运动漏检;反之严格,运动检测灵敏静态降噪减弱。
Usage Frequency:high
[4, 48, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]
nmK** Type: float
Range: [0, 100]
噪声模型斜率因子 nmK,当 nmKnmP>0.0000001 noiseModelA=nmKgain。值越噪声模型斜率增益上升快,降噪越强;反之上升越慢,降噪不足残留噪声。
Usage Frequency:low
0
nmP** Type: float
Range: [0, 100]
噪声模型偏移因子 nmP,当 nmK*nmP>0.0000001 时 noiseModelB=nmP*gain*gain。值越噪声模型偏移增益平方上升快,本底降噪越强;反之上升越慢,本底降噪不足。
Usage Frequency:low
0

3.12.2.2 2DNR 参数

表列出了 2DNR 模块调试参数。

Table 3.12-2 2DNR 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
2DNR 模块工作模式开关。 0:关闭模块; 1:手动模式使能,参数用户配置; 2:自动模式使能,由 ISP 内部算法适应。
Usage Frequency:low
2
isMotionCtrl Type: bool
Range: {true, false}
运动适应 2DNR 开关,基于像素运动量经 motionFactorCurve 动态调整局部 SNR sigma。 true:使能运动适应; false:关闭,模块退静态降噪。
Usage Frequency:medium
true
isLumaCtrl Type: bool
Range: {true, false}
亮度适应 2DNR 开关,基于 lumaCurveY 按像素亮度调整局部 SNR sigma。 true:使能亮度适应; false:关闭,亮度降噪强度影响。
Usage Frequency:medium
true
isLscGainComp Type: bool
Range: {true, false}
镜头阴影补偿(LSC)增益补偿开关,按 LSC 增益经 lscCompCurve 调整局部 SNR sigma 以补偿阴影引起降噪强度不均。 true:使能增益补偿; false:关闭。
Usage Frequency:medium
false
vstFactor Type: float
Range: [1.0, 1000.0]
分解滤波器 sigma 控制因子,影响尺度分解频带切分。 值越大 sigma 越大,频带划分边界高频移动,更区域划分纹理区,降噪增强但易损失细节;值越小 sigma 越小,频带划分边界低频移动,更区域划分纹理区,降噪减弱。
Usage Frequency:high
16
sigmaOffset* Type: int
Range: [0, 4095]
NLM 局部匹配阈值,控制 2D 滤波滤波逼近程度。 值越大 2D 滤波接近极强滤波,平坦区越平滑;反之接近原 NLM 估计。 过大易过度平滑细节糊化;过小块匹配判别偏弱、降噪不足。
Usage Frequency:low
0
sigmaScale[3]* Type: float
Range: [0.001, 100.0]
频率层 sigma 缩放因子,对每层施加不同 NLM 强度(层 0 细节层、层 1 中间层、层 2 大细节层、基底层粗层)。 值越对应平滑越强;反之越弱。 过大易糊化对应细节;过对应噪声残留。
Usage Frequency:high
[1.0, 1.0, 1.0]
staticFactor[3]* Type: float
Range: [0.01, 1.0]
各层完全静态区域的 sigma 比例,以 moving_sigma 的倍数施加静态像素保留背景细节(设 0.1 表示完全静态像素施加 0.1×moving_sigma)。 值越静态降噪越强;反之越弱。 过大易糊化静态背景纹理;过静态背景噪声残留。
Usage Frequency:low
[0.1, 0.1, 0.1]
sigmaFactorMul[3]* Type: float
Range: [0.1, 10.0]
调整各层 SNR sigma 由运动区到静态递减速度因子。 值越先前运动区域降噪越强;反之越弱。过大运动可能过度平滑;过运动静态过渡充分。
Usage Frequency:low
[1.0, 1.0, 1.0]
sigmaFactorMotionMin Type: int
Range: [0, 1024]
运动量下限阈值,运动小于此值像素施加 0% 2DNR(视为完全静态)。值越视为静态像素多;反之少。过大运动降噪覆盖不足;过小弱运动像素施加降噪。
Usage Frequency:low
0
sigmaFactorMotionMax* Type: int
Range: [1, 1024]
运动量上限阈值,运动大于此值像素施加 100% 2DNR。值越大 100% 降噪覆盖运动范围宽;反之越窄。过大弱运动强度降噪易糊;过小强运动降噪不足。
Usage Frequency:low
800
lumaCurveX[12] Type: int
Range: [0, 4095]
SNR 亮度控制曲线的 X 锚点,据此曲线局部 SNR sigma 按像素亮度调整。锚点值越大对应亮度区间跨度宽;反之越窄。分布过疏亮度分辨率不足;过密曲线调节冗余。
Usage Frequency:medium
[0, 32, 64, 96, 128, 256, 512, 768, 1024, 1536, 2048, 4095]
lumaCurveY[12]* Type: int
Range: [0, 65535]
SNR 亮度控制曲线的 Y 值,与 lumaCurveX 配合像素亮度缩放局部 SNR sigma。 值越大该亮度处 SNR 降噪越弱;反之越强。值 256 等同于 isLumaCtrl=0(无亮度影响)。 过大对应亮度降噪不足;过小易过度平滑。
Usage Frequency:high
[256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256]
lumaCurvePx[12] Type: int
Range: [0, 12]
亮度曲线 X 锚点间距以 2 为底对数,用于内部锚点定位,保留兼容。值越大锚跨度宽;反之越窄。通常修改。
Usage Frequency:low
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
motionFactorCurveX[12] Type: int
Range: [0, 1024]
SNR 运动控制曲线的 X 锚点,据此曲线局部 SNR sigma 按像素运动调整。 锚点值越大对应运动区间跨度宽;反之越窄。分布过疏运动区分精度不足,过密冗余。
Usage Frequency:low
[0, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 1024]
motionFactorCurveY[12] motionFacCurveY** Type: int
Range: [0, 65535]
SNR 运动控制曲线的 Y 值(自动模式别名 motionFacCurveY),与 motionFactorCurveX 配合像素运动缩放局部 SNR sigma。 值越大该运动量降噪越弱;反之越强。值 128 等同于 isMotionCtrl=0。过大对应运动量降噪不足;过小易过度平滑。
Usage Frequency:low
[1408, 1152, 1024, 896, 768, 640, 512, 437, 384, 309, 256, 128]
motionFactorCurvePx[12] Type: int
Range: [0, 10]
运动曲线 X 锚点间距以 2 为底对数,用于内部锚点定位,保留兼容。 值越大锚跨度宽;反之越窄。通常修改。
Usage Frequency:low
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
lscCompCurveX[12] Type: int
Range: [0, 4095]
SNR LSC 增益补偿曲线的 X 锚点,据此曲线局部 SNR sigma 按 LSC 增益调整。 锚点值越大对应增益区间跨度宽;反之越窄。分布过疏增益区分精度不足;过密冗余。
Usage Frequency:medium
[0, 32, 64, 96, 128, 256, 512, 768, 1024, 1536, 2048, 4095]
lscCompCurveY[12]* Type: int
Range: [0, 65535]
SNR LSC 增益补偿曲线的 Y 值,与 lscCompCurveX 配合按 LSC 增益缩放局部 SNR sigma。 值越对应增益降噪越弱;反之越强。值 1024 等同于补偿。 过大补偿不足、边角噪声残留;过小易高增益过度平滑。
Usage Frequency:medium
[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]
lscCompCurvePx[12] Type: int
Range: [0, 12]
LSC 补偿曲线 X 锚点间距以 2 为底对数,用于内部锚点定位,保留兼容。 值越大锚跨度宽;反之越窄。通常修改。
Usage Frequency:low
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
blendStatic* Type: float
Range: [0.0, 100.0]
静态像素处 TNR 与 SNR 结果融合强度,final output=tnr_out×(100−blendStatic)+snr_out×blendStatic/100。 值越静态区 SNR 融合越强,降噪越强;反之 TNR 占比越高。
Usage Frequency:high
20
blendSlope* Type: float
Range: [0.0, 32.0]
运动量融合强度斜率,weight=min(blendMotion, blendStatic+motion×blendSlope)。 值越运动增加融合强度上升快;反之越慢。
Usage Frequency:high
16
blendMotion* Type: float
Range: [0.0, 100.0]
运动像素处 TNR 与 SNR 结果融合强度,final output=tnr_out×(100−blendMotion)+snr_out×blendMotion/100。 值越运动区 SNR 融合越强,降噪越强;反之越弱。
Usage Frequency:high
80
motionAnchorX[2]* Type: int
Range: [0, 1024]
运动量分段锚点,运动小于 motionAnchorX[0] 视为静态静态 boost 参数,大于 motionAnchorX[1] 视为运动运动 boost 参数,中间线性插值。 值越判定区间宽;反之越窄。 过大弱运动误判静态;过静态覆盖不足。
Usage Frequency:medium
[100, 600]
staticDetailThresh[2][3]* Type: int
Range: [0, 4095]
静态像素各层各 RGB 通道细节抑制阈值,系数小于阈值细节像素置 0。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如staticDetailThresh[0][1]代表L0层(高频层)对色彩通道1(绿色)的细节抑制阈值。 值越大该细节抑制越强;反之越弱。 过大易糊化静态细节;过细节噪声抑制不足。
Usage Frequency:medium
[[0, 0, 0], [0, 0, 0]]
staticDetailBoostThresh[2][3]* Type: int
Range: [0, 4095]
静态像素各层各 RGB 通道细节增强触发阈值。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如staticDetailBoostThresh [0][1]代表L0层(高频层)对色彩通道1(绿色)的增强触发阈值。 值越触发增强细节强度越高;反之越低。 过大细节增强难以触发;过小易噪声增强。
Usage Frequency:medium
[[4095, 4095, 4095], [4095, 4095, 4095]]
staticDetailBoost[2][3]* Type: float
Range: [1.0, 4.0]
静态像素各层各 RGB 通道细节增强因子,细节超过阈值时乘以此因子。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如staticDetailBoost [0][1]代表L0层(高频层)对色彩通道1(绿色)的细节增强因子。 值越对应细节增强越强;反之越弱。 过大易放大噪声;过小会抑制静态细节。
Usage Frequency:medium
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]
staticDetailClipThresh[2][3]* Type: int
Range: [0, 4095]
静态像素各层各 RGB 通道细节增强限幅阈值,boosting value=clip(staticDetailBoost×(detail_input−staticDetailBoostThresh), staticDetailClipThresh)。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如staticDetailClipThresh[0][1]代表L0层(高频层)对色彩通道1(绿色)的细节限幅阈值。 值越限幅宽松;反之严格。过大易增强;过增强过度限制。
Usage Frequency:medium
[[4095, 4095, 4095], [4095, 4095, 4095]]
movingDetailThresh[2][3]* Type: int
Range: [0, 4095]
运动像素各层各 RGB 通道细节抑制阈值,系数小于阈值细节像素置 0。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如movingDetailThresh[0][1]代表L0层(高频层)对色彩通道1(绿色)的细节抑制阈值。 值越大该细节抑制越强;反之越弱。 过大易糊化运动细节;过运动细节噪声抑制不足。
Usage Frequency:medium
[[0, 0, 0], [0, 0, 0]]
movingDetailBoostThresh[2][3]* Type: int
Range: [0, 4095]
运动像素各层各 RGB 通道细节增强触发阈值。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如movingDetailBoostThresh[0][1]代表L0层(高频层)对色彩通道1(绿色)的增强触发阈值。 值越触发增强细节强度越高;反之越低。过大细节增强难以触发;过小易噪声增强。
Usage Frequency:medium
[[4095, 4095, 4095], [4095, 4095, 4095]]
movingDetailBoost[2][3]* Type: float
Range: [1.0, 4.0]
运动像素各层各 RGB 通道细节增强因子,细节超过阈值时乘以此因子。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如movingDetailBoost[0][1]代表L0层(高频层)对色彩通道1(绿色)的细节增强因子。 值越对应细节增强越强;反之越弱。 过大易放大噪声;过小会抑制运动细节。
Usage Frequency:medium
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]
movingDetailClipThresh[2][3]* Type: int
Range: [0, 4095]
运动像素各层各 RGB 通道细节增强限幅阈值,boosting value=clip(boost_fac×(in−movingDetailBoostThresh), movingDetailClipThresh)。前三个元素是L0层(高频层),后三个元素是L1层(中频层),三个颜色通道是R->G->B 的顺序。例如movingDetailClipThresh [0][1]代表L0层(高频层)对色彩通道1(绿色)的细节限幅阈值。 值越限幅宽松;反之严格。 过大易增强;过增强过度限制。
Usage Frequency:medium
[[4095, 4095, 4095], [4095, 4095, 4095]]

3.12.3 调试流程

介绍 Bayer 降噪模块调试方法。

3.12.3.1 3DNR 调试

推荐以下流程调试 3DNR 模块:

步骤 1:标定噪声生成 noiseModelA 与 noiseModelB。

使用 pre-NR 模式,可将 isGammaFeBe 设为 1,使 NR 模块标定噪声模型降噪。该功能手动自动 MCM 模式支持。在自动非 MCM 模式下,不同增益条件使用同一对 noiseModelA 与 noiseModelB。若在 NR 模块期间保留 BLC,使用 blsExp 并确保与 bls 之等于实际 BLS。

步骤 2:从默认设置开始,将 2DNR 的 state 设为 0。

步骤 3:调整运动预处理。

若 isGaussBlur 设为 1,则运动检测进行高斯滤波预处理,权重 sigma 由 motionSmoothFactor 决定。

image

左图:motionSmoothFactor=1.0 ,右图:motionSmoothFactor=5.0

Figure 3.12-3 调试 3DNR motionSmoothFactor 的示例结果

步骤 4:设置 rangeH、diffType、sadWeight 和 sqrDiffFactor,定义运动检测时域差值计算过程。

步骤 5:配置下列参数之一定义运动检测运动分类器,使静态区域降噪效果好且运动区域严重拖尾。

  • tnrLumaCurveY 与 tnrMotionSlopeY 为 tnrLumaCurveX 的每个定义一对 noiseLevel 与 thrMotionSlope;

  • noiseLevel 与 thrMotionSlope 定义全局设置,即 tnrLumaCurveY[:]=noiseLevel、tnrMotionSlopeY[:]=thrMotionSlope。

定义了 tnrLumaCurveX、tnrLumaCurveY、tnrMotionSlopeY,则 noiseLevel 与 thrMotionSlope 值无效。下图所示运动时域差值关系,图中 t1=noiseLevel,t2−t1=thrMotionSlope。

image

Figure 3.12-4 运动分类器

步骤 6:用 motionSmoothLevel 选择运动后处理模式。

若 motionSmoothLevel 设为 1,仅进行滤波后处理;若设为 0,后处理包含采样、中滤波、上采样,效果更强。

image

左图:motionSmoothLevel=1,右图:motionSmoothLevel=0

Figure 3.12-5 调试 3DNR motionSmoothLevel 的示例结果

步骤 7:用 filterLen 与 filterLen2 调整时域 IIR 滤波。

  • filterLen 值越大,IIR 滤波更新参考考虑数越多;

  • filterLen2 值越大,IIR 滤波更新运动考虑运动数越多。

image

左图:filterLen=2,右图:filterLen=99

Figure 3.12-6 调试 3DNR filterLen 的示例结果

步骤 8:降低 tnrStrength 使降噪结果自然。

粗层细节分别输入进行滤波融合,融合比例分别由 tnrStrength2 与 tnrStrength 设定。

3.12.3.2 2DNR 调试

推荐以下流程调试 2DNR 模块:

步骤 1:针对运动物体分别调整三层降噪效果。

a. 参数设置:

  • 3DNR state!=0;

  • 2DNR isLumaCtrl=false、isLscGainComp=false、isMotionCtrl=true、sigmaFactorMul=100、staticFactor=1.0。

b. 降噪效果调整:

  • 将 sigmaScale 设频率的 sigma 因子各层施加不同 NLM 强度;

  • 将 sigmaOffset 设为 NLM 局部匹配阈值,该参数定义平坦阈值使平滑。

image

左图:sigmaOffset=0,右图:sigmaOffset=12

Figure 3.12-7 调试 2DNR sigmaOffset 的示例结果

步骤 2:调整局部 NLM 强度。

a. 参数设置:

  • 2DNR isLumaCtrl=true、isLscGainComp=true、isMotionCtrl=true、sigmaFactorMul 与 staticFactor 设默认值;

  • sigmaScale 设频率层 sigma 因子;

  • sigmaOffset 设为 NLM 局部匹配阈值。

b. 通过调整以下因子调整局部 NLM 强度:

  • 亮度:设置 lumaCurveX 与 lumaCurveY。lumaCurveY 在 lumaCurveX 处为不同亮度像素定义不同局部 NLM 强度。

image

左图:isLumaCtrl=false,右图:isLumaCtrl=true

Figure 3.12-8 调试 2DNR isLumaCtrl 的示例结果

  • 运动:根据需要设置 sigmaFactorMotionMax 与 sigmaFactorMotionMin。若像素运动大于 sigmaFactorMotionMax,其局部强度固定最大;若小于 sigmaFactorMotionMin,其局部强度由 staticFactor 决定(决定施加最大局部强度百分比)。若未指定两者,则 motionFactorCurveX 与 motionFactorCurveY 生效,motionFactorCurveY 在 motionFactorCurveX 处为不同运动定义不同局部强度。

image

左图:isMotionCtrl=false,右图:isMotionCtrl=true

Figure 3.12-9 调试 2DNR isMotionCtrl 的示例结果

  • 镜头阴影:设置 lscCompCurveX 与 lscCompCurveY。lscCompCurveY 在 lscCompCurveX 处为中心像素不同距离像素定义不同局部 NLM 强度。

image

左图:isLscGainComp=false,右图:isLscGainComp=true

Figure 3.12-10 调试 2DNR isLscGainComp 的示例结果

步骤 3:降低融合强度使降噪结果自然。

TNR 与 SNR 结果运动局部融合:Final SNR strength=min(blendStatic+motion×blendSlope, blendMotion)。

image

左图:blendMotion=99, blendStatic=99,右图:blendMotion=80, blendStatic=20

Figure 3.12-11 调试 2DNR blendMotion 和 blendStatic 的示例结果

步骤 4:作为 Bayer 锐化调整细节增强。

下图所示细节增强工作方式。

  • Case 0:当 abs(detail)<threshold 时,out=coarse。

  • Case 1:当 threshold<abs(detail)<boosting_threshold 时,out=coarse+detail。

  • Case 2:当 abs(detail)>boosting_threshold 时,out=coarse+min(detail×boost_factor, max_boosting_value)。

image

Figure 3.12-12 细节增强

上述 threshold、boosting_threshold、boost_factor、max_boosting_value 由运动决定:

  • 像素运动大于 motionAnchorX[1],其行为由 movingDetailThresh、movingDetailBoostThresh、movingDetailBoost、movingDetailClipThresh 决定。

image

左图:movingDetailBoost=1.0,右图:movingDetailBoost=0.5

Figure 3.12-13 调试 2DNR movingDetailBoost 的示例结果

  • 像素运动小于 motionAnchorX[0],其行为由 staticDetailThresh、staticDetailBoostThresh、staticDetailBoost、staticDetailClipThresh 决定。

image

左图:staticDetailBoost=1.0,右图:staticDetailBoost=1.5

Figure 3.12-14 调试 2DNR staticDetailBoost 的示例结果

否则,参数运动运动组与静态之间插值生成。

3.12.4 调试建议功能说明

GE、DPCC、DPF、3DNR、2DNR 等 NR 相关模块位于 gamma FE 与 gamma BE 之间。该 NR 链在 ISP 中位置通过模式调整:pre-NR 模式与 post-NR 模式。

  • pre-NR 模式:NR 相关模块位于流水线相对前端,有利于前端去除原始噪声,可最大程度利用原始噪声模型。考虑调试便利性,推荐使用 pre-NR 模式。

  • post-NR 模式:NR 相关模块位于 raw 域流水线相对端,在 raw 域任何亮度相关模块(如 WB、DG、WDR)之后。优点有效去除变亮增强噪声,缺点原始噪声模型破坏,增加调试难度。

pre-NR 与 post-NR 模式标定调试差异如下:

  • 噪声标定:标定流程差异。

  • 标定效果上,pre-NR 的 NR 模块受益噪声标定数据(噪声模型参数噪声曲线);post-NR 仅 DPF 模块受益标定所得噪声曲线(当 WDR 不太强时)。

调试:

  • pre-NR 的调试步骤上,有利于前端去除噪声利用原始噪声模型。

  • post-NR 下 3DNR 中关于 gamma FE/BE 的参数无效,可去除变亮增强噪声,但难以达到最佳降噪效果。不建议使用的 WDR,因噪声模型破坏过大,使调试困难。

3.13 DMSC(Demosaic)

3.13.1 功能描述

介绍 ISP 中 DMSC 模块调试方法。

由于大多数彩色相机使用传感器获取图像信息(如图3.13-1 所示),每个 sensor 表面覆盖一个彩色滤波阵列(CFA),使每个像素只能获取 R、G、B 中一个颜色分量。

image

Figure 3.13-1 传感器获取图像信息

DMSC 模块主要功能输入 Bayer 数据转换为 RGB 数据。为获得彩色图像,需使用当前像素周围像素颜色分量值来估计当前缺失两个分量值。

DMSC 具有以下特性:插值(填充 RGB 平面)、锐化、去伪彩、去紫边(去除边缘假彩色)。主流程如下。

image

Figure 3.13-2 DMSC 主流程

3.13.2 关键参数

表列出了 DMSC 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.13-1 DMSC 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
DMSC(去马赛克)模块工作模式开关。 0:关闭模块; 1:手动模式使能,参数用户配置; 2:自动模式使能,由 ISP 内部算法适应。
Usage Frequency:low
2
gradThresholdMax Type: int
Range: [0, 4095]
平坦区域均值插值法阈值,用于判定平坦区域像素差分上限。 值越纳入平坦区域插值像素范围宽;反之越窄。 过大则细节纹理误判边缘触发错误插值方向;过小则边缘像素误判平坦区域导致插值模糊。
Usage Frequency:low
20
gradThresholdMin Type: int
Range: [0, 4095]
平坦区域均值插值法阈值,用于判定平坦区域像素差分下限。 值越平坦区域判定严格;反之宽松。 过大则平坦区域像素误判边缘导致方向插值错误;过小则纹理误判平坦区域损失细节。
Usage Frequency:low
4
diffColorCoefficient Type: int
Range: [0, 128]
插值判断方向不同通道(R/B/G)差值权重系数。 值越大,该通道差值方向判断贡献越强,反之越弱。 取值不当导致方向误判,产生锯齿插值错误。
Usage Frequency:low
128
adaptCoefficientMode Type: int
Range: [0, 3]
不同通道差值参与判断方向权重适应计算开关模式选择。 0:关闭适应; 1~3:使能对应适应模式。值越大,自适应策略介入程度越高,反之越低。
Usage Frequency:low
3
adaptCoefficientThresholdLow Type: int
Range: [0, 255]
启用适应系数模式时,计算局部平均色差稳定性T的阈值。 T低于此值时,不同通道权重取 adaptCoefficientMin;T高于 adaptCoefficientThresholdHigh(本值+1<<shift)时取 adaptCoefficientMax。 值越大,触发最大权重色差区间宽,反之越窄。
Usage Frequency:low
32
adaptCoefficientThresholdShift Type: int
Range: [0, 8]
适应系数阈值移位量,与 adaptCoefficientThresholdLow 配合计算阈值。 值越大,上下阈值间距宽,反之越窄。
Usage Frequency:low
5
adaptCoefficientMin Type: int
Range: [0, 128]
不同通道差值方向判断贡献最小权重,在色差平稳区域使用。 值越大,平稳区域方向判断通道差异敏感,反之敏感。
Usage Frequency:low
0
adaptCoefficientMax Type: int
Range: [0, 128]
不同通道差值方向判断贡献最大权重,在色差剧烈区域使用。 值越大,剧烈区域方向判断通道差异敏感,反之敏感。
Usage Frequency:low
128
isInterpCorner Type: bool
Range: {true, false}
角点检测功能开关。 true:使能角点检测; false:关闭角点检测。
Usage Frequency:low
true
interpDirStrength[4] Type: int
Range: [0, 256]
方向判断强度数组。 [0]初始判断 h/v/45/135 方向强度; [1]判断 h/v 方向端点强度; [2]二次判断 h/v 方向强度; [3]三次判断 h/v 方向强度。 值越大,对应阶段方向判断置信度越高,反之越低。
Usage Frequency:low
[32, 42, 4, 8]
interpLargeStr[2] Type: int
Range: [0, 16]
范围方向梯度范围方向梯度合成方向判断梯度权重。 [0]二次判断强度; [1]三次判断强度。 值越大,大范围梯度最终方向贡献显著,反之越弱。
Usage Frequency:low
[8, 16]
dir0InterpType Type: int
Range: [0, 3]
非 ISO 点无法确定插值方向插值方法选择。 0:关闭方向,使用平坦区域均值插值(类似 ISO 点); 1~3:使能对应基于周围插值方法。 值越大,基于周围插值策略介入程度越高,反之越低。
Usage Frequency:low
0
cornerLowTh Type: int
Range: [0, 4095]
判断方向插值是否使用对应方向均值阈值。 值越触发对应方向均值插值像素范围宽;反之越窄。 过大则伪影增加;过小则角点区域细节损失。
Usage Frequency:low
1024
cornerShift Type: int
Range: [0, 12]
阈值移位量,高阈值=cornerLowTh+(1<<cornerShift),用于判定是否使用对应方向相似加权插值法。 值越大,加权插值触发区间宽,反之越窄。
Usage Frequency:low
6
isDecline
declineEn**
Type: bool
Range: {true, false}
true:启用RB插值高光抑制。
false:禁用启用RB插值高光抑制。
Usage Frequency:low
true
highlightControlThreshold Type: int
Range: [0, 4095]
高光检测阈值,用于识别插值过程需要抑制高光像素。 值越被判高光像素范围越窄;反之宽。 过大则高光区域插值溢出产生伪彩;过小则正常像素误判高光导致色彩失真。
Usage Frequency:low
3900
highlightControlShift Type: int
Range: [0, 8]
高光与非高光区域过渡带宽移位量,过渡带宽为 1<<highlightControlShift。 值越大,过渡带宽,边界平滑,反之越窄。
Usage Frequency:low
6
highlightTh[2]** int
highlightTh[0]:[0,4095]
highlightTh[1]:[0,8]
highlightTh[0]:高光检测阈值。 1<<highlightTh[1]:高光与非高光过渡带宽。
Usage Frequency:low
[3900, 6]
deBurstMode Type: int
Range: [0, 3]
插值过程中 burst 噪声去除通道选择。 0:无通道去 burst; 1:插值时 G 通道去 burst; 2:R/B 通道去 burst; 3:R/B 和 G 通道去 burst。
Usage Frequency:low
3
pureGreenWeight Type: int
Range: [0, 16]
平坦区域 G 通道插值时,非色差插值结果权重。 值越大非色差插值结果最终 G 值贡献越强;反之越弱。 过大易损失色差细节;过小则抗噪能力下降。
Usage Frequency:low
0
pureRedBlueWeight Type: int
Range: [0, 16]
平坦区域 R/B 通道插值时,非色差插值结果权重。 值越大非色差插值结果最终 R/B 值贡献越强;反之越弱。 过大易损失色差细节;过小则抗噪能力下降。
Usage Frequency:low
0
pureGreenWeightIso Type: int
Range: [0, 16]
平坦区域 G 通道插值时,非色差插值结果权重。 值越大非色差插值结果最终 G 值贡献越强;反之越弱。 过大易损失色差细节;过小则抗噪能力下降。
Usage Frequency:low
0
pureRedBlueWeightIso Type: int
Range: [0, 16]
平坦区域 R/B 通道插值时,非色差插值结果权重。 值越大非色差插值结果最终 R/B 值贡献越强;反之越弱。 过大易损失色差细节;过小则抗噪能力下降。
Usage Frequency:low
0
isDeMoireRefineGreen Type: bool
Range: {true, false}
基于周围插值方向精修当前点 G 通道功能开关,用于去除 moire 伪影。 true:使能精修; false:关闭精修。
Usage Frequency:low
true
refineGreenThreshold Type: int
Range: [0, 4095]
在 B/R 处精修 G 时,R 与 B 通道差值判定阈值,超过执行校正。 值越大,触发 G 精修色差条件严格,反之宽松。
Usage Frequency:low
100
isDeFalseColor Type: bool
Range: {true, false}
伪彩功能开关。 true:使能伪彩; false:关闭伪彩。
Usage Frequency:low
true
colorStrength Type: int
Range: [0, 128]
伪彩处理强度,控制伪彩抑制力度。 值越伪彩去除彻底;反之越弱。 过大易损失真实色彩;过小则伪彩残留。
Usage Frequency:low
128
cbCrClassThreshold Type: int
Range: [0, 7]
分类统计像素的 Cb/Cr 域阈值,用于伪彩过程区分伪彩像素正常像素。 值越大,被判伪彩像素范围越窄,反之宽。
Usage Frequency:low
5
grayProtectStrength Type: int
Range: [0, 128]
伪彩灰度保护强度。 新 CbCr 饱和度高于旧 CbCr 时,值越大取旧 CbCr 作最终结果权重越高,反之越低。用于保护灰度区域误改。
Usage Frequency:low
0
isDePurple
dmscDepurpleEnable**
Type: bool
Range: {true, false}
紫边(DePurple)功能开关。 true:使能紫边; false:关闭紫边。
Usage Frequency:medium
true
gradControl Type: int
Range: [0, 1]
梯度保护控制开关。 0:关闭梯度保护; 1:使能梯度保护。
Usage Frequency:low
1
protectThresholdLow Type: int
Range: [0, 255]
梯度保护阈值,与 protectShift 配合计算阈值。 值越大,触发梯度保护像素范围宽,反之越窄。
Usage Frequency:low
64
protectShift Type: int
Range: [0, 8]
梯度保护阈值移位量,与 protectThresholdLow 配合确定阈值。值越大,高低阈值间距宽,反之越窄。
Usage Frequency:low
7
threshold
dmscDepurpleThr**
Type: int
Range: [0, 255]
紫边阈值。 值越大,边缘颜色处理少、误校正少;反之,值越小,处理多、误校正多。
Usage Frequency:high
20
cbcrMode Type: int
Range: {0,1,2,3}
Cb/Cr 通道开关,用于控制紫边处理中 Cb/Cr 通道是否参与校正。 0:关闭; 1:使能cb; 2:使能cr; 3:使能cb和cr;
Usage Frequency:medium
3
saturationShrink
dmscDepurpleSatShrink**
Type: int
Range: [0, 8]
校正饱和度降低强度,用于紫边过程压缩校正区域饱和度。 值越大,校正饱和度压缩明显,反之越弱。
Usage Frequency:high
8
colorRangeMode Type: int
Range: [0, 3]
紫边处理颜色范围模式。 0:不考虑颜色范围; 1:仅选范围 1; 2:仅选范围 2; 3:范围 1 和 2 都选。
Usage Frequency:low
3
cbCrRange[8]
dmscDepurpleCbCrRange**
Type: int
Range: [0, 255]
颜色范围1和2的Cb/Cr上下限。 [0]:范围1Cb低阈值; [1]:范围1Cb高阈值; [2]:范围1Cr低阈值; [3]:范围1Cr高阈值; [4]:范围2Cb低阈值; [5]:范围2Cb高阈值; [6]:范围2Cr低阈值; [7]:范围2Cr高阈值。
Usage Frequency:low
[132,220,112,200,96,122,82,118]
deNoiseStrength
denoiseStrength**
Type: int
Range: [0, 32]
Sharpen功能模糊强度控制参数。 值越大,模糊越强 ,反之越弱。
Usage Frequency:medium
0
isSharpen
dmscSharpenEnable**
Type: bool
Range: {true, false}
DMSC 后锐化功能开关。 true:使能锐化; false:关闭锐化。
Usage Frequency:low
true
factors[6]
dmscSharpenFactor**
Type: int
Range: [0, 511]
锐化强度数组,分频段暗侧控制。 factors[0]:高频增强强度(亮部)。 factors[1]:高频增强强度(暗部)。 factors[2]:中频增强强度(亮部)。 factors[3]:中频增强强度(暗部)。 factors[4]:低频增强强度(亮部)。 factors[5]:低频增强强度(暗部)。 值越大,对应频段暗侧锐化越强,反之越弱。
Usage Frequency:high
[20,20,30,30,40,40]
clips[6]
dmscSharpenClip**
Type: int
Range: [0, 2047]
锐化结果限幅数组,用于约束频段暗侧锐化幅度。 clips[0]:高频增强结果限制(亮部)。 clips[1]:高频增强结果限制(暗部)。 clips[2]:中频增强结果限制(亮部)。 clips[3]:中频增强结果限制(暗部)。 clips[4]:低频增强结果限制(亮部)。 clips[5]:低频增强结果限制(暗部)。 值越大,锐化上限宽松,反之严格。
Usage Frequency:high
[40,40,60,60,80,80]
sharpenCurves[3].layerT1
sharpenCurve0/1/2.layerT1**
Type: int
Range: [0, 2047]
高频锐化曲线 T1。
Usage Frequency:high
32
sharpenCurves[3].layerT2Shift
sharpenCurve0/1/2.layerT2Shift**
Type: int
Range: [0, 11]
高频锐化曲线 T2 移位。
Usage Frequency:high
6
sharpenCurves[3].layer0T3
sharpenCurve0/1/2.layer0T3**
Type: int
Range: [0, 2047]
锐化曲线 T3。
Usage Frequency:high
122
sharpenCurves[3].layerT4Shift
sharpenCurve0/1/2.layerT4Shift**
Type: int
Range: [0, 11]
锐化曲线 T4 移位。
Usage Frequency:high
6
sharpenCurves[3].layerR1
sharpenCurve0/1/2.layerR1**
Type: int
Range: [0, 256]
锐化曲线 R1。
Usage Frequency:high
0
sharpenCurves[3].layerR2
sharpenCurve0/1/2.layerR2**
Type: int
Range: [0, 256]
锐化曲线 R2。
Usage Frequency:high
100
sharpenCurves[3].layerR3
sharpenCurve0/1/2.layerR3**
Type: int
Range: [0, 256]
锐化曲线 R3。
Usage Frequency:high
126
isSharpenLine Type: bool
Range: {true, false}
线条锐化功能开关,用于增强图像线状边缘。 true:使能线条锐化; false:关闭。
Usage Frequency:low
false
sharpenLineCurves[4].t1 Type: int
Range: [0, 2047]
线条锐化曲线 t1。
Usage Frequency:low
24
sharpenLineCurves[4].strength Type: int
Range: [0, 4095]
线条锐化强度。
Usage Frequency:low
8
sharpenLineCurves[4].shift1 Type: int
Range: [0, 11]
线条锐化 shift1。
Usage Frequency:low
3
sharpenLineCurves[4].r1 Type: int
Range: [0, 256]
线条锐化 r1。
Usage Frequency:low
0
sharpenLineCurves[4].r2 Type: int
Range: [0, 256]
线条锐化 r2。
Usage Frequency:low
256

3.13.3 调试流程

推荐以下流程调试 DMSC 模块:

步骤 1:(可选)将 DMSC 模块参数默认值。

步骤 2:调整插值相关参数:

▪ 自然场景将 adaptCoefficientMode 设为 1。客观场景(如 ISO12233 分辨率测试卡)可将 adaptCoefficientMode 设为 0、diffColorCoefficient 设为 128,以边缘插值获得更好效果(见图3.13-3)。

▪ 调整 adaptCoefficientThresholdLow:高色度区域出现错误方向插值增大此值;出现错误高频线时减小此值。

▪ 若白平衡受 LSC、CAC 等因素影响,将 adaptCoefficientMode 设为 0、diffColorCoefficient 设为 128。

▪ 其他插值相关参数推荐使用默认值。

image

Figure 3.13-3 调试 DMSC adaptCoefficientMode 的示例结果

步骤 3:调整锐化相关参数调试效果。

DMSC 支持不同频率层(高、中、低)使用不同锐化曲线。如图3.13-4 所示,某层锐化曲线,横轴纹理等级,纵轴锐化等级。

image

横轴纹理等级,纵轴锐化等级

Figure 3.13-4 锐化曲线

将 factors[6] 设不同值,观察高/中/低频部分锐化强度。 调试时需同时关注亮侧暗侧锐化表现。

调试锐化曲线时,可降低 r1 和 r2,以防止平坦区域噪声放大。曲线不宜设置陡,以使某些边缘锐化程度看起来一致。

image

左图:Curve2 [16, 7, 150, 6, 0, 132, 180],右图:Curve2 [16, 7, 150, 6, 0, 30, 50]

Figure 3.13-5 调试 DMSC 锐化曲线示例结果

步骤 4:配置伪彩功能。

建议使能功能,并将 colorStrength 设为 128、cbCrClassThreshold 设为 5 或 6。

步骤 5:配置紫边功能。

调整 threshold 参数控制检测像素。值越小,可能边缘像素进入紫边处理。

检测像素输出结果符合预期,可降低 saturationShrink 参数值降低这些像素饱和度(当目标边缘宽于 3 像素时)。但设置可能影响其他区域。也将 gradControl 设为 1 以防止某些边缘产生期望变化。调整cbCrRange可设置检测需要校正颜色。

image

左图:threshold=20,右图:threshold=64

Figure 3.13-6 调试 DMSC threshold 的示例结果

步骤 6:配置线条锐化。

线条锐化通常禁用,因为可能纹理区域产生期望伪影。对于噪声较少且纹理图像,可尝试功能。

3.14 Color Correction Matrix(CCM)

3.14.1 功能描述

CCM模块根据客户喜好颜色进行校正调整。它更改图像色度值以匹配标准色彩空间色度值。这个通过捕获Colorchecker并使用所有色块及其参考色度值。大多数情况下,标准颜色无法提供最佳图像质量。根据应用程序客户喜好,将这些校准符合产品需求值。

调整过程可以控制整体色相饱和度,下面对此进行介绍:

  • 第一阶段——使用。RAW图像在Calibration Tool中调整CCM。

  • 第二阶段——在实验室条件使用。RGB图像通过Calibration Tool调整CCM。

  • 第三阶段——根据增益微调CCM参数适合所有场景。

3.14.2 关键参数

ISP 中的CCM模块用于校正相机传感器内部串扰效应色彩空间偏移。

CCM模块执行常规的 RGB 到 R’G’B’颜色空间转换,以补偿图像传感器色彩分量之间串扰。此外,可以通过适当矩阵系数色彩空间饱和度进行校正。

因此,该模块能够通过矩阵运算每个像素进行校正,如下所示:

R’ = R x ccMatrix[0] + G x ccMatrix[1]+ B x ccMatrix[2]+ ccOffset[0]

G’ = R x ccMatrix[3] + G x ccMatrix[4] + B x ccMatrix[5] + ccOffset[1]

B’ = R x ccMatrix[6] + G x ccMatrix[7] + B x ccMatrix[8]+ ccOffset[2]

CCM调试相关参数如下。

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
0:禁用模块;1:在 manual 模式使模块;2:在 auto 模式使模块。
Usage Frequency:high
0
ccMatrix[3][3] Type: float
Range: [-2048/128, 2047/128]
增益矩阵。
Usage Frequency:high
[[1.0, 0, 0], [0, 1.0, 0], [0, 0, 1.0]]
ccOffset[3] Type: float
Range: [-2047, 2047]
偏置。
Usage Frequency:low
[0.0, 0.0, 0.0]

Table 3.141 CCM静态校准参数

3.14.3 调试流程

先决条件

Prerequisite Status / value
Black level Tuned
Lens shading Tuned
Initial gamma Tuned
CNR Disabled
Manual exposure −0.25 < exposure error < 0.25 (f-stops). This can be verified through Imatest. Avoid clipping of patch 19 from the ColorChecker chart

Table 3.142 CCM 调试先决条件

调试流程

初始调整阶段,不期望CCM达到完美值,按照《X5-Calibration Tool工具指南》中CCM标定步骤,标定得到不同色温的CCM值。最重要第二阶段第三阶段对CCM的调整。

3.14.3.1 第二阶段

先决条件

Prerequisite Status / value
Phase one prerequisites Complete
AWB Tuned
gamma Disabled
AE −0.25 < exposure error < 0.25 (f-stops). This can be verified through Imatest.

Table 3.143 CCM Phase two 先决条件

调试流程

进行CCM第二阶段调试之前,使用Imatest的Colorcheck模块,验证曝光误差。如果曝光误差在Table 3.142给出范围内,请重新调整AE_target参数调整曝光。重复过程,直到正确曝光为止。

第二阶段调整第一阶段调整非常相似。根据具体图像需求调整标定得到不同色温对应风格的CCM。

3.14.3.2 第三阶段

第三阶段包括两个主要部分,更新校准参数饱和度调制。其中第一个重点说明先前模块参数变更。另一个定义增益关联的CCM,可以高增益照度提供控制颜色方法。

注:颜色准确性噪点可见之间权衡每个增益条件需要谨慎考虑。通常,目标提供最高饱和不会出现不必要噪声。匹配产品需求调整。

第三阶段进行大量微调时,通常由于CCM所依赖模块(例如gamma)参数发生变更导致。这有可能基于第二阶段处理结果重新调试更新CCM。

3.15 Gamma Correction

3.15.1 功能描述

Gamma 模块图像进行亮度非线性转换适配输出设备,主要用于调整对比度。

RGB Gamma 模块,用于创建视频处理常见的 gamma 预校正图像。伽马值为 1.0 表示线性关系,其中输出输入直接比例。大多数显示器图像格式使用为 2.2 的伽马值,并且伽马曲线开始部分一个线性段,这提供符合感知均匀分布亮度级别。

Gamma 表节点之间使用线性插值生成。调试过程如下:

  • 第一阶段:使用Calibration Tool在实验室内tuning,tuning效果需要覆盖大部分场景。

  • 第二阶段:Gamma依照AE_target调整改善对比度。

  • 第三阶段:Gamma微调,使对比度适合所有场景。

3.15.2 关键参数

R、G、B三通道分别使用不同的Gamma LUT,LUTs由64个均匀间隔节点组成, 在这些节点之间进行线性插值。每个数据为10bit无符号类型,所以gamma[0]=0, gamma[64]=1023,这些节点定义gamma校正曲线。

Table3.16-1列举了Gamma模块调试参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
0:禁用模块;1:在 manual 模式使模块;2:在 auto 模式使模块。
Usage Frequency:high
0
curve[64]* Type: uint
Range: [0, 1023]
gamma 曲线的 Y 值(不零点)。
Usage Frequency:high
全为 0
isStandard Type: bool
Range: {true, false}
true:使用由 standardVal 指定 gamma 值标准 gamma 曲线;false:使用用户指定的 Y 值。
Usage Frequency:high
true
standardVal Type: float
Range: [0, 4]
标准 gamma 曲线值。
Usage Frequency:medium
2.2
curvePx[64] Type: uint
Range: [0, 12]
曲线相邻 X 点距离,须满足 2^px = [x(i) - x(i-1)]。
Usage Frequency:low
全为 6
isUserCurveX Type: bool
Range: {true, false}
true:使用用户指定的 px 值;false:使用默认 curvePx 值(等于 6),gamma 曲线相邻 X 点间线段相同。
Usage Frequency:high
false

Table 3.151 Gamma 调试参数

3.15.3 调试流程

3.15.3.1 第一阶段

通常情况下Gamma的初始tuning只需要设定一条初始Gamma Curve,保存继续其它模块。gamma在第二阶段调试AE模块需要重新确认是否需要调试加强对比度。

初始调整阶段,按照《X5-Calibration Tool工具指南》中CCM标定说明,先选定一组Gamma曲线或者使用前期项目已有的Gamma Curve作为基准曲线。

3.15.3.2 第三阶段

后续实际场景适配中,根据实际场景要求,再动态调整Gamma曲线,以满足图片对比度要求。Gamma Curve的调整可能导致图片颜色指标发生一定浮动,若颜色准确度指标特定要求,修改Gamma Curve后,需要重新测定颜色表现,甚至需要重新标定CCM。

Gamma模块可以根据不同的Gain设定不同的Gamma 曲线,实际项目应用中,应根据实际场景需求,来设定对应的Gamma曲线,相邻Gain间的Gamma曲线保持相对平滑。

3.16 EE(Edge Enhancement)

3.16.1 功能描述

边缘增强(EE)通过以下功能改善物体边缘:

● 增强物体边缘的 Y 通道,在增加噪声前提提高图像锐度。

● 降低物体边缘的 UV 通道饱和度,减小物体边缘色彩饱和度,同时减少色差紫边。

边缘增强算法提供灵敏且鲁棒边缘检测,旨在检测尽可能物体边缘。边缘检测结果提供不同边缘锐度等级,因此根据锐度等级边缘进行平滑增强。该边缘检测算法噪声鲁棒,避免噪声影响。

image

Figure 3.16-1 EE 模块框架

3.16.2 关键参数

表列出了 EE 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.16-1 EE 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
EE(边缘增强)模块工作模式开关。 0:关闭模块; 1:手动模式使能,参数用户配置; 2:自动模式使能,由 ISP 内部算法适应。默认值为 2。
Usage Frequency:low
2
isYuvDomain Type: bool
Range: {false, true}
EE 处理选择。 true:在 YUV 域处理 EE; false:在 RGB 域处理 EE。
Usage Frequency:low
false
strength
eeStrength**
Type: int
Range: [0, 128]
EE 强度,决定增强结果合并输入图像程度。 值越大,增强结果比越高,锐化效果明显;反之,原始图像保留多,锐化越弱。 过大易产生过锐及 halo 伪影;过小则锐化不足、边缘偏软。
Usage Frequency:medium
128
sourceStrength
eeSrcStrength**
Type: int
Range: [0, 256]
增强高频部分原始低频部分组合比例控制。 值越大,增强高频成分比越高,锐化突出;反之,原始低频比越高,画面接近原始。 过大易引入噪声放大;过小则高频不足、画面偏软。
Usage Frequency:medium
256
edgeNrLevel
edgeNrLvl**
Type: int
Range: [0, 5]
边缘降噪等级,控制边缘区域降噪强度。 值越大,边缘降噪越强,噪声抑制明显;反之,降噪越弱,细节保留多。 过大易导致边缘糊化;过小则边缘噪声残留明显。
Usage Frequency:medium
3
edgeScaler Type: int
Range: [0, 32]
边缘检测结果缩放控制,调节边缘强度检测增益。 值越大,边缘检测灵敏度越高,被判定边缘像素多;反之,灵敏度越低。 过大则边缘误判边缘导致过锐;过小则边缘漏检、锐化不足。
Usage Frequency:high
4
edgeUseAuxiDir Type: int
Range: [0, 1]
边缘检测生成边缘强度是否考虑辅助方向。 0:关闭(不考虑); 1:使能(考虑)。
Usage Frequency:low
1
detailLevel
detailLvl**
Type: int
Range: [0, 7]
细节等级,决定锐化风格。 值越大,细节锐化模式越强,纹理区域增强明显;反之,细节锐化越弱。 过小则细节偏软,过大易导致纹理过锐噪声放大。
Usage Frequency:high
5
detailScaler Type: int
Range: [0, 32]
纹理/细节检测结果缩放控制,调节细节强度检测增益。 值越大,细节检测灵敏度越高,被判定细节像素多;反之,灵敏度越低。 过大则细节误判细节导致过锐;过小则细节漏检、锐化不足。
Usage Frequency:high
8
detailPreEnhanceStrength
detailPreEnhanceStr**
Type: int
Range: [0, 256]
纹理/细节增强强度,决定细节等级。 值越大,细节等级越高,细节增强明显;反之,细节增强越弱。 过大易导致纹理过锐噪声放大;过小则细节偏软。
Usage Frequency:high
16
hfMergeCurve[4] int[4]
元素1:[0,1024]
元素2:[0,10]
元素3:[0,1024]
元素4:[0,10]
噪声、纹理、边缘融合曲线。 元素1(T1):阈值 T1; 元素2(t2_shift):T1 的偏移(决定 T2=T1+2t2_shift); 元素3(T3):阈值 T3; 元素4(t4_shift):T3 的偏移(决定 T4=T3+2t4_shift)。 阈值越大,对应区间判定严格,融合过渡越窄;反之,越宽松。
Usage Frequency:medium
[4, 4, 24, 8]
gradTh[2]* Type: int
Range: [0, 1024]
边缘噪声、边缘细节区分阈值。 值越大,边缘判定严格,被判定边缘像素少;反之,边缘判定宽松。 过大则边缘漏检、锐化不足;过小则噪声误判边缘导致过锐。
Usage Frequency:medium
[8, 12]
sharpCurveLevel
sharpCurveLvl**
Type: int
Range: [0, 7]
锐化增强曲线选择。 0~6:值越大,细节模式影响越强; 7:前段曲线3,后增强边缘压缩。
Usage Frequency:medium
3
sharpGain[2]* Type: int
Range: [0, 1024]
肤色区域亮侧暗侧锐化强度。 值越大,对应锐化越强;反之,锐化越弱。 过大易产生过锐及 halo 伪影;过小则锐化不足、边缘偏软。
Usage Frequency:high
[172, 156]
isSharpLimit Type: bool
Range: {false, true}
锐化极值约束开关。 true:使能锐化极值约束; false:关闭锐化极值约束。
Usage Frequency:medium
true
sharpLimitType Type: int
Range: {1,2, 3}
锐化极值控制类型。 1:高频增强原值一定比例内; 2:在局部原值一定比例内; 3:在调整局部原值一定比例内。
Usage Frequency:medium
2
sharpLimit[2]* Type: int
Range: [0, 512]
高频增强差值约束范围上限下限。 值越大,允许差值范围宽,锐化幅度越大;反之,约束严格。 过大则约束失效、易过锐;过小则锐化过度限制。
Usage Frequency:medium
[118, 90]
sharpGainUv* Type: int
Range: [0, 255]
边缘附近的 UV 锐化强度。 值越大,UV 分量锐化越强;反之,UV 锐化越弱。 过大易产生色彩伪影;过小则色度边缘偏软。
Usage Frequency:low
0
isDePurple
depurpleEn**
Type: bool
Range: {false, true}
紫边(DePurple)开关。 true:使能紫边; false:关闭紫边。
Usage Frequency:medium
true
depfLimit[4]* Type: int
Range: [0, 1024]
紫边检测阈值。 值越大,紫边判定严格,被校正像素少;反之,判定宽松。 过大则紫边漏校;过小则非紫边校正导致色彩偏移。
Usage Frequency:low
[460, 900, 420, 880]
depfDetectLumaTh* Type: int
Range: [0, 1024]
紫边检测阈值。 值越大,高亮区域紫边检测严格;反之,检测宽松。 过大则高亮紫边漏检;过小则高亮区误检。
Usage Frequency:high
800
depfDetectLumaDiff* Type: int
Range: [0, 1024]
fringe 检测最暗区域差值阈值。 值越大,对比度判定严格;反之,越宽松。 过大则弱 fringe 漏检;过小则对比区误检。
Usage Frequency:high
600
depfFixStrength
depfFixStr**
Type: int
Range: [0, 256]
紫边校正强度。 值越大,紫边校正幅度越大;反之,校正越弱。 过大易导致色彩偏移伪影;过小则紫边残留。
Usage Frequency:high
168
depfDetectRange Type: int
Range: [0, 7]
紫边处理宽度。 值越大,处理范围宽;反之,越窄。水平单向处理最大值7,水平处理15像素。 过大则处理范围宽易误校;过小则边覆盖不全。
Usage Frequency:medium
7
isCurve Type: bool
Range: {true, false}
CA/DCI 曲线总开关。 true:使能CA和DCI 曲线; false:关闭CA和DCI曲线。
Usage Frequency:medium
true
isCa
caEnable**
Type: bool
Range: {true, false}
CA 曲线开关。 true:使能 CA 曲线; false:关闭CA 曲线。
Usage Frequency:high
false
isDci
dciEnable**
Type: bool
Range: {true, false}
DCI 曲线开关。 true:使能 DCI 曲线; false:关闭DCI 曲线。
Usage Frequency:high
false
dciCurve[65]* Type: int
Range: [0, 1024]
动态对比度增强(DCI)曲线,65 点查找表。 值越大,对应亮度区间对比度增强越强;反之越弱。 过大易导致层次失真;过小则对比度不足。
Usage Frequency:medium
[0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464, 480, 496, 512, 528, 544, 560, 576, 592, 608, 624, 640, 656, 672, 688, 704, 720, 736, 752, 768, 784, 800, 816, 832, 848, 864, 880, 896, 912, 928, 944, 960, 976, 992, 1008, 1023]
deGamma Type: float
Range: [0, 4]
DCI 曲线生成的 degamma 因子。 值越大,degamma 变换越强;反之越弱。 过大易导致动态范围失真;过小则对比度增强不足。
Usage Frequency:low
2.2
caCurve[65]* Type: int
Range: [0, 1024]
颜色调整(CA)曲线,65 点查找表。 值越大,对应区间颜色调整越强;反之,越弱。 过大易导致色彩失真;过小则颜色调整不足。
Usage Frequency:middle
[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]
caMode Type: int
Range: [0, 2]
颜色调整模式选择。 0:按亮度; 1:按饱和度; 2:按强度饱和度小值。
Usage Frequency:high
1
skinProcessEn
skinProcEn**
Type: int
Range: [0, 7]
肤色保护模式选择。 0:关闭; 1~3:自适应模式; 4:硬阈值模式; 5~7:自适应+硬阈值模式。
Usage Frequency:low
5
skinDetectStrength
skinDetectStr**
Type: int
Range: [0, 255]
适应模式肤色检测强度。 值越大,肤色检测灵敏度越高,被判定肤色区域越大;反之,灵敏度越低。 过大则肤色误判导致保护过度;过小则肤色漏检、保护不足。
Usage Frequency:low
110
sharpSkinCurveLevel
sharpSkinCurveLvl**
Type: int
Range: [0, 7]
肤色区域锐化增强曲线选择。 值越大,肤色区域细节模式影响越强;反之,越弱。 过大易导致肤色过锐失真;过小则肤色区域锐化不足。
Usage Frequency:low
0
sharpGainSkin[2]* Type: int
Range: [0, 1024]
肤色区域亮侧暗侧锐化强度。 值越大,对应锐化越强;反之,越弱。 过大易导致肤色过锐失真;过小则肤色锐化不足。
Usage Frequency:low
[122, 100]
sharpLimitSkin* Type: int[2]
Range: [0, 512]
肤色区域高频增强差值约束范围上限下限。 值越大,允许差值范围宽,肤色锐化幅度越大;反之,约束严格。 过大则约束失效、易过锐;过小则肤色锐化过度限制。
Usage Frequency:low
[88, 72]
yDownThreshold Type: int
Range: [0, 1024]
肤色检测的 Y 硬下限阈值。 值越大,Y 下限越高,被判肤色像素少;反之,下限越低。 过大则肤色漏检;过小则亮度误判肤色。
Usage Frequency:low
280
yUpThreshold Type: int
Range: [0, 1024]
肤色检测的 Y 硬上限阈值。 值越大,Y 上限越高,被判肤色像素多;反之,上限越低。 过大则高亮区误判肤色;过小则肤色漏检。
Usage Frequency:low
900
cbDownThreshold Type: int
Range: [0, 1024]
肤色检测的 Cb 硬下限阈值。 值越大,Cb 下限越高,被判肤色像素少;反之,越低。 过大则肤色漏检;过小则误判肤色。
Usage Frequency:low
60
cbUpThreshold Type: int
Range: [0, 1024]
肤色检测的 Cb 硬上限阈值。 值越大,Cb 上限越高,被判肤色像素多;反之,越低。 过大则误判肤色;过小则肤色漏检。
Usage Frequency:low
764
crDownThreshold Type: int
Range: [0, 1024]
肤色检测的 Cr 硬下限阈值。 值越大,Cr 下限越高,被判肤色像素少;反之,越低。 过大则肤色漏检;过小则误判肤色。
Usage Frequency:low
355
crUpThreshold Type: int
Range: [0, 1024]
肤色检测的 Cr 硬上限阈值。 值越大,Cr 上限越高,被判肤色像素多;反之,越低。 过大则误判肤色;过小则肤色漏检。
Usage Frequency:low
984
gradThSkin[2]* Type: int
Range: [0, 1024]
肤色区域边缘噪声、边缘细节区分阈值。 值越大,边缘判定严格,被判定边缘像素少;反之,越宽松。 过大则边缘漏检;过小则噪声误判边缘。 [16, 32]
hfMergeCurveSkin[4]* Type: int[4]
Range:元素1:[0,1024]
元素2:[0,10]
元素3:[0,1024]
元素4:[0,10]
肤色区域纹理边缘融合曲线。 元素1(T1):T1; 元素2(t2_shift):T1 偏移(T2=T1+2t2_shift); 元素3(T3):T3; 元素4(t4_shift):T3 偏移(T4=T3+2t4_shift)。 阈值越大,对应区间判定严格,融合过渡越窄;反之,越宽松。
Usage Frequency:low
[8, 5, 52, 9]
sourceStrengthSkin
eeSrcStrengthSkin**
Type: int
Range: [0, 256]
原始 Y 值通滤波结果低频融合控制,仅影响检测肤色区域。 值越大,低通结果比越高,肤色平滑;反之,原始 Y 占比越高。 过大则肤色细节丢失;过小则肤色噪声残留。
Usage Frequency:low
200
skinThreshold[6]** Type: int
Range: skinThreshold[0~1]:[0,1024]
skinThreshold[2~5]:[-1024,1023]
肤色检测阈值。 skinThreshold[0~1]:Y 下/上限; skinThreshold[2~5]:Cr/Cb 下/上限。 值越大,对应阈值严格,被判定肤色区域越小;反之,越宽松。
Usage Frequency:low
[280, 900, 355, 984, 60, 764]

3.16.3 调试流程

图3.16-2 所示,调试 state 参数示例结果。

image

左图:state=0,右图:state=1

Figure 3.16-2 调试 EE state 的示例结果

根据下表所示优先级调整 EE 配置。

Table 3.16-2 EE 调试优先级

优先级
子节 总体控制调整 边缘增强精修 补充功能
参数封装 eeStrength 边缘 锐化融合 肤色检测
CA 模块 细节 紫边
DCI 模块 噪声

步骤 1:启用边缘增强模块后,子节 I(总体控制调整流程)提供粗调,包括:

a. 总体边缘增强强度控制,按照默认参数配置eeStrength和eeSrcstrength;

b. Y 通道与 UV 通道全局调整(CA 与 DCI)按开启,刚开始调试时可先关闭。

步骤 2:总体强度对应 YUV 输入调整正确后,精修区域调整由子节 II(边缘增强精修流程)处理,对细节、边缘、噪声信号进行检测、增强合并。

a. 边缘(edgeXx):控制边缘检测强度、粒度风格。

b. 细节(detailXx):控制细节检测强度、粒度风格。

c. 噪声(gradTh 与 hfMergeCurve):决定部分分类边界。

部分配置默认参数,再具体需求调参。建议通过边缘/细节参数设置极端值,调整划分阈值参数,再分别调整边缘细节参数获得合适画面效果。

图3.16-3 所示,调试 hfMergeCurve 参数示例结果。

image

左图:hfMergeCurve=[0, 0, 0, 0],右图:hfMergeCurve=[0, 1023, 0, 1023]

Figure 3.16-3 调试 EE hfMergeCurve 的示例结果

步骤 3:信号分离后,为部分选择锐化因子:

a. sharpenCurve 与 gain 调用增强因子。可保持默认,若觉得边缘细节强度不够,再增加数值。数值过大时会引入明显黑白边。

b. sharpLimitxx 是增强上限阈值,约束最终输出。

图3.16-4 所示,调试 sharpLimit 参数示例结果。

image

左图:sharpLimit=[50, 52],右图:sharpLimit=[512, 512]

Figure 3.16-4 调试 EE sharpLimit 的示例结果

步骤 4:可补充功能流程提供两项功能提升画质:

a. 肤色检测(skinxx):对肤色与非肤色区域提供不同参数设置;

b. 去紫边(depfxx):紫边校正。

注:启用肤色检测时,可肤色与非肤色区域应用不同锐化因子。

3.16.4 调试建议功能说明

3.16.4.1 调试建议

● gradTh 越小,检测边缘完整,但噪声增加。

● 默认考虑辅助方向,即使能edgeUseAuxiDir。

● sharpLimitType 推荐使用默认值 2。

● sharpLimit 与 sharpLimitSkin 范围局部亮、最暗预设比例确定。

3.16.4.2 功能说明

CA(Color Adjustment)

CA 模块提供两种颜色调整方法。可通过 caMode 参数三种模式选择,基于亮度、饱和度两者组合调整颜色;也自定义 caCurve 进行颜色调整。

注:CA 模块用于降低饱和度。

图3.16-5 所示,调试 isCa 参数示例结果。

image

左图:isCa=false,右图:isCa=true

Figure 3.16-5 调试 EE isCa 的示例结果

DCI(Dynamic Contrast Improvement)

DCI模块支持调整亮度映射,实现改变画面动态范围效果。如图3.16-6 所示,调试 isDci 参数示例结果。

image

左图:isDci=false,右图:isDci=true

Figure 3.16-6 调试 EE isDci 的示例结果

肤色检测

由skinProcessEn控制,0关闭,1~3代表使用内置yuv阈值筛选肤色,数值越大滤波核越大;4~7代表使用skinThreshold指定的yuv阈值筛选肤色,数值越大滤波核越大。

选定肤色区域,会作用skin*为前缀边缘增强参数,可以实现肤色区域精细化细节调整。

紫边

紫边功能通过检测边缘信息,进行色彩/亮度/宽度三个维度判定,实现紫边去除。

  • 色彩:通过depfLimit[4]设定,数值代表yuv域坐标,形状矩形,一般调整;

  • 亮度:通过depfDetectLumaTh,depfDetectLumaDiff设定。先默认值设定,若效果不佳,可以将depfDetectLumaTh设置成较值,再调整depfDetectLumaDiff的实现紫边去除(可能去除紫边其他蓝紫色区域),再慢慢增加depfDetectLumaTh的实现合适紫边效果。

  • 宽度:通过depfDetectRange设定,建议保持默认7。

实现紫边检测后,需要可以通过调整depfFixStrength选择紫边结果加强度,可以从256开始逐渐降低数值,实现去除紫边边缘过度自然效果。

如图3.16-7 所示,调试 isDePurple 参数示例结果。

image

左图:isDePurple=false,右图:isDePurple=true

Figure 3.16-7 调试 EE isDePurple 的示例结果

3.17 Color Processing

介绍 ISP 中色彩处理(Color Processing,CPROC)模块调试方法。

3.17.1 功能描述

CPROC 模块旨在通过在 YUV 域改变图像色调(hue)、对比度(contrast)、饱和度(saturation)与亮度(brightness)来调整亮度色度值。它通过处理 Y 通道改变图像对比度亮度,通过处理 UV 通道改变饱和度色调。

CPROC 模块重要参数为 saturation、hue、contrast、brightness。为说明这些概念,先引入 HSB 色彩模型。HSB 色彩模型基于人眼感知描述色彩三个基本特性:色调(H)、饱和度(S)、亮度(B)。HSB 色彩模型结构如下。对比度一点最大亮度最小亮度比。在 CPROC 中,色调、饱和度、亮度、对比度在 YUV 域改变。

image

Figure 3.171HSB 色彩模型

3.17.2 关键参数

表列出了 CPROC 模块调试参数。

注:默认情况参数在 manual 模式可用。标记星号(*)的参数在 auto 模式可用;标记双星号(**)的参数在 auto 模式可用。

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
0:禁用模块;1:在 manual 模式使模块;2:在 auto 模式使模块。
Usage Frequency:high
0
contrast* Type: float
Range: [0, 1.992]
对比度,Y' = (Y − 256) × contrast + 256。
Usage Frequency:high
1
bright* Type: float
Range: [-127, 127]
亮度,Real Bright = bright − 256 × (contrast − 1)。
Usage Frequency:high
0
saturation* Type: float
Range: [0, 1.992]
饱和度,UV' = 512 + (UV − 512) × saturation。
Usage Frequency:high
1
hue* Type: float
Range: [-90, 90]
HSB 域旋转角度。
Usage Frequency:high
0
useOutConvMatrix Type: bool
Range: {true, false}
用户指定外部 RGB2YUV 转换矩阵开关。true:使用用户指定外部 RGB2YUV 转换矩阵;false:使用内部 RGB2YUV 转换矩阵。
Usage Frequency:high
false
rgbToyuvMatrix[9] Type: float
Range: [-2, 1.99]
外部 RGB2YUV 转换矩阵,需与 yuvRange 匹配。
Usage Frequency:high
[0.299, 0.587, 0.114, -0.168736, -0.331264, 0.5, 0.5, -0.418688, -0.081312]
gamut Type: int
Range: [0, 2]
色域模式:0=BT.601,1=BT.709,2=BT.2020。
Usage Frequency:high
0
yuvRange Type: int
Range: [1, 2]
RGB→YUV 转换矩阵。1=limited range [16, 240];2=full range [0, 255]。
Usage Frequency:high
2

Table 3.171 CPROC 调试参数(8-bit)

3.17.3 调试建议功能说明

  • CPROC 通常用于调试全局对比度、亮度、饱和度色调。

  • contrast 建议取值 1.1 至 1.3。

  • saturation 建议取值 1.0 至 1.3。

  • 建议微调。

3.17.4 示例结果

contrast

下图所示调试 contrast 参数示例结果。

image

Figure 3.172CPROC 调试 contrast 的示例结果

bright

下图所示调试 bright 参数示例结果。

image

Figure 3.173CPROC 调试 bright 的示例结果

hue

下图所示调试 hue 参数示例结果。

image

Figure 3.174CPROC 调试 hue 的示例结果

saturation

下图所示调试 saturation 参数示例结果。

image

Figure 3.175CPROC 调试 saturation 的示例结果

3.18 CNR(Chrominance Noise Reduction)

3.18.1 功能描述

CNR 模块用于处理 YUV 域彩色噪声。它将 YUV 域彩色噪声分为以下几类:

● 低频噪声:大面积噪声。

● 高频噪声:颗粒状噪声。

● 中频噪声:介于低频高频之间噪声区域。

图3.18-1 所示,为滤除降低彩色噪声设计金字塔结构。

image

Figure 3.18-1 CNR 金字塔结构

3.18.2 关键参数

表列出了 CNR 模块调试参数。

注:默认情况下,参数手动模式可用。带星号(*)的参数自动模式可用;带双星号(**)的参数自动模式可用。

Table 3.18-1 CNR 参数

Parameter Type / Range Description Default Value
state Type: int
Range: {0, 1, 2}
CNR(色度降噪)模块工作模式开关。 0:关闭模块; 1:手动模式使能,参数用户配置; 2:自动模式使能,由内部算法场景适应。
Usage Frequency:low
2
cSigmaLayer[3]
cSigmaLayer
cSigmaLayer1

cSigmaLayer2**
Type: float
Range: [1.0, 96.0]
金字塔各层滤波强度,对应三组 sigma 值:cSigmaLayer(底层,处理高频颗粒噪声)、cSigmaLayer1(中层,处理中频噪声)、cSigmaLayer2(顶层,处理低频大面积噪声)。sigma 值越大,对应滤波强度越强,该频段色度噪声抑制彻底,反之越弱。 过大则色度细节过度平滑,导致色彩边界发虚、伪色;过小则对应频段噪声残留明显。
Usage Frequency:high
[16.0, 16.0, 12.0]
cnrStrength* Type: uint8_t
Range: [0, 128]
降噪强度,决定降噪结果合并输入图像程度。 值越大,降噪结果比越高,色度噪声抑制越强,反之原始色度信息保留多。 过大则色度信息损失,画面色彩趋于平淡、发灰;过小则降噪效果明显,彩色噪声残留。
Usage Frequency:high
128
textureMaskSelect
textureMask**
Type: uint8_t
Range: [0, 8]
纹理金字塔强度掩码选择。 值越大,纹理保护越强,平坦区域滤波越深纹理区域保留多;反之值越低,整体滤波强度越高、纹理保护越弱。 过大则平坦区域噪声抑制不足,残留明显;过小则纹理区域误判噪声过度平滑。
Usage Frequency:medium
0

3.18.3 调试流程

推荐以下流程调试 CNR 模块:

步骤 1:设置cnrStrength = 128, textureMaskSelect = 0。

步骤 2:cSigmaLayer[3]从默认参数开始,按图像中彩噪形态,分别增加对应处理系数,直到画面明显彩噪。

图3.18-2 所示,调试 state 参数示例结果。

image

左图:state=0,右图:state=1

Figure 3.18-2 调试 CNR state 的示例结果

图3.18-3 所示,调试 cSigmaLayer 参数示例结果。

image

上:[16,16,12],右上:[28,16,12],左下:[28,28,12],右下:[28,28,24]

Figure 3.18-3 调试 CNR cSigmaLayer 的示例结果

3.18.4 调试建议功能说明

● 在 cSigmaLayer 中,最低的cSigmaLayer[0]参数处理颗粒噪声,层数越高,需滤除噪声面积越大。同时,各层滤波强度随该层 sigma 值增大增强。通常,下层取值不得大于上层取值。

● cnrStrength 表示输入图像合并降噪强度,值越强度越高,128代表完全使用降噪结果。

● textureMaskSelect 表示纹理金字塔强度选择,值越强度越高。

● 默认 cnrStrength(128)和 textureMaskSelect(0)设最大强度调试。

3.19 Auto Focus(AF)

3.19.1 功能描述

自动对焦(AF, Auto Focus)模块通过控制镜头马达移动实现相机自动对焦。AF 功能调试频度取决于使用场景:例如安防摄像头通常采用手动对焦,此类场景下 AF 调试需求低;而消费类、运动场景充分调试 AF。

AF 提供以下两种自动对焦方法:

● 相位检测自动对焦(PDAF):粗搜索。通过相位差检测失焦强度,并利用失焦转换系数相位差转换马达焦距。

● 对比度检测自动对焦(CDAF):精搜索。在最小最大焦距范围移动马达,形成清晰度焦距抛物线,由抛物线顶点找到最佳焦距最高清晰度。

AF 模块支持 CDAF 与 PDAF 两种技术,混合对焦整体流程如下所示。

image

Figure 3.191 AF 混合对焦处理流程

调试阶段建议:

  • 第一阶段:不需要调试 AF 模块,但手动调节对焦满足拍照要求,镜头驱动启动测试通过。

  • 第二阶段:调试 AF 功能适应不同场景。

  • 第三阶段:调试 AF 前验证马达精度、速度、可重复性稳定性。

3.19.2 关键参数功能说明

3.19.2.1 AF基础调试

表列出使能 AF 及设置马达焦距参数。

Table 3.191基本 AF 参数

Parameter Type / Range Description Default Value
enable Type: bool
Range: {true, false}
是否使能 AF。
Usage Frequency:high
true
maxFocal Type: uint16_t
Range: [0, 1023]
马达最大焦距。
Usage Frequency:high
600
minFocal Type: uint16_t
Range: [0, 1023]
马达最小焦距。
Usage Frequency:high
300

3.19.2.2 AF模式选择

PDAF 与 CDAF 两种模式用于对焦调整,可用模式如下:

  • PDAF 模式:仅使用 PDAF。对焦过程包括初始化、搜索、锁定等待。

  • CDAF 模式:仅使用 CDAF。对焦过程包括初始化、搜索、跟踪、锁定等待。

  • 混合模式:同时使用 PDAF 与 CDAF。对焦过程经历 PDAF 初始化搜索,再经 CDAF 搜索、跟踪、锁定等待。

通过下表参数选择对焦模式。

Table 3.19-2 模式选择参数

Parameter Type / Range Description Default Value
mode Type: enum
Range: {CAMDEV_CDAF_INDIVIDUAL_MODE, CAMDEV_PDAF_INDIVIDUAL_MODE, CAMDEV_PDAF_CDAF_HYBRID_MODE}
选择自动对焦模式。CAMDEV_CDAF_INDIVIDUAL_MODE(默认):CDAF 模式;CAMDEV_PDAF_INDIVIDUAL_MODE:PDAF 模式;CAMDEV_PDAF_CDAF_HYBRID_MODE:混合模式。
Usage Frequency:high
CAMDEV_CDAF_INDIVIDUAL_MODE

3.19.2.3 AF解锁条件

AF 模块锁定后,是否解锁取决于当前锁定清晰度差异。

● 当清晰度差异超过 cStableTolerance 且 deFocusFrameNum=0 时,AF 直接解锁重新启动 CDAF 或 PDAF 搜索。

● 当清晰度差异超过 cStableTolerance 且 deFocusFrameNum>0 时,AF 保持等待,仅清晰度连续稳定达到 deFocusFrameNum 指定数后解锁重启搜索。

Table 3.19-3 AF 解锁参数

Parameter Type / Range Description Default Value
cStableTolerance Type: float32_t
Range: (0, 10)
锐度波动阈值。若 AF 已锁定锐度波动超过阈值,AF 认为当前失焦转为解锁。值过提高解锁灵敏度,即使锐度轻微变化解锁 AF;值过可能导致 AF 反复解锁。
Usage Frequency:high
0.6
deFocusFrameNum Type: uint8_t
Range: [0, 20]
AF 失焦重新对焦前锐度波动保持稳定数。值越大越容易确保 AF 重新对焦物体稳定。
Usage Frequency:high
3

3.19.2.4 AF运动检测

PDAF/CDAF 搜索期间,可用下表参数检测场景是否存在运动。若检测运动,则取消当前 PDAF/CDAF 搜索触发新一轮搜索。

Table 3.19-4 AF 运动检测参数

Parameter Type / Range Description Default Value
cMotionThreshold Type: float32_t
Range: (0, 10)
检测场景运动阈值。当前一帧亮度超过阈值视为检测运动,此时当前 PDAF/CDAF 搜索结束启动新一轮 CDAF/PDAF 搜索。
Usage Frequency:medium
2.0

3.19.2.5 AF硬件统计

AF 的硬件统计模块图像划分多个 ROI。硬件统计模块 V1 的 ROI 数为 9,V3 的 ROI 数为 225。每个 ROI 的清晰度通过 FIR 与 IIR 滤波计算,权重由 weightWindow(V1)与 afmV3WeightWindow(V3)指定。整幅图像清晰度各 ROI 加权清晰度和。修改 weightWindow[9] 与 afmV3WeightWindow[225] 数组各 ROI 权重,可优先对焦某些 ROI 区域。

AF 控制窗口选择(CDAF):硬件 AF 模块根据软件指令控制镜头移动,允许软件选择图像特定窗口感兴趣区域进行对焦测量。窗口大小通过寄存器配置,最支持 3 个 ROI 区域,默认 3 列,可调整每个 ROI 的 LT/RB 坐标。CDAF ROI 配置如下图。

image

Figure 3.19-2 CDAF ROI 区域配置3.193

AF 控制(PDAF):最配 48 个窗口,将指定 ROI 区域平均分配为 48 个窗口,每个窗口权重配。软件支持 Auto 模式(默认拆分 3×3 窗口,权重默认)与 Manual 模式。

IIR/FIR:AF 中 IIR/FIR 滤波器设计流程如下图。IIR 滤波器将 ROI 区域分成 15×15 窗口,可通过 blk_xpos 与 blk_ypos 调整 ROI 偏移位置。

image

Figure 3.19-4 IIR AF 处理流程3.195

image

Figure 3.19-6 IIR AF ROI 窗口配置

Table 3.19-5 清晰度计算参数

Parameter Type / Range Description Default Value
weightWindow Type: float[9]
Range: [0, 255]
硬件统计模块 V1 的 ROI 权重数组。
Usage Frequency:medium
元素为 1
afmV3WeightWindow Type: float32_t[225]
Range: [0, 255]
硬件统计模块 V3 的 ROI 权重数组。
Usage Frequency:medium
元素为 1

3.19.2.6 PDAF统计计算

PDAF 搜索需要 ROI 的相位差。ROI 可用户自定义,或由 PDAF 统计计算找到默认 ROI。若使用默认 ROI,将找到图像所有相位差最小作为 ROI;若使用用户定义 ROI,可用 pdRoiIndex 参数选择某个作为 ROI。

X5 中 PDAF 的 PD Split 与 PD Calibration 软体实现流程如下图,支持 type2 模式(sensor 内部将 PD 信息拆分完成输出处理)。

image

Figure 3.19-8 PDAF 软体实现流程

Table 3.19-6 PDAF 统计计算参数

Parameter Type / Range Description Default Value
pdRoiIndex Type: uint8_t
Range: [0, 48]
为 PDAF 对焦选择的 ROI 区域。
Usage Frequency:medium
0

3.19.2.7 PDAF 聚焦设定

仅当 PDAF 置信度大于 cPdConfThreshold 设置阈值时,才进行 PDAF 对焦。阈值越高,对图像置信度要求严格,越难进入 PDAF 对焦;但阈值过低可能相位检测偏移计算可靠导致对焦错误。

Table 3.19-7 PDAF 对焦参数

Parameter Type / Range Description Default Value
cPdConfThreshold Type: float
Range: [0, 1023]
PDAF 置信度阈值。
Usage Frequency:medium
300

3.19.2.8 PDAF 搜索设定

下表参数控制 PDAF 搜索速度。若相位差绝对值在 pdStableCountMax 指定连续数内小于 pdShiftThreshold,则 PDAF 计算马达移动距离判定正确,随后:PDAF 模式锁定,混合模式进入 CDAF 搜索。

Table 3.19-8 PDAF 搜索参数3.1914

Parameter Type / Range Description Default Value
pdShiftThreshold Type: float32_t
Range: (0, 1)
相位差绝对值阈值。值越大 PDAF 搜索快,但无法保证 PDAF 稳定性。
Usage Frequency:medium
0.1
pdStableCountMax Type: uint8_t
Range: [1, 10]
判定 PDAF 对焦是否完成数。值越小 PDAF 搜索快,但无法保证 PDAF 稳定性。
Usage Frequency:medium
2

3.19.2.9 CDAF算法设定

CDAF 爬坡算法计算清晰度焦距抛物线顶点。通过 cPointsOfCurve 控制计算速度:值越计算越慢、最佳对焦位置越准;值越小步长越大、计算快,但可能步长过大最佳对焦位置导致对焦不准。

Table 3.19-9 爬坡参数3.1916

Parameter Type / Range Description Default Value
cPointsOfCurve Type: uint8_t
Range: [3, 20]
CDAF 爬山算法步数。
Usage Frequency:low
12

3.19.2.10 混合对焦设定

多数情况下 PDAF 与 CDAF 共同用于混合模式,但通过下表参数配置以下特殊情况:

  • 仅用 PDAF 不用 CDAF:通过 accurateFocusEnable 与 accurateFocusStep 配置 PDAF 搜索是否使用 CDAF 及 CDAF 搜索速度。若关闭 CDAF,混合模式等同 PDAF 模式。

  • 仅用 CDAF 不用 PDAF:当 PDAF 搜索期间置信度连续若干保持为 0 时,判定 PDAF 搜索失败,AF 模块跳过 PDAF 直接开始 CDAF 搜索。可通过 lossConfidenceFrameNum 控制 PDAF 搜索判定失败阈值。

Table 3.19-10 混合模式参数3.1918

Parameter Type / Range Description Default Value
accurateFocusEnable Type: bool
Range: {true, false}
混合模式是否在 PDAF 搜索使能 CDAF 搜索。设为 false 时,PDAF 搜索完成对焦搜索停止。
Usage Frequency:low
false
accurateFocusStep Type: uint8_t
Range: [1, 20]
混合模式使能 CDAF 搜索时,CDAF 每次搜索步数。值越小 CDAF 搜索快,对焦结果越差。
Usage Frequency:low
5
lossConfidenceFrameNum Type: uint8_t
Range: [1, 20]
混合模式下 PDAF 失去置信度等待数。值越大,混合对焦模式下越不易跳过 PDAF 搜索。
Usage Frequency:low
3

3.19.3 调试流程

第一阶段: AF 功能无需调试,可在 VTuner 中将 mode 设为 manual,手动设定镜头位置满足拍照要求。Manual AF 示意图如下。

image

Figure 3.19-10 Manual AF 示意图3.1911

第二阶段:摄像头水平放置方位开始 AF 基本功能调试,步骤如下:

1。将 ISO12233 解析力卡或 SFR 梯度放置在 1000 lux 照度环境用于识别图像清晰度,摄像头图卡之间距离要求设置。

2。在 VTuner 中将 AF_mode_id 设为 AF_calibration,该模式命令窗口输出镜头位置锐化参数。

image

Figure 3.19-12 镜头位置(左)与锐化参数(右)3.1913

3。用画图工具镜头位置锐化参数同一坐标系画出关系图,获得无穷远处镜头位置锐化对应关系。

image

Figure 3.19-14 无穷远对焦反应曲线3.1915

4。从对焦反应曲线可见,在 190 LP 位置之前锐化平稳,算法识别理想位置识别锐化移动镜头变化。重复多次确定 LP 值准确性,通常 1% 偏差接受。

5。将无穷远处镜头位置 LP 降低 15% 获取远端对焦镜头位置(无穷远 LP×0.85),写入对应配置。

6。获取微距对焦位置:在 1000 lux 下用解析力卡,摄像头图卡距离 10 cm,重复上述步骤得到微距对焦反应曲线。

image

Figure 3.19-16 微距对焦反应曲线3.1917

7。从曲线获取锐化最高点对应 LP,写入 AF_lms 微距位置。微距 LP 值增加 10% 得到近端焦点 LP(微距 LP×1.1),填入 Calibration 对应位置。

8。重复以上操作获取镜头朝上镜头朝下两种位置的 LP 值,填入 dynamic_calibration。AF 基本校正参数如下表。

Table 3.19-11 AF 基本校正参数表3.1920

Parameter name Description
Down_FarEnd Downward orientation FarEnd.
Down_NearEnd Downward orientation NearEnd.
Up_FarEnd Upward orientation FarEnd.
Up_NearEnd Upward orientation NearEnd.
Horizontal_FarEnd Horizontal orientation FarEnd.
Horizontal_NearEnd Horizontal orientation NearEnd.

AF 控制操作扩展校正参数如下表。

Table 3.19-12 AF 扩展校正参数表3.1922

Parameter name Description
Step_Number The total steps from FarEnd to NearEnd.
Skip_frames_in Number of frames be skipped when focus in.
Skip_frames_out Number of frames be skipped when focus out.
Caf_stable_th CDAF stable threshold.
Caf_trigger_th CDAF trigger threshold, 需调试检测实际场景改变。
Pdaf_stable_th PDAF stable threshold.
Pdaf_trigger_th PDAF trigger threshold.
Far_motor_pos Far end motor position.
Near_motor_pos Near end motor position.

第三阶段: 第二阶段完成 auto focus 调试后,基本无需重新调试,AF 功能用于各种场景对焦。可在 VTunerClient 中选择以下模式:

1.AF_auto_single:每次场景变换手动对焦选择模式。

2.AF_auto_continuous:系统持续刷新对焦数据,适用持续对焦场景。