K230 ISP图像调优指南
1. K230 ISP图像调优概述
在进行图像调优时,亮度、色彩、对比度、清晰度这几个方面是我们的主要关注点。通过对sensor和镜头的标定以及ISP子模块的联合调优 做到图像的整体亮度合理,图像中的色彩还原准确,图像的清晰度好,没有明显噪声,图像的对比度高,整体看上去要比较通透。
总体图像调优流程如下图所示:
K230 ISP pipeline如下图所示:
请注意:
- K230 HDR模式下,K230 CSI(Camera serial interface)模块不支持Hsync在Vsync之前的sensor数据模式,且各帧(L/S/VS)Vsync拉高(有效数据输出)时不能有交叠。
- 使能3DNR中的TNR时,ISP的要求sensor Hblank不能小于180 pixel clocks(推荐设置为不小于256 pixel clocks),建议:Frame length – Active lines >=92 lines。
2. 标定
2.1 概述
使用标定工具(K230ISPCalibrationTool.exe)完成对BLC、LSC、CC、AWB、Noise Profile、CAC这6个ISP模块的参数标定功能。
模块的标定顺序如下:
在使用标定工具(K230ISPCalibrationTool.exe)前,需要用户预先安装MATLAB Runtime(R2023a)。下载地址:https://ssd.mathworks.com/supportfiles/downloads/R2023a/Release/0/deployment_files/installer/complete/win64/MATLAB_Runtime_R2023a_win64.zip
标定工具的主界面如下图所示。
点击相应的模块按钮即可直接跳转至各模块的标定界面开始标定。
2.2 Black level correction
2.2.1 黑电平标定的原理及意义
模拟信号很微弱时,有可能不被A/D转换出来,导致光线很暗时,图像细节丢失。因此,Sesnor 会在A/D转换前,给模拟信号一个固定的偏移量,保证输出的数字信号保留更多的图像细节。黑电平校正模块就是通过标定的方式,确定这个偏移量的具体值。后续的ISP处理模 块,需要先减掉该偏移值,才能保证数据的线性一致性。如果事先未获取到sensor的黑电平参数,或者需要获得更精确的黑电平数值,就进行黑电平标定。
2.2.2 黑电平标定采集RAW图
在进行黑电平标定时,采集RAW图的步骤如下:
- 模组在一个全黑的环境下(如看用黑布盖住镜 头),确保没有光进入sensor;
- 将sensor的曝光模式设置为手动模式;
- 在不同Gain值(1x,2x,3x,4x)与不同积分时间(0.01ms,0.02ms,0.03ms)组合下采集12张RAW图;
- 并按照命名规则保存至文件夹下,文件夹的命名形式:Gain_4_T_0.03(Gain_4_T_0.03 表示 exposure gain = 4,exposure time = 0.03s),其他的曝光时间和Gain的命名形式依次类推。
2.2.3 使用标定工具开始标定
当点击了主界面的“Black level correction”后,工具将弹出如图所示对话框。
操作步骤:
- 点击“Select”按钮选择保存的RAW图文件夹;
- “Align Pos”文本框:填写RAW图的bayer pattern;
- 设置输入输出的Bit Width;
- 设置分辨率:图像的宽高;
- 点击“OK”按钮,进行标定。
其中:
- Combine Channel文本框:如果勾选,表示用户得到的BLC是R、Gr、Gb、B四通道合并后的测量值。
- Normal File Out / Extended File Outy:如果勾选 Normal File Out,表示输出的是blc_para.txt;如果勾选Extended File Out,表示R、Gr、Gb、B通道的BLC将按不同的曝光时间和Gain分别输出。
标定完成后,Black Level vs Integration Time的图表如下图所示。
2.3 Lens shading Correction
2.3.1 LSC标定的基本原理及意义
LSC标定目的就是为了消除由镜头光学折射不均匀导致的画面暗角。在Lens shading现象中,中心目标点亮度到边角的亮度衰减符合余弦四次方定律,通过标定结果可以有效反应出亮度衰减趋势,使用32x16的网格存储标定结果,再把图像各区域的亮度恢复至目标点亮度。LSC标定包括luma shading和color shading的标定。因为不同色温下的 color shading特征曲线是不相同的,所以为满足在不同色温下的 color shading 的校正要求,需要在不同色温下对 LSC 进行标定校准。
2.3.2 LSC标定采集RAW图
采集RAW图前需要注意的事项:
- 调节AE目标亮度设置,让图像的中心亮度平均值为最大值(如8bit:255)的80%左右
- LSC采集对象的光源环境要求必须是亮度分布平坦且均匀的光源,同时采集对象必须保持平滑无纹理,所以可选择DNP灯箱作为 LSC 标定采集RAW图的场景。
在进行LSC标定时,采集RAW图的步骤如下:
- 控制设备的镜头对准DNP灯箱目标区域,并保证环境不被干扰;
- 打开DNP灯箱,色温光源切到D65下,灯箱照度合适;
- 采集一张RAW图;
- 切换DNP灯箱的光源(D50、TL84、F12、A),重复步骤2-3。
2.3.3 使用标定工具开始标定
当点击了主界面的“Lens Shade correction”后,工具将弹出如图所示对话框。
具体操作步骤:
- 在区域2中,选择RAW图的bayer pattern排序、填入图像宽高和bit位宽,选择所需lsc校正的类型(Color Shading或是Luma&Color Shading),在CCT下拉栏中选择对应的色温光源,并在offset Subtration栏中填入各通道Black Level Offset值;
- 点击区域1的“load image”按钮导入待标定的RAW图;
- 区域3为lsc网格结点设置。先确定网格的数量,K230 ISP LSC硬件统计为32x16网格,因此可选择“33Full x 17Symm knots”进行标定;若准备使用ISP ALSC功能,则勾选“ALSC uniform…”;若勾选”Automatic initial knot positioning”,则在auto.json中不能使能ALSC功能。
- 区域4可选择中心/边角的最大校准比率;
- 区域5可设置边角的补偿比率(如设置为80%,则表示需要校准的边角校准后的亮度为中心亮度的80%就行。);
- 其他设置保持默认配置即可;
- 点击“Start”开始标定,并保存LSC数据;
- 区域6可选择标定好的LSC数据应用至图像,预览标定效果,并点击“save image to file”保存每个光源下的Png图片。
注意:在步骤5中设置补偿比率时,应当根据镜头的shading严重情况来定。当镜头shading很严重的时候,画面四个角补偿的增益很大,容易导致四角噪声变大。这时就要减小补偿比率,来达到优化四角噪声的目的。
2.4 Color Correction
2.4.1 CCM标定原理
CCM 标定的原理是用sensor采集的24 色卡色块的实际颜色信息与其期望值对比,计算出3x3的CCM 矩阵。CCM 的 3x3 矩阵将 sensor 的 色彩空间转换到 sRGB 标准的色彩空间。
2.4.2 CC标定采集RAW图
在进行CC标定时,采集RAW图的步骤如下:
- 可将24色卡放置标准灯箱内壁(镜头正对色卡采集RAW图)或将24色卡放置灯箱的底部(镜头与24色卡成45度角采集RAW图);
- 打开标准灯箱,选择D65光源,调节灯箱照度;
- 调整镜头到24色卡的距离和位置,保证24色卡占图像范围的2/3左右;
- 调节AE目标亮度设置,保证RAW图平均亮度在50左右;
- 采集一张RAW图;
- 切换光源(D50、TL84、F12、A),重复步骤5;
- 保持镜头位置不动,将24色卡移开,再采集5种光源下的灯箱内侧灰壁背景RAW图。
2.4.3 使用标定工具开始标定
当点击了主界面的“Color Correction”后,工具将弹出如图所示对话框。
具体操作步骤如下:
- 在区域1设置好RAW图的宽高、bit位宽、Black level Offset、bayer pattern;
- 点击“Load”菜单,依次导入色板颜色参考文件CC_Standard.cxf(Load sRGB References, 该文件位于calibration tool的Canaan.Calibration.Samples\Data\目录下)、24色卡RAW图(Load Color Checker Image)、灰壁背景RAW图(Load Background Image); 导入参考色板,除了通过“Load sRGB References”导入CC_Standard.cxf之外,还可以通过“Load”菜单下的“Load Lab-Customer References”来获取客户自定义的参考色板Lab值;或是通过“Load”菜单下的“Load References Image”,调入参考色板图像,然后在“Function”菜单下选择“Select Reference Color Check”,通过移动鼠标控制十字线,让其分别依次位于给出色板的上下左右四角四个色块的中心位置,依次点击鼠标后即可完成参考色板区域的指定。
- 点击“LSC”按钮,导入标定好的LSC参数文件;
- 配置标定参数;
- 设置gamma
- 勾选CIELAB参考
- 配置24色块权重
- 设置偏好光源
- 设置输出饱和度,默认为1
- 在区域3的下拉键选择选取24色块的方式(有自动、半自动、手动三种模式); 在半自动模式下,可通过移动鼠标控制十字线,让其分别依次位于色板图的上下左右四角四个色块的中心位置,依次点击鼠标后即可完成参考色板区域的指定。
- 点击“Caibrate”开始标定。
2.5 Auto White Balance
2.5.1 AWB标定的基本原理及意义
AWB 标定,即根据sensor在数个标准光源下的白点特征(R/G, B/G),计算最佳普朗克拟合曲线和色温拟合曲线。AWB标定的目的是使相机能够自动识别和适应各种色温光源条件,以保证白色和其他颜色在图像中的准确再现。
2.5.2 使用标定工具开始标定
当点击了主界面的“Auto White Balance”后,工具将弹出如图所示对话框。
具体操作步骤如下:
-
点击“file”按钮,导入sensor光谱灵敏度文件,如下图所示;
注:若用户手上没有自己使用的sensor光谱灵敏度文件,用工具包里默认的OV2775_sensitivity.txt(该文件位于calibration tool的Canaan.Calibration.Samples\Data\目录下)即可。因为现在AWB标定已经不依赖于sensor光谱灵敏度文件,但为了不影响后面操作 ,所以导入任意一个sensor光谱灵敏度文件就可以。
-
点击“illuination”按钮,导入光源文件CIE_Illuminants.cxf(该文件位于calibration tool的Canaan.Calibration.Samples\Data\目录下),并选择需要标定的光源(至少3个),如图所示。点击“确定”按钮,各光源的光谱发布将在如图所示的左边展示,并通过下拉键把各光源分为室内光源和室外光源。
-
点击“AWB V2+ Calibration”按钮(在旧版本的calibration tool中,请点击“Start Calibration”按钮),根据如图红框中的所示,选择CC标定生成的各光源的参数文件;
-
勾选“White Points Evalute”框,选择一张图片用于白点预估;
-
点击“Gain Region Modifier”按钮,选择在LSC标定中保存的各光源的png图片,如图所示,点击“OK”进入下一步;
-
定义增益多边形的起点范围大小,如图所示,点击“确定”按钮,进入下一步;
-
通过红框区域的按钮手动调整橙色框(近白区)和黑色框(落在黑色框里的全部识别为白点)的范围,调整黑色框的范围包含选的所有光源白点,如图所示。保存数据,如果测试不通过,再来重新调整多边形的范围。
2.5.3 AWB参数K_Factor的标定
在AWB算法中,环境为outdoor的判别为: Exp*K_Factor <=0.12(Exp为曝光量)
。
比如以2000 lux为outdoor与transition的环境照度分割点,获取对应该照度的曝光值(ET * gain), 则可计算:K_Factor = 0.12 / (ET*gain)。
2.6 Noise Calibration
2.6.1 Noise Profile标定的原理及意义
Noise Profile 标定涉及到对sensor在不同条件下产生的噪声特性进行定量测量和描述。这是因为,当sensor在不同的光线、温度或ISO设置下工作时,它们会产生不同类型和量级的噪声。了解这些噪声的特性是进行有效噪声降低或修正的关键。
2.6.2 Noise Profile标定采集RAW图
在进行CC标定时,采集RAW图的步骤如下:
- 将黑白渐变测试卡放置标准灯箱内壁,打开灯箱选择D50色温光源;
- 关闭AE,改为手动曝光模式,采集两组RAW图,每组30张;
- 亮组:调节灯箱亮度,保持曝光时间,保持gain 1x不变,让渐变卡黑区域处于中间灰度值;
- 暗组:调节灯箱亮度,保持曝光时间,保持gain 1x不变,让渐变卡白区域处于中间灰度值。
2.6.3 使用标定工具开始标定
当点击了主界面的“Noise Calibration”后,工具将弹出如图所示对话框。
具体操作步骤如下:
- 设置RAW图的宽高、bit位宽、Black level Offset;
- 点击“flie”按钮,导入亮暗两组RAW图系列;
- 点击“ROI”按钮,可设置图片的ROI;
- 调整参数。对于Lowlight直方图,取Lower range到Split point的直方图区域;对于Highlight直方图,取Split point到Higher ranger的直方图,两者叠加区域,应可基本涵盖0~255的所有值区间(8bit位宽)。对于Split point和high range值点的选取,应该让hightlight和lowlight的保留区域符合泊松分布。若设置 了black level offset,则Lower range >= black level;
- Gamma correction和Model Fitting无需设置;
- 点击“Evaluate Measures”;
- 再点击“Fit to Model”,完成Noise标定,保存结果。
2.7 Chromatic Aberration Correction
2.7.1 CAC标定的原理及意义
色差是一种常见的光学缺陷,出现在镜头无法使所有颜色的光线都汇聚在相同的焦点上。这通常导致图像边缘出现红绿或蓝紫的色彩偏移。为了纠正这种偏移,我们需要进行 CAC 校正。通过分析捕获的图像数据,可以建立一个数学模型来描述色差。一旦模型建立,可以确定纠正参数,这些参数将用于纠正色差。
2.7.2 CAC标定采集RAW图
在进行CAC标定时,采集RAW图的步骤如下:
- 将棋盘格或点阵图放置标准灯箱内壁,打开灯箱选择D50色温光源;
- 调整AE设置,让黑块点的最小值需要大于BLC值,白区最大值不要超过208;
- 采集一张RAW图保存。
2.7.3 使用标定工具开始标定
当点击了主界面的“Chromatic Aberration Correction”后,工具将弹出如图所示对话框。
具体操作步骤如下:
-
点击“Demosaic&Filter”按钮,设置好bayer pattern格式;
-
点击”load image“按钮,加载RAW图,在预览窗口即可显示图像;
-
设置“Demosaic&Filter”界面下的参数;
因为CAC模块在demosaic之后,所以工具先在这里实现了一个简单的demosaic功能。
- ISP_demosaic_threshold:阈值的默认值设为4。设置值越高,边缘检测算法检测到的边缘越少,较低的值会导致检测到更多的边缘,值255表示边缘检测被完全禁用。
- Simulate 2 additional Line Buffers:允许用户扩展垂直偏移。这允许将垂直矢量剪裁设置为+-3。在这种情况下,不执行降低色度的滤波,默认不勾选。
- Filter stage1 select:
- Sharpen Level:
- Denoise Level:
- Lum_weight Off:允许停用过滤器算法的一个特殊功能。该特征有助于抑制暗区域中比亮区域中更强的噪声。由于非线性伽马校正,在处理链中,对比度和噪声在暗区域被强调,而在亮区域被衰减。为了补偿这一点,在将纹理参数与阈值进行比较之前,使用从5x5内核的平均亮度导出的函数对纹理参数进行加权。默认不勾选,图像预览效果噪声小。
-
点击”Color Correction“按钮,设置该界面下的参数;
- 勾选”ISP_bls_enable”,设置正确的BLC;
- 勾选”Auto White-Balance”;
- 设置CCM;
- global gain 默认设置为1.0。
-
点击”Gamma“按钮,设置gamma曲线,默认设置为gamma 2.2;
-
点击”LSC“按钮,然后再点击”Load parameters“,加载对应光源D50下的LSC标定参数,并勾选”Enable”;
-
点击”CA Estimate“按钮,勾选”CA_Estimate”框,点击”Process”运行;
-
点击”CAC“按钮,可从该界面下看到标定结果。
3. 模块介绍
3.1 BLS
3.1.1 功能描述
减去黑电平的偏移值,才能保证数据的线性一致性。
3.1.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
bls_enable | bool | BLS使能开关 |
bls | int bls[4] 0~4095 | 四通道的黑电平补偿值,设置数值基于ISP 12bits |
3.1.3 调试策略
虽然支持四通道单独的黑电平补偿值,但还是建议使用相同的值。
3.2 LSC
3.2.1 功能描述
在K230中LSC算法使用32x16网格的方式对图像进行校准。在RAW图数据处理过程中,LSC算法将图像分成32x16个子块并对RAW图的四个通道进行处理。
3.2.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | LSC使能开关 |
matrix | matrix[4] [1089] | R、Gr、Gb、B四通道的Lens shading校准参数,从标定文件获得 |
x_size | xSize[32] | x轴每两个网格结点的距离,从标定文件获得 |
y_size | ySize[16] | y轴每两个网格结点的距离,从标定文件获得 |
3.3 Dgain
3.3.1 功能描述
ISP的数字增益主要用于提升图像的亮度。
3.3.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | ISP数字增益的使能开关 |
digital_gain_r | float 1.0~255.99 | R通道的数字增益 |
digital_gain_gr | float 1.0~255.99 | Gr通道的数字增益 |
digital_gain_gb | float 1.0~255.99 | Gb通道的数字增益 |
digital_gain_b | float 1.0~255.99 | B通道的数字增益 |
3.4 AE
3.4.1 功能描述
AE自动曝光控制图像的亮度。AE模块主要的调试有对AE目标值亮度的调整、对AE收敛速度和平滑性的调整。
3.4.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | 自动曝光使能开关。 false: 关闭自动曝光 true : 使能自动曝光 |
antiFlickerMode | Int 0~3 | 抗工频干扰工作模式 0: Off 1: 50Hz 2: 60Hz 3: User defined |
autoHdrEnable | bool | true: HDR mode下,自动计算当前帧HDR ratio false: HDR mode下,使用固定的HDR ratio |
dampOver | float 0~1.0 | 阻尼因子,用于平滑过曝时的AE收敛 |
dampOverGain | float 0~128.0 | AE过 曝时clip范围外的收敛加速增益因子,值越大,收敛越快 |
dampOverRatio | float 1.0~4.0 | AE过曝时clip范围外比例因子,值越小,收敛越快 |
dampUnder | float 0~1.0 | 阻尼因子,用于平滑欠曝时的AE收敛 |
dampUnderGain | float 0~16.0 | AE欠曝时clip范围外的收敛加速增益因子,值越大,收敛越快 |
dampUnderRatio | float 0~1.0 | AE欠曝时clip范围比例因子,值越大,收敛越快 |
expV2WindowWeight | float[32x32] 0~255 | 各子块曝光权重 |
frameCalEnable | bool | 曝光设置帧间隔使能开关。 true : 使能曝光设置帧间隔功能 false: 关闭曝光设置帧间隔功能 |
lowLightHdrGain | float[20] 0~255.0 | 宽动态模式下,当前增益阶数对应的增益值 |
lowLightHdrLevel | int 0~16 | 宽动态模式下总的增益阶数 |
lowLightHdrRepress | float[20] 0~1.0 | 宽动态模式下,当前增益阶数对应的目标亮度压制比例 |
lowLightLinearGain | float[20] 0~255.0 | 线性模式下,当前增益阶数对应的增益值 |
lowLightLinearLevel | int 0~19 | 线性模式下总的增益阶数 |
lowLightLinearRepress | float[20] 0~1.0 | 线性模式下,当前增益阶数对应的目标亮度压制比例 |
motionFilter | float 0~1.0 | 运动变化平滑参数,用于计算AE场景评估自适应模式下的运动因子 |
motionThreshold | float 0~1.0 | 运动判别阈值 |
roiNumber | int | 当前ROI窗口序号 |
roiWeight | float | 当前ROI窗口的亮度计算权重 |
roiWindow | float (fx,fy,fw, fh) | 当前ROI窗口的起始点坐标(x,y)和宽高 |
semMode | int 0~2 | 场景模式 0: 场景评估关闭模式 1: 场景评估固定模式 2: 场景评估动态模式 |
setPoint | float 0~255.0 | 设置AE的亮度目标值 |
targetFilter | float 0~1.0 | AE的亮度目标值变化平滑系数,值越大变化越快 |
tolerance | float 0~100.0 | 设置AE的亮度目标值百分比锁定范围 |
wdrContrast.max | float 0~255.0 | AE场景评估自适应模式下计算AE setpoint的最大对比度值 |
wdrContrast.min | float 0~255.0 | AE场景评估自适应模式下计算AE setpoint的最小对比度值 |
3.5 AWB
3.5.1 功能描述
在不同的光源环境下,物体呈现的颜色会有所不同。人眼睛有恒常性的特性,在不同的色温光源下都能识别出物体的真实颜色,但sensor在不同光源的反应与人眼的反应不同,就会导致偏色。AWB就是能降低外界光源对物体真实颜色的影响,使得偏色的物体转变为在理想日光光源下无偏色的物体。
3.5.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | true : 使能AWB false: 关闭AWB |
awbTempWeight | float 0.0~1.0 | AWB色温光源权重 |
mode | int 0,1 | 0: AWB 1: AWB METEDATA |
roiNumber | int | 当前ROI窗口序号 |
roiWeight | float | 当前ROI窗口的AWB计算权重 |
roiWindow | float (fx,fy,fw,fh) | 当前ROI窗口的起始点坐标(x,y)和宽高 |
useCcMatrix | bool | true : 使能CCM 自适应 false: 关闭CCM自适应 |
useCcOffset | bool | true : 使能CCM offset自适应 false: 关闭CCM offset自适应 |
useDamping | bool | true : 使能AWB阻尼变化 false: 关闭AWB阻尼变化 |
kFactor | float | 用于识别室外(outdoor)和过渡区间(transition)的光敏系数 |
3.5.3 参数kFactor标定说明
AWB算法中,环境为outdoor的判别为: Exp*kFactor <=0.12(Exp为曝光量)
。
比如以2000 lux为outdoor与transition的环境照度分割点,获取对应该照度的曝光值(ET * gain)
, 则可计算:kFactor=0.12/(ET*gain)
。
kFactor越大,说明sensor的sensitivity越强;kFactor越小,说明sensor的sensitivity越弱。
kFactor这个参数位于xml文件的AWB参数中,需要用以上方法计算后填入。
3.6 WDR
3.6.1 功能描述
在图像处理过程中 ,极容易发现图像的对比度不足,并且有可能出现亮区和暗区的细节丢失,WDR模块借助直方图统计均衡的方法提升图像的对比度,同时提升亮区和暗区细节信息。
3.6.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | WDR的使能开关 |
contrast | int -1023~1023 | 值越大,局部对比度越强 |
entropy | int[20] | local weight |
entropy_base | int | 亮度因子参数。base越大,slope越小,局部对比度越强 |
entropy_slope | int | 亮度因子参数。base越大,slope越小,局部对比度越强 |
flat_strength | int 0~19 | 平坦区域拉伸强度 |
flat_thr | int 0~20 | 平坦区域阈值。值越大,判别图像越平坦,小于阈值判别为平坦区,大于阈值判别为纹理区 |
gamma_down | int[20] | local weight |
gamma_pre | int[20] | local weight |
gamma_up | int[20] | global curve |
global_strength | int 0~128 | 全局对比度强度 |
high_strength | int 0~128 | 对图像亮区信息的保护强度。值越大,对图像中亮区信息保护越强 |
low_strength | int 0~255 | 对图像暗区信息的保护强度。值越大,对图像中暗区信息保护越强 |
strength | int 0~128 | 总强度 |
3.6.3 调试策略
在线性模式下,Stength设置固定在128。Low Strength实际上是最大增益,它与High Strength一起用于调整图像亮度。当图像的暗区需要变亮时,可以增加Low Strength。当图像的高亮区域曝光过度并且需要抑制时,可以增加High Strength。为了避免噪声的过度增强,随着增益的增加,Low Strength应逐渐降低,而High Strength可以保持不变或逐渐增加。Global Strength用于控制整体对比度。当图像的整体对比度较弱时,可以适当地增加该参数。Contrast, Flat Strength and Flat Threshold用于调整局部对比度。可以先使用默认参数,如果局部对比度不好,可以适当增加Contrast。增加对比度可以使平坦区域的灰色阴影更加明显。目前,调整Flat Threshold以识别纹理区域和平面区域,并增加Flat Strength以平滑平面区域以减少灰色阴影。
3.7 GE
3.7.1 功能描述
绿平衡的主要功能是为了平衡RAW数据中邻近像素Gr与Gb的差异,防止后续在demosaic插值算法中产生方格、迷宫格等类似纹路。该模块位于DPCC之前。
3.7.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | 绿平衡的使能开关 |
threshold | float 0~511.0 | 绿平衡强度阈值。 |
3.8 DPCC
3.8.1 功能描述
受到sensor制造工艺的限制,对于几百万像素的sensor来说,不可能做到所有的像素都是完好的,特别是对于那种成本较低的sensor来说,坏点数可能更多。若sensor中的坏像素点不尽早处理掉,在后续的demosaic插值算法中就有可能被放大扩散。因此该模块就是在demosaic模块之前完成对坏像素的校准。固定坏点表最大能容纳2048个坏点。提供7组设置值可供选择。
3.8.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | DPCC使能开关。 false: 关闭DPCC (Default); true: 使能DPCC |
bpt_Enable | bool | 坏点表使能开关 |
bpt_Num | int 0~1024 | 坏点表中当前坏点的序号 |
bpt_out_mode | int 0~14 | 坏点表中坏点的校正输出中值模式选择 |
bpt_pos_X | int | 坏点的水平地址 |
bpt_pos_Y | int | 坏点的垂直地址 |
bypass | bool | DPCC bypass使能开关。 false: 经过DPCC true : 绕过DPCC |
line_mad_fac | int lineMadFac[2][3] 0~63 | 平均绝对差系数 |
line_thresh | int lineThresh[2][3] 0~255 | 设置R&B&G的行阈值 |
methods_set | int methodsSet[3] 0~8191 | 每个通道启用的坏点校正方法选择。坏点校正有两种方法,根据设置可分为包括中心点的中值滤波和无中心点的中位数滤波。 |
out_mode | int 0~15 | 校准单元的插值模式 |
pg_fac | int pgFac[2][3] 0~63 | 峰值梯度因子 |
rg_fac | int rgFac[2][3] 0~63 | 等级梯度因子 |
rnd_offs | int rndOffs[2][3] 0~3 | 秩邻差差分秩偏移 |
rnd_thresh | int rndThresh[2][3] 0~63 | 秩邻差阈值 |
ro_limits | int roLimits[2][3] 0~3 | 秩偏移限制 |
set_use | int 1~7 | 选择哪组校准设置值 |
3.9 DPF
3.9.1 功能描述
双边滤波降噪。
3.9.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | 使能开关。 |
gain | float 1.0~1000.0 | sensor gain |
gradient | float 0.1~128 | 梯度 |
min | float 1.0~128.0 | strength clip |
offset | float 0~128.0 | 值越大,降噪强度越大 |
div | float 0~64.0 | 值越大,降噪强度越小 |
sigma_g | float 1.0~128.0 | G通道的空域滤波,值越大,权重越大 |
sigma_rb | float 1.0~128.0 | R&B通道的空域滤波,值越大,权重越大 |
noise_curve | float 0~4095.0 | 17个点的曲线,从标定文件中得到 |
3.10 3DNR
3.10.1 功能描述
图像去噪是数字图像处理中的重要环节和步骤,去噪效果将对后续图像处理产生影响。3DNR结合时间域信息和空间域信息,从而能够更有效地识别并降低噪声,并有运动检测,确保降噪过程不会影响移动对象的细节和清晰度。
3.10.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | 2DNR和3DNR总使能开关 |
tnr_en | bool | 3DNR使能开关 |
nlm_en | bool | 2DNR使能开关 |
sigma | float 0.1~16.0] | 2DNR强度,值越大,降噪强度越大 |
strength | float 0~128.0 | 2DNR强度,值越大,降噪强度越大 |
blend_motion | float 0~100.0 | 代表 2DNR处理过的帧与tnr输出帧的权重。改变它会影响去噪强度,但运动估计是不变的 |
blend_slope | float 0.1~32.0 | 合并坡度;该值越大,NLM图像的权重就越大。2DNR混合的权重斜率。值越小,静态混合权重高;值越大,运动混合权重高。 |
blend_static | float 0~100.0 | 代表的是静止区域2DNR处理过的帧与tnr输出帧的权重 |
dialte_h | float | 3DNR motion dilation的窗口宽度 |
filter_len | float 0~1024 | 时域滤波窗口长度,表示参考了多少帧的信息 |
filter_len2 | float 0~100 | 运动历史帧的长度 |
motion_dilate_en | bool | motion_dilate使能开关 |
motion_erode_en | bool | motion_erode使能开关 |
noise_level | float 0~1024 | 运动检测阈值,大于这个值的判断为运动区 |
noisemodel_a | float | 自定义pregamma曲线的斜率 |
noisemodel_b | float | 自定义pregamma曲线的offset值 |
pregamma_en | bool | pregamma transform的使能开关 |
preweight | float | 前一帧运动信息的权重 |
range_h | float | 水平方向上运动检测窗口的半径,7代表采用15x15的 |
range_v | float | 垂直方向上运动检测窗口的半径,7代表采用15x15的 |
sadweight | float | 设置运动差类型a的权重,最终运动检测是两种类型的运动差的加权和,计算block diff的参数 |
thr_motion_slope | float | 过渡段,过了slope就是百分百的运动区域 |
3.10.3 调试策略
- 先打开tnr,nlm,dilate,erode,pregamma;
- 设置filter_len控制参考帧的damping ratio;
- 设置filter_len2控制运动帧的damping ratio;
- 用noise_level来区分前景与背景;
- 设置thr_motion_slope,sad weight,preweight来计算运动区域。
请注意:使能TNR时,ISP的要求sensor/ISP Hblank不能小于180 pixel clocks(推荐 设置为256 pixel clocks),Vblank最小不要小于 60 sensor ET lines。
3.11 Demosaic
3.11.1 功能描述
Demosaic模块实现的功能主要是通过插值算法将输入的bayer格式数据转换成RGB格式数据,同时支持降噪、锐化、去摩尔纹、去紫边功能。
3.11.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
demosaic_enable | bool | demosaic使能开关 |
demosaic_thr | int 0~255 | r和b通道的插值阈值,小于这个值做无方向的插值 |
dmsc_dir_thr_min | int 0~4095 | 暗区G通道插值 |
dmsc_dir_thr_max | int 0~4095 | 亮区G通道插值 |
dmsc_denoise_strength | int 0~31 | 低频滤波降噪强度 |
dmsc_sharpen_enable | bool | sharpen的使能开关 |
dmsc_sharpen_clip_black | int 0~2047 | 黑边锐化限制参数 |
dmsc_sharpen_clip_white | int 0~2047 | 白边锐化限制参数 |
dmsc_sharpen_factor_black | int 0~511 | 针对黑边的锐化增强,值越大,锐化增强效果越明显 |
dmsc_sharpen_factor_white | int 0~511 | 针对边边的锐化增强,值越大,锐化增强效果越明显 |
dmsc_sharpen_line_enable | bool | 图像相邻短线条使能开关 |
dmsc_sharpen_line_r1 | int 0~255 | / |
dmsc_sharpen_line_r2 | int 0~255 | / |
dmsc_sharpen_line_strength | int 0~4095 | 值越大,线条锐化强度越大 |
dmsc_sharpen_line_thr | int | 线条锐化阈值 |
dmsc_sharpen_line_thr_shift1 | int 0~10 | / |
dmsc_sharpen_r1 | int 0~256 | 锐化曲线参数 |
dmsc_sharpen_r2 | int 0~256 | 锐化曲线参数 |
dmsc_sharpen_r3 | int 0~256 | 锐化曲线参数 |
dmsc_sharpen_size | int 0~16 | 表示高频信号的呈现情况。值越小,表示锐化区域中的细节越多,更多的小细节会被锐化 |
dmsc_sharpen_t1 | int 0~2047 | 锐化曲线参数 |
dmsc_sharpen_t2_shift | int 0~11 | 锐化曲线参数 |
dmsc_sharpen_t3 | int 0~2047 | 锐化曲线参数 |
dmsc_sharpen_t4_shift | int 0~11 | 锐化曲线参数 |
dmsc_demoire_area_thr | int 0~32 | 去摩尔纹面积阈值,大于阈值的才进行去摩尔纹处理 |
dmsc_demoire_enable | bool | 去摩尔纹使能开关 |
dmsc_demoire_r1 | int 0~255 | 摩尔纹消除强度曲线参数 |
dmsc_demoire_r2 | int 0~255 | 摩尔纹消除强度曲线参数 |
dmsc_demoire_t1 | int 0~255 | 摩尔纹消除强度曲线参数 |
dmsc_demoire_t2_shift | int 0~8 | 摩尔纹消除强度曲线参数 |
demoire_edge_r1 | int 0~255 | 摩尔纹转换曲线参数 |
demoire_edge_r2 | int 0~255 | 摩尔纹转换曲线参数 |
demoire_edge_t1 | int 0~511 | 摩尔纹转换曲线参数 |
demoire_edge_t2_shift | int 0~9 | 摩尔纹转换曲线参数 |
dmsc_demoire_sat_shrink | int 0~32 | 值越大,摩尔纹区域饱和度消减越强 |
dmsc_depurple_cbcr_mode | int [0,1,2,3] | depurple通道模式。0:关闭depurple,1:R通道depurple,2:B通道depurple,3:R&B通道depurple |
dmsc_depurple_enable | bool | depurple使能开关 |
dmsc_depurple_sat_shrink | int 0~8 | 紫边区域饱和度缩减值。值越大,饱和度缩减越强 |
dmsc_depurple_thr | int 8~255 | 检测紫边的强度阈值。值越小,被视为紫色条纹的像素就越多 |
3.11.3 调试策略
-
插值
对于12bit raw,值0对应的插值Threshold为dir_thr_min,值4095对于的插值Threshold为dir_thr_max,处于中间的值对应的Threshold为dir_thr_min和dir_thr_max所决定线段上的对应值点。
demosaic_thr的设置:梯度差异>阈值,方向插值;梯度差异
<
阈值,平均值插值。较小的值意味着在高频区域出现更多的伪彩。 -
锐化及降噪
denoise_strength表示低频噪声滤波强度,当设置为0时,相当于关闭降噪功能。一般情况下在demosaic模块里都将降噪功能关闭,只有当图像的噪声特别大的时候,才在这里使用降噪。
锐化曲线参数的设置:曲线越陡峭,锐化强度越大。
sharpen_line的设置:当图像的噪声比较大的时候,想让边缘平滑连续一些,就可以打开sharpen_line。sharpen_line的基本效果就是在垂直或水平方向上平滑线条或纹理。纵轴sharpen_line_r1、sharpen_line_r2越大,锐化结果就越接近定向(水平或垂直)增强。此外,更多的点被错误连接,这可能导致高频细节中的错误。
sharpen_factor&clip设置:factor值越大,锐化效果越强;clip值越大,表示截断效果越弱,保留的细节越多。应该尽量避免factor>clip的设置情况,这样黑白细节保持少,而锐化强度高,会导致没有层次感。
-
去摩尔纹
摩尔纹转换曲线:
摩尔纹校准曲线:
3.12 ManualWB
3.12.1 功能描述
手动设置白平衡的gain值。
3.12.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
driver_load | bool | 表示是否加载该模块下的参数 |
gain | float [4] 1.0~3.999 | 四通道的白平衡gain值 |
3.13 CCM
3.13.1 功能描述
通过标准3×3的矩阵和矢量偏移量完成颜色空间的线性校正。CCM 的 3x3 矩阵将 sensor 的 色彩空间转换到 sRGB 标准的色彩空间。
3.13.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | CCM开关 |
ccmatrix | float ccMatrix[9] -8.0~7.996 | 色彩校准矩阵 |
ccoffset | ccOffset[3] -2048~2047(12bit) | 偏移量 |
3.14 Gamma
3.14.1 功能描述
Gamma模块主要是对亮度空间进行非线性转化以适应一般的输出设备。
3.14.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | gamma使能开关 |
standard | bool | 标准gamma使能开关 |
standard_val | float | gamma值的大小,默认2.2 |
curve | int [64] | 64个点的gamma曲线 |
3.14.3 调试策略
默认使用gamma2.2的值,用户可根据需要自定义gamma曲线。
3.15 EE
3.15.1 功能描述
EE模块用于对图像细节纹理的锐化增强,实现图像清晰度的提升。对图像边缘锐化的同时,控制相关参数,还能抑制图像的黑白边。
3.15.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | EE功能的使能控制 |
ee_strength | int 0~128 | EE强度 |
ee_src_strength | int 0~255 | 值越大,降噪强度越大。默认设为1 |
ee_y_up_gain | int 0~10000 | 亮边的gain强度 |
ee_y_down_gain | int 0~10000 | 暗边的gain强度 |
ee_uv_gain | int 0~1024 | 对边缘色彩饱和度的控制,值越大,饱和度下降越明显 |
ee_edge_gain | int 0~10000 | 对边缘细节的检测强度。gain值越大,检测到的边缘细节越多 |
3.16 CA
3.16.1 功能描述
CA模块是基于UV gain曲线去调节图像饱和度,它主要的功能是消除暗区域或低饱和度区域的彩色噪声。实际应用时可以帮助消除高亮过曝区域由于R/G/B三通道的非线性造成的伪彩色和低饱和度区域的白平衡偏差。
3.16.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
ca_en | bool | CA模块的使能开关 |
curve_en | bool | ca_curve和dci_curve的使能开关 |
ca_mode | int [0,1,2] | 0:根据亮度调节饱和度;1:根据原饱和度调节饱和度;2:根据亮度和原饱和度调节饱和度 |
ca_curve | flaot | 64个点的ca曲线 |
3.17 DCI
3.17.1 功能描述
Dynamic Contrast Improve用于调整图像的全局对比度。
3.17.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
dci_en | bool | dci使能开关 |
dci_curve | float | 64个点的dci曲线 |
3.18 CProcess(Color Processing)
3.18.1 功能描述
在YUV域对图像的颜色进行处理。
3.18.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | CProcess使能开关 |
luma_in | int | luminance input range。0: Y_in range [64..940],1: Y_in full range [0..1023] |
luma_out | int | luminance output clipping range。0: Y_out clipping range [16..235],1: Y_out clipping range [0..255] |
chroma_out | int | chrominance pixel clipping range at output。0: CbCr_out clipping range [16..240],1: Full UV_out clipping range [0..255] |
bright | float -128~127 | 亮度调整值 |
contrast | float 0.3~1.9921875 | 对比度调整值 |
hue | float -90~89 | 色调调整值 |
saturation | float 0~1.9921875 | 饱和度调整值 |
3.19 Compand
3.19.1 功能描述
数据压缩、拉伸模块。可用于对数据的压缩和拉伸处理。
3.19.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
enable | bool | 数据压缩扩展使能开关 |
compress_enable | bool | 数据压缩使能开关 |
compress_curve_x | int[64] 0~31 | 数据压缩x轴距离曲线 |
compress_use_out_y_curve | bool | 数据压缩输出Y轴曲线使能开关 |
compress_curve_y | int[64] 0~16777216 | 数据压缩y轴数值曲线 |
expand_enable | bool | 数据扩展使能开关 |
expand_curve_x | int[64] 0~31 | 数据扩展x轴距离曲线 |
expand_use_out_y_curve | bool | 数据扩展输出Y轴曲线使能开关 |
expand_curve_y | int[64] 0~16777216 | 数据扩展y轴数值曲线 |
3.20 CAC (Chromatic Aberration Correction)
3.20.1 功能描述
该模块用于色差校正。
3.20.2 主要参数
参数 | 类型及取值范围 | 描述 |
---|---|---|
a_blue | float -16~15.9375 | 径向蓝移计算参数,根据公式 (a_blue * r + b_blue * r^2 + c_clue * r^3)计算 |
a_red | float -16~15.9375 | 径向红移计算参数,根据公式 (a_red * r + b_red * r^2 + c_red * r^3)计算 |
b_blue | float -16~15.9375 | 径向蓝移计算参数,根据公式 (a_blue * r + b_blue * r^2 + c_clue * r^3)计算 |
b_red | float -16~15.9375 | 径向红移计算参数,根据公式 (a_red * r + b_red * r^2 + c_red * r^3)计算 |
c_blue | float -16~15.9375 | 径向蓝移计算参数,根据公式 (a_blue * r + b_blue * r^2 + c_clue * r^3)计算 |
c_red | float -16~15.9375 | 径向红移计算参数,根据公式 (a_red * r + b_red * r^2 + c_red * r^3)计算 |
cac_enable | bool | CAC使能开关 |
center_h_offs | int | 图像中心和光学中心之间的水平距离 |
center_v_offs | int | 图像中心和光学中心之间的垂直距离 |
a_blue、b_blue、c_blue可从xml文件中CAC字段的blue_parameters中获得,a_red、b_red、c_red可从xml文件中CAC字段的red_parameters中获得,center_h_offs可从xml文件中CAC字段的x_offset获得,center_v_offs可从xml文件中CAC字段的y_offset获得。