版本

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:系统持续刷新对焦数据,适用于需持续对焦的场景。