海思平台图像的IQ调试
文章目录
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,以达到自动调节视频图像质量的目的。
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 所示。
不同的 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)矫正说明,参考:https://blog.csdn.net/xiaoyouck/article/details/77206505
3.3 坏点矫正
(1)DPC, defect pixel correction(有时也写为:bad point correction,BPC)
https://blog.csdn.net/xiaoyouck/article/details/73134846
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的效果对比,参考:
https://blog.csdn.net/tr_ainiyangyang/article/details/82388559
https://blog.csdn.net/a200800170331/article/details/79272174
3.6 噪声抑制
(1)noise reduction/denoise,一般图像比较暗的情况下噪声比较大
3.7 颜色插值
(1)Demosaic, 去马赛克,由bayer图像转换成RGB图像就有这个过程
(2)参考:https://blog.csdn.net/helimin12345/article/details/81674590
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)参考:https://blog.csdn.net/chenjuan0530/article/details/78970791
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看效果,和之前的截图对比
文章来源csdn,如有侵权联系删除
- 分享
- 举报
-
hpj 2024-01-01 20:03:05回复 举报有没有大神写一篇 16DV500的,开hnr
-
浏览量:2946次2020-08-05 20:57:46
-
浏览量:1546次2020-08-10 19:19:56
-
浏览量:9095次2020-12-22 15:50:36
-
浏览量:1426次2024-01-02 16:35:00
-
浏览量:3677次2019-12-31 16:26:54
-
浏览量:7181次2021-03-18 08:54:25
-
浏览量:11216次2020-12-16 19:13:45
-
浏览量:6867次2020-11-26 17:02:47
-
浏览量:5156次2021-07-28 17:32:20
-
2023-12-11 10:52:14
-
浏览量:717次2023-12-22 11:12:20
-
浏览量:2941次2020-08-03 11:02:46
-
浏览量:16387次2021-02-19 17:01:32
-
浏览量:1566次2022-12-17 11:50:11
-
浏览量:2447次2019-12-31 16:23:45
-
浏览量:4226次2020-09-04 15:36:49
-
浏览量:1534次2023-10-12 16:48:04
-
浏览量:4507次2020-08-26 17:30:20
-
浏览量:806次2023-12-22 11:24:42
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
愚人陆陆
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明