目录
1.何为ISP何为IQ调试
1.1、ISP概念
1.2、在哪里做ISP
1.3、何为IQ
1.4、总结
2.海思MPP中ISP的实现框架
2.1、官方文档
2.2、sample中ISP相关部分
2.3、sensor注册内部细节
2.4、ISP注册内部细节
3.IQ调试相关的概念
3.1、黑电平
3.2、镜头阴影矫正
3.3、坏点矫正
3.4、自动曝光
3.5、DRC与WDR
3.6、噪声抑制
3.7、颜色插值
3.8、自动白平衡
3.9、颜色矫正
3.10、伽马矫正
3.11、自动增益控制
3.12、颜色空间转换
3.13、色度矫正
3.14、图像锐化
3.15、感知色
3.16、图像增强
4.PQTool工具的安装和使用
4.1、PQTool的2部分介绍
4.2、准备工作
5.模拟图像参数调整试验
5.1、gamma参数试验
1.何为ISP何为IQ调试
1.1、ISP概念
(1)ISP: image signal process,图像信号处理
image signal processor 图像信号处理器
(2)什么是图像信号?图像的二进制表达
(3)为什么需要处理?器件或环境不理想导致图像不理想,譬如过曝光、不通透、坏点
(4)如何处理?使用针对性算法对原始图像数据做运算处理
(5)ISP的本质:用采集后的数字图像的运算处理修补前端的不理想,尽量提升图像质量
(6)ISP处理器:进行运算处理的器件,在HI3518E中是DSP,核心是数字运算能力
1.2、在哪里做ISP
(1)镜头->sensor->ISP->VI->VPSS......
(2)ISP单元可以在sensor中,独立,或集成到AP SoC中,现在大多在AP中
(3)HI3518E中内置ISP单元
1.3、何为IQ
(1)image quality,图像质量
(2)浅层次的图像质量问题:坏点、畸变、条纹、局部不清晰等
(3)高层次的图像质量问题:通透性、锐度、色彩饱满度、色彩还原度等
1.4、总结
(1)IQ是目的,ISP是手段,调试是方法
(2)掌握ISP和IQ调试的关键:相关概念、海思MPP中ISP的实现、PQTool工具
2.海思MPP中ISP的实现框架
2.1、官方文档
(1)《HiISP开发参考》 与 《ISP_3A开发指南》
1.1 概述
ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括 3A、坏点校
正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理。ISP 包括DSP
以及运行在其上的 firmware。这里主要介绍 ISP 的用户接口。
1.2 功能描述
ISP 的控制结构如图 1-1 所示,lens 将光信号投射到 sensor 的感光区域后,sensor 经过
光电转换,将 Bayer 格式的原始图像送给 ISP,ISP 经过算法处理,输出 RGB 空间域
的图像给后端的视频采集单元。在这个过程中,ISP 通过运行在其上的 firmware 对 DSP,
lens 和 sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功
能。其中,firmware 的运转靠VI模块的中断驱动。PQ Tools 工具通过网口或者
串口完成对 ISP 的在线图像质量调节。
ISP 由 DSP及运行在其上的 Firmware 组成,DSP除了完成一部分算法处理
外,还可以统计出当前图像的实时信息。视频不断采集过程中,Firmware 通过获取 DSP的图像统计信
息,重新计算,反馈控制 lens、sensor 和DSP,以达到自动调节视频图像质量的目的。
图1-1 ISP 控制结构示意图
ISP 逻辑主要流程、具体概念和功能点请参见芯片手册。
1.2.1 架构
ISP 的 Firmware 包含三部分,一部分是 ISP控制单元(控制DSP硬件寄存器的那部分代码)(\component\isp\firmware\src\main)和基础算法库(\component\isp\firmware\src\algorithms),一部分是AE/AWB/AF 算法库(\component\isp\3a,这里海思只提供了简化版),
一部分是 sensor 库(\component\isp\sensor,这里实现了驱动的逻辑部分,控制部分在Linux内核中实现)。Firmware 设计的基本思想是单独提供 3A 算法库和sensor库,由 ISP 控制单元调用基础算法库和 3A 算法库,同时 sensor 库分别向 ISP 基础算法库和 3A 算法库注册函数回调,以实现不同sensor的 适配。ISP firmware 架构如图1-2 所示。
图1-2 ISP firmware 架构
不同的 sensor 都以回调函数的形式,向 ISP 算法库注册控制函数。ISP 控制单元由于图像质量问题调度基
础算法库和 3A 算法库时,将通过这些回调函数获取ISP默认配置参数,然后控制 sensor,如调
节曝光时间、模拟增益、数字增益,控制 lens 步进聚焦或旋转光圈等。
1.2.2 开发模式
SDK 支持用户使用多种开发模式:
a. 用户使用海思的 3A 算法库。这时用户需要根据 ISP 基础算法库和 3A 算法库给出
的 sensor 适配接口去适配不同的 sensor。每款 sensor 对应一个文件夹,文件夹中
包含两个主要文件:
sensor_cmos.c
该文件中主要实现 ISP控制单元 需要的回调函数,这些回调函数中包含了 sensor 的适配算
法和参数设置,不同的 sensor 可能有所不同。
sensor_ctrl.c
sensor 的底层控制驱动,主要实现 sensor 的读写和初始化动作。用户可以根据
sensor 的 datasheet 进行这两个文件的开发,必要的时候可以向 sensor 厂家寻求支持。
b. 用户根据 ISP 库提供的 3A 算法注册接口,实现自己的 3A 算法库开发。这时用户
需要根据 ISP 基础算法库和用户的 3A 算法库给出的 sensor 适配接口去适配不同的
sensor。
c. 用户部分使用海思 3A 算法库,部分实现自己的 3A 算法库。例如 AE 使用
lib_hiae.a,AWB 使用自己的 3A 算法库。SDK 提供了灵活多变的支持方式。
1.2.3 内部流程
Firmware 内部流程分两部分,如图 1-3 所示。一部分是初始化任务,主要完成 ISP 控
制单元的初始化、ISP 基础算法库的初始化、3A 算法库的初始化,包括调用 sensor 的
回调获取 不同sensor 的初始化参数;另一部分是动态调节过程,单独开一个线程,在这个过程中,
firmware 中的 ISP 控制单元调度 ISP 基础算法库和 3A 算法库,实时计算并进行相应控
制。
1.2.4 软件流程
ISP 作为前端采集部分,需要和视频采集单元(VIU)协同工作。ISP 初始化和基本配
置完成后,需要 VIU 进行接口时序匹配。一是为了匹配不同 sensor 的输入时序,二是
为 ISP 配置正确的输入时序。待时序配置完成后,ISP 就可以启动 Run 来进行动态图
像质量调节。此时输出的图像被 VIU 采集,进而送去显示或编码。软件使用流程如图
1-5 示。
PQ Tools 工具主要完成在 PC 端进行动态图像质量调节,可以调节多个影响图像质量的
因子,如去噪强度、色彩转换矩阵、饱和度等。
图1-5 ISP firmware 使用流程
如果用户调试好图像效果后,可以使用 PQ Tools 工具提供的配置文件保存功能进行配
置参数保存。在下次启动时系统可以使用 PQ Tools 工具提供的配置文件加载功能加载
已经调节好的图像参数。
(2)重点是ISP的框架架构和软件流程
2.2、sample中ISP相关部分
(1)核心代码在SAMPLE_COMM_ISP_Init函数中
函数调用层次:
main
SAMPLE_VENC_720P_CLASSIC
SAMPLE_COMM_VI_StartVi
SAMPLE_COMM_VI_StartIspAndVi
SAMPLE_COMM_ISP_Init
sensor_register_callback
cmos_init_sensor_exp_function
HI_MPI_ISP_SensorRegCallBack
cmos_init_ae_exp_function
HI_MPI_AE_SensorRegCallBack
cmos_init_awb_exp_function
HI_MPI_AWB_SensorRegCallBack
HI_MPI_AE_Register
HI_MPI_AWB_Register
HI_MPI_AF_Register
HI_MPI_ISP_MemInit
HI_MPI_ISP_SetWDRMode
HI_MPI_ISP_SetPubAttr
HI_MPI_ISP_Init
SAMPLE_COMM_ISP_Run
Test_ISP_Run
HI_MPI_ISP_Run
2.3、sensor注册内部细节
sensor_cmos.c 文件中有很多全局变量,这些全局变量都是ISP的默认配置的算法参数
并且通过comsxxx等 众多回调函数 给ISP控制单元注册获取
2.4、ISP注册内部细节
在3a算法库向isp控制单元注册的回调函数的实现中,发现都是一些寄存器的设置,可见,算法的真正实现是在硬件DSP运算单元上,如果全是软件来写3a算法,则会加重SoC的负担
3.IQ调试相关的概念
3.1、黑电平
(1)暗电流
物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到像素,像素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行区分。
(2)Black Level(一定程度上解决暗电流的问题)
用来定义图像数据为0时对应的信号电平。
3.2、镜头阴影矫正
(1)LSC, Lens Shading Correction,镜头阴影矫正
(2)镜头物理原因,导致一帧内中心点像素的亮度值到边缘处逐渐减弱
(3)光波长的原因,导致图像有其它不同颜色的分光
(4)镜头阴影是摄像头系统本身引入的问题,所以需要ISP算法进行矫正
(5)矫正说明,参考:ISP-镜头阴影校正(LSC)_洗脚水煮饺子的博客-CSDN博客
3.3、坏点矫正
(1)DPC, defect pixel correction(有时也写为:bad point correction,BPC)
ISP-坏点校正(DPC)_洗脚水煮饺子的博客-CSDN博客
3.4、自动曝光
(1)AE, auto exposure
(2)曝光时间:sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这
段时间。
(3)曝光增益:由于光电转换后的电信号特别微弱,比如只有几mv,不足以进行AD转换,所以需要对 sensor 的输出电荷进行放大,曝光增益就是总的放大系数,一般分为有模拟增益(again)和数字增益(dgain)两步,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。
3.5、DRC与WDR
(1)DRC:Dynamic Range Compression
即动态范围压缩,目的是调整图像的动态范围,使得图像显示出更多的信息。 DRC 模块是一个基于人眼视觉系统特性的高级局部色阶映射(多空间动态范围压缩)引擎。
开启后,会提升暗处细节,同时也提升噪声,导致噪声强度相比DRC关闭时更大些,此时边缘增强,去噪功能都应该与DRC有关
简而言之就是让图像局部提升曝光增益一种功能
BLC:backlight compensation,背景光补偿
(2)WDR和DRC区别:
DRC开启后主要是提升暗处细节同时也提升噪声,所以在暗光下要考虑如何去掉噪点;而WDR是局部亮局部暗的情况下都能完美曝光显示
(3)WDR和BLC的效果对比,参考:
宽动态 (WDR)介绍和理解_A.Crocodile的博客-CSDN博客
ISP算法:宽动态HDR_isp hdr_蝴蝶也可以飞过沧海的博客-CSDN博客
3.6、噪声抑制
(1)noise reduction/denoise,一般图像比较暗的情况下噪声比较大
3.7、颜色插值
(1)Demosaic, 去马赛克,由bayer图像转换成RGB图像就有这个过程
(2)参考:图像Demosaic算法及其matlab实现_matlab demosaic_lemonHe_的博客-CSDN博客
3.8、自动白平衡
(1)WB:white balance,白平衡,同一个物体在光照不同的情况下呈现不同的颜色
(2)AWB:automatic white balance,自动白平衡
3.9、颜色矫正
(1)color correction
(2)CCM, color correction matrix
(3)sensor 对光谱的响应,在RGB 各分量上与人眼对光谱的响应通常是有偏差的,需要通过一个色彩校正矩阵CCM(Color Correction Matrix)校正光谱响应的交叉效应和响应强度,使前端捕获的图片与人眼视觉在色彩上保持一致。实际上矫正过程就是个矩阵运算过程。
(4)颜色矫正能提升图像饱和度,饱和度也称色彩的纯度。取决于该色中含色成分和消色成分(灰色)的比例。含色成分越大,饱和度越大;消色成分越大,饱和度越小。
3.10、伽马矫正
(1)gamma correction,用于提高低灰度处和周遭环境的对比度
(2)参考:gamma原理及快速实现算法_gamma计算公式_Melody20210917的博客-CSDN博客
3.11、自动增益控制
(1)AGC:automatic gain control,自动增益控制
(2)使用算法自动调节增益系数,使输入值变化很大时输出值基本保持线性不变
3.12、颜色空间转换
(1)CSC(Color Space Conversion)颜色空间转换,一般是将sRGB空间转换到YUV。
(2)LUT(Look-Up Table)查找表技术,可以在两组数据之间建立对应关系。可以用于颜色空间转换、CCM等
3.13、色度矫正
(1)CA (Chroma Adjustment)
色度调整,在亮度不变的情况下,调整色度。如YUV,对UV进行处理。
(2)CAC (Chromatic Aberration Correction)
由于不同颜色的光在通过镜头时以不同的速度传播,镜头对于所有波长的光不能聚集于一点而引起的“紫边”现象。和镜头阴影第二点一样。
3.14、图像锐化
(1)Sharpen
(2)图像锐化的实质:锐化后图像=原图像+加重的边缘
3.15、感知色
PCR (Preferred Color Reproduction)
大部分情况图像是给人看的,不同的人有不同的颜色喜好,根据用户爱好改变色调空间,称为喜好色。另一种称为感知色。
3.16、图像增强
IE(Image Enhancement)
增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。图像增强涉及许多操作,如降噪,边缘增强,对比度增强。因此,图像增强可以不顾增强后的图像是否失真,只要看着舒服就行。
4.PQTool工具的安装和使用
4.1、PQTool的2部分介绍
Hi3518E V200R001C01SPC030\01.software\pc\PQ_TOOL\Hi3518E_PQ_V1.0.3.0是开发板端服务器软件
Hi3518E V200R001C01SPC030\01.software\pc\PQ_TOOL\PQTools是PC端客户端软件
4.2、准备工作
(1)串口终端和telnet双登录以便两边同时运行程序
(2)Windows IP设置好,防火墙关闭
(3)开发板端运行sample和HiIspTool.sh
(4)pc端运行HiPQTools
配置以上,点击OK
连接之后,这个工具会通过网络向开发板服务器端获取DSP所有的参数
All read可以重新获取这些参数
All write可以将更改完的参数写回开发板去
read Page是获取当前页的参数
write Page是只写回去当前页的参数
auto write是实时更改、实时写
比如我修改Gamma矫正相关的参数
注意:这里只是暂时更改了内存中那份isp使用的参数,如果重新运行sample,还是会使用代码中的那份参数,代码是没有修改的,所以接下来就是将这组参数修改到代码中去,然后运行测试
5.模拟图像参数调整试验
5.1、gamma参数试验
(1)PQTool工具读取gamma的默认参数,存成txt,和源码中写死的值对比
(2)PQTool中更改gamma参数,保存效果截图,保存新的参数txt
(3)将参数txt更改格式后备用
(4)在isp源码中更改新参数,并且重新编译整个isp和sample
(5)重新部署新生成的hi3518e_isp.ko和libisp.so文件到开发板,重启开发板
(6)在开发板中运行sample看效果,和之前的截图对比