跳到主要内容

ISP 图像调优介绍

ISP 的功能

ISP 模块支持标准的 Sensor 图像数据处理功能,其中包括自动白平衡、自动曝光、自动对焦、去马赛克、坏点矫正及镜头阴影矫正等基本功能,也支持多帧宽动态(WDR)、局部色调映射(PLTM)、动态范围控制(DRC)、降噪、锐化等高级功能。ISP 主要支持的图像处理功能如下:

  • 支持黑点平矫正(BLC)
  • 支持静态、动态坏点校正(DPC)
  • 支持 Bayer 空域、时域降噪(D2D、D3D)
  • 支持去马赛克处理(CFA)
  • 支持 Gamma 校正
  • 支持 Sensor 内部合成宽动态功能(WDR-Split)
  • 支持多帧宽动态融合(WDR-Stitch)
  • 支持自动白平衡(AWB)、自动曝光(AE)、自动对焦(AF)
  • 支持 3A 相关统计信息输出
  • 支持镜头阴影矫正(LSC、MSC)
  • 支持图像锐化(Sharpness)
  • 支持色彩增强(CEM)
  • 支持全局、局部色差矫正(GCA、LCA)
  • 支持局部色调映射(PLTM)
  • 支持动态范围控制(DRC)

ISP 各模块的功能

模块名称描述
BLC提供 Sensor 相关黑电平矫正。
AFS自动曝光下,保持曝光在 10ms(50Hz)或 8.33ms(60Hz)的整数倍以达到防工频闪烁的效果。
AE硬件输出自动曝光的统计值信息,软件根据统计信息调节 Sensor 以实现自动曝光的功能。
AF硬件输出自动对焦的图像清晰度评价信息统计,软件根据统计信息调节 VCM(对焦马达)以实现自动对焦的功能。
WB硬件输出白平衡统计信息,软件根据统计信息调节 R/G/B 增益以实现自动白平衡的功能。
AWB软件自动白平衡算法开关。
Hist硬件输出直方图统计信息,软件用于辅助 AE、DRC 的计算。
WDR SplitSensor 内部合成宽动态图像,将 Sensor 输出的较多的 bit 位宽数据拆分成较少 bit 位宽的数据,使拆分后的数据能被 ISP 处理。
WDR Stitch对 Sensor 输出的多帧合成为一帧宽动态图像。
DPC提供对静态坏点和动态坏点的检测和矫正功能。
CTC消除由于 Sensor 和镜头的 CRA 不匹配导致的 Cross Talk 噪声
GCA全局色差矫正,用于矫正右镜头引入的轴向色差与横向色差。
LCA局部色差矫正,用于矫正右镜头引入的轴向色差与横向色差。
NRPISP 内部预 Gamma 模块,提高降噪、锐化性能。
D2D(Denoise)空域降噪。
D3D(TDNF)时域降噪,去除图像高斯噪声,使图像更平滑。
Dig-GainISP 分通道的数据增益。
LSC、MSC用于镜头阴影矫正
PLTM局部色调映射,可提升暗部动态范围。
CFA(Demosaic)将 Bayer 格式的 Raw 图像转化到 RGB 图像,优化 CFA 参数可减弱密集纹理区因去马赛克导致的摩尔纹现象。
Sharpness图像锐化,提高图像清晰度。
CCM通过 3x3 的矩阵和矢量偏移量完成颜色空间的线性矫正。
CNR色彩降噪。
DRC硬件动态范围控制模块。
GTM全局色调映射软件算法。
Gamma分 R/G/B 三通道调整图像亮度。
CEM利用 9x17x17 大小的 3D LUT 实现颜色调整操作。
Encpp编码器 Yuv Sharp。
Enc 3Dnr编码器时域降噪。
Enc 2Dnr编码器空域降噪。
CSC通过标准的 3x3 的矩阵和矢量偏移量将输入的 RGB 图像转化为 YUV。

图像效果调试需要准备的环境

名称说明
样机用于调试使用,建议调试前确定好需要量产的镜头,避免重复工作(可以参考下面的镜头 Sensor 选型一节)
对比机用于对比使用,由于镜头、sensor对成像质量影响大,建议选取对比机使用同款sensor、镜头
调试固件图像调试依赖于adb/ip两种连接方式,必须确保调试固件能正常使用其中一种方式
awTuningApp调试ISP使用的板端应用
TigerISP调试ISP使用的PC程序,前往APST下载
串口样机需将串口接出,便于调试过程中使用
光源箱用于客观标定,提供多种不同色温不同亮度的照明环境
散光片用于客观标定,又称毛玻璃
24色色卡用于客观标定,用于色彩调优
  • V821awTuningApp路径:\platform\allwinner\eyesee-mpp\middleware\sun300iw1\media\LIBRARY\libisp\tuning_app

image-20250106094709730

选择及设置色彩空间

色彩空间是一种数学模型,用于描述和表示图像或视频中的颜色,它定义了一组颜色值的范围、编码方式以及颜色之间的转换规则。

不同亮度范围的色彩空间是会导致动态范围呈现差异的;

BT709-Partrange(部分范围):也称为"limited range",它是指亮度范围在 16 到 235 之间的值。这意味着黑色对应的值是 16,白色对应的值是 235。在这个范围内,0 表示纯黑,255 表示纯白,而 1 和 235 之间的值用于表示灰度和其他亮度级别。Partrange 通常用于视频广播和一些消费电子设备中,以确保在传输和显示过程中能够兼容各种设备和标准。它可以防止黑色和白色之外的信息在传输或显示中被截断或失真。

BT709-Fullrange(全范围):也称为"full range",它是指亮度范围在 0 到 255 之间的值。这意味着黑色对应的值是 0,白色对应的值是 255。在这个范围内,所有的亮度级别都可以表示。Fullrange主要用于一些专业领域和特定应用,例如计算机图形和视频编辑。在这些情况下,使用全范围可以提供更大的亮度动态范围和更精细的色彩表示。

在产品开发中,如果希望图像对比度更高,画面更通透,那么建议选择BT709-Fullrange的色彩空间

ISP、VE以及解码端,均需要设置色彩空间,在配置过程中,务必要确保三者保持设置同一个色彩空间,避免部分亮度丢失,对比度异常的问题。其中VE、ISP的色彩空间设置,请参考sample_smartIPC_demo中如下图所示配置

V821 Sample 路径:\platform\allwinner\eyesee-mpp\middleware\sun300iw1\sample\sample_smartIPC_demo\sample_smartIPC_demo.c

image-20250106094842260

image-20250106094848004

ISP、VE设置好色彩空间后,通过抓取ISP、VE节点确认

  • ISP节点:cat /sys/kernel/debug/mpp/isp

  • VE节点:cat /sys/kernel/debug/mpp/ve*

ISP节点色彩空间

VE节点色彩空间

Potplayer播放器默认使用的是Full_range的色彩空间,VLC播放器默认使用的是Part_range的色彩空间,如果需要使用播放器对比图像效果,色彩空间也需要匹配上。

确认对焦是否准确

镜头对焦确认方法:

Step1:打印如下测试图,打印要求:横向、无边距、至少A4大小(越大越好)、至少600dpi(越大越好)

对焦示例图1

Step2:在充足照明(不小于1000lux)的环境拍摄,选择产品常用的拍摄距离放置测试图,最好能保证测试图高度占画面高度不小于1/8
Step3:彩色和红外下都需要测试。(如果打印版本无法在红外下使用,可到TB购买)
Step4:打开看视频的应用,画质调到最高,画面稳定后截图
Step5:用PS或ISP调试工具等打开图片,测量测试图的高度(上下边框的纵坐标差),根据最小的能看清楚三横三竖的图案所处位置,查表代入公式计算54941/Height/GE清晰度,如果图像有插值,那么公式为54941/Height/GE清晰度*插值图像高度/sensor实际高度

对焦示例图2

Step6:清晰度低于0.7的,请检查对焦

示例如下:

图片分辨率是1920x1080,测试图的高度为63像素,最小的能看清楚三横三竖的图案处于G-2E6,查表得1122.46。代入公式54941 / 63 / 1122.46 = 0.776935806,图像无插值,清晰度就是0.777

对焦示例图3

对焦示例图4

镜头 Sensor 选型

镜头与 Sensor 在匹配状态下,才能将清晰度、画面均匀度达到最佳状态,镜头选型需要注意的方面如下:

  • 镜头与 Sensor 的 CRA 是否匹配

镜头与 Sensor 均有一个CRA曲线,在选型过程中,要尽量保证CRA参数要尽可能接近(一般不超过3度)

image-20250106095107155

  • 镜头解析力与 Sensor 尺寸是否匹配

镜头解析力大于 Sensor 尺寸,才能将清晰度更好展现,不然会导致清晰度差异及摩尔纹等问题

  • 镜头靶面与 Sensor 是否匹配

Sensor尺寸一般是按照对角线长度描述(单位inch),通常是1/3',1/2'等,镜头靶面也是如此表示,如果镜头的靶面范围无法覆盖整个Sensor,那么成像出来会存在严重暗角

  • 镜头光圈及焦距

光圈越大进光量越大,摄像头模组的感光性更好,图像质量更佳(尤其是在低照度)焦距决定了成像的视场角,焦距越大,视场范围越小,适合用于观察远景。

  • 镜头的景深范围、点胶距离如何确定

景深范围是指摄像头在纵向距离上,能看清楚的最远点,和能看清楚的最近点之间的范围,它是可变的,由点胶距离决定

  • 是否支持日夜共焦

对于需要红外补光的定焦镜头,要确定镜头+ir_cut 是否是日夜共焦的。我们一般是以白天模式去进行对焦,在可见光下,ir_cut 切到滤光片下对焦,但到夜晚以后,补红外光,ir_cut切到透光片,如果此时镜头日夜不共焦,红外夜视下图像效果就是模糊的,处于虚焦状态。要保证两种状态下对焦都是清晰的,这就要保证镜头+ir_cut是日夜共焦的才可以。

  • 镜头畸变

畸变可以通过畸变校准进行修复,但在一定程度上会损失视场角,因此选择镜头时对畸变有要求的话,就要考虑选择畸变范围小的镜头。

TigerISP 工具界面简介

名称说明
加载参数从PC本地选择一份ISP效果文件加载生效到板端
保存参数将当前工具下的ISP效果文件保存到PC本地
抓取寄存器抓取当前连接的sensor的寄存器配置
转换效果文件进行效果文件的不同格式转换,如bin、h、dat
图像标定打开图像客观标定对应模块
实时预览实时预览ISP处理后的YUV
白平衡统计预览白平衡统计的落点信息
编码预览预览编码处理后的码流
编码锐化预览预览编码锐化模块后的图像
ISP日志显示ISP各模块的debug信息,用于分析及调试

TigerISP功能界面1

TigerISP功能界面2

离线调试和在线调试介绍

名称说明
离线调试不跑应用及sample出流,awTuningApp负责出流及ISP调试
在线调试跑应用或sample出流,awTuningApp只负责ISP调试

离线调试使用步骤

  • 检查调试环境,确保调试固件能支持 adb/ip 的连接方式
  • 设备上电后进入控制台,输入ls /dev/video*,确保有对应的video节点
  • 准备SDK环境对应的 awTuningAppTigerISP
  • 准备SD卡,将 awTuningApp 放入卡中,插入样机。(如设备不支持SD卡,可通过adb将 awTuningApp 推到 tmp 目录)
  • 如通过adb推到tmp目录,需要先执行chmod 777 awTuningApp给应用执行权限
  • 小机端执行./awTuningApp 8848 0 &
  • PC端运行 TigerISP 工具,并选择对应的平台,这里以V821平台作为演示,下面的两个选项均不需勾选,点击OK

image-20250106162221469

  • 根据下面介绍进行填写,离线调试下如果部分参数未填对也可以连接上,但在线调试下没填对会导致连接不上并加载参数失败。

image-20250106162456060

  • Comm Type :连接方式,支持adb、IP连接方式
  • Port:端口号,与小机端运行时使用的保持一致,默认为8848
  • Sensor:Sensor 名
  • Width:输入ISP的图像宽度
  • Height:输入ISP的图像高度
  • FPS:帧率
  • ISP:ISP通道号
  • Vich:Video通道号
  • Wdr Mode:是否为WDR模式,非WDR模式选择None,如果为WDR模式请选择DOL
  • Stitching:是否为拼接模式,仅大尺寸拼接时需要配置

填写参数后进行连接,TigerISP 的日志如下代表连接成功

image-20241223153155698

点击 Extra Tools 中的 Capture 后弹出 Capture 窗口,点击 Dump 即可实现预览。

image-20241223153215137

实时预览如下

image-20250220161932985

  • 连接TigerISP使用的awTuningApp需使用sdk默认编译出来
  • 如果使用adb连接,却无法跳转到连接加载界面,请在板端运行ifconfig -a,检查是否有lo的网口配置,如没有需要确认是否将这个配置裁剪了,可与sdk中默认内核配置对比确认。

在线调试使用步骤

  • 检查调试环境,确保调试固件能支持adb/ip的连接方式
  • 设备上电后进入控制台,输入ls /dev/video*,确保有对应的video节点
  • 确保小机端已运行sample或应用出流,并可以通过手机APP/PC端/屏幕等进行预览实时图像
  • 准备SDK环境对应的awTuningApp、TigerISP
  • 准备SD卡,将awTuningApp放入卡中,插入样机。(如设备不支持SD卡,可通过adbawTuningApp推到tmp目录)
  • 如通过adb推到tmp目录,需要先执行chmod 777 awTuningApp给应用执行权限
  • 小机端执行./awTuningApp 8848 1 &,注意这里传的参数与离线模式的差异
  • PC端运行TigerISP工具,并选择对应的平台,下面的两个选项均不需勾选,点击OK
  • 参数设置参考上面的离线调试介绍,在线调试设置参数必须与通路保持一致,不然会导致连接不上并加载参数失败

注意事项

  • 连接TigerISP使用的awTuningApp需使用sdk默认编译出来
  • 如果使用adb连接,却无法跳转到连接加载界面,请在板端运行ifconfig -a,检查是否有lo的网口配置,如没有需要确认是否将这个配置裁剪了,可与sdk中默认内核配置对比确认
  • 在线调试需严格根据应用或sample所跑的通路进行填写,不然会导致连接不上并加载参数失败,可通过cat /sys/kernel/debug/mpp/vi抓取节点确认

TigerISP引导界面6

ISP LOG 介绍及联动关系

两种联动方式介绍

ISP 有两种不同的连动关系。

ISP 的 2D 去噪、3D 去噪、色彩去噪、锐化、局部对比度、期望亮度、全局对比度、饱和度等参数都可以选择与环境亮度还是增益连动。在工具中调试这些参数时,可以看到这些参数都分成了 0~13,共 14个档位。

当选择与增益连动时:

  • 1 倍增益时使用第 0 档参数,
  • 2 倍增益时使用第 1 档参数,
  • 4 倍增益时使用第 2 档参数,
  • 8 倍增益时使用第 3 档参数,

如 3 倍增益时,会使用第 1档与第2档参数进行线性插值,如此类推。 通过ISP LOG中的TGAIN的值可以得知当前处于什么增益下(TGAIN 的值以 256 为 1 倍)。

当选择与环境亮度连动时:

系统会将 AE Table 分为 350 档,通过打印 lum_idx 的值来决定使用的档位

  • lum_idx 处于 0~25 之间时,使用第 0 档参数,
  • lum_idx 为 50 时,使用第 1 档参数,
  • lum_idx 为 75 时,使用第 2 档参数,
  • lum_idx 为 100 时,使用第 3 档参数,
  • lum_idx 为40时,会使用第 1档与第2档参数进行线性插值,如此类推。

通过 ISP LOG 中的 lum_idx 的值可以得知当前处于什么档位下。

联动界面介绍

ISP LOG 的打印方式介绍

如果想打印 ISP LOG,有以下方式可以实现

TigerISP 调试工具

通过在线/离线连接上调试工具,点击Extra Tools中的Log,再点击Dump

ISP_LOG介绍

修改效果参数打印等级

通过在线/离线连接上调试工具,修改效果文件里面的Log Param,打印会从串口或CMD界面输出。

ISP_Log介绍1

如果不想连接调试工具,也可以在效果文件里面修改打印,打印会从串口打印出来。

ISP_Log介绍2

打印等级参考下述定义

#define ISP_LOG_AE				(1 << 0)	//0x1
#define ISP_LOG_AWB (1 << 1) //0x2
#define ISP_LOG_AF (1 << 2) //0x4
#define ISP_LOG_ISO (1 << 3) //0x8
#define ISP_LOG_GAMMA (1 << 4) //0x10
#define ISP_LOG_COLOR_MATRIX (1 << 5) //0x20
#define ISP_LOG_AFS (1 << 6) //0x40
#define ISP_LOG_MOTION_DETECT (1 << 7) //0x80
#define ISP_LOG_GAIN_OFFSET (1 << 8) //0x100
#define ISP_LOG_DEFOG (1 << 9) //0x200
#define ISP_LOG_LSC (1 << 10) //0x400
#define ISP_LOG_GTM (1 << 11) //0x800
#define ISP_LOG_PLTM (1 << 12) //0x1000

ISP 各模块 Pipeline

image-20250220161332912