海思平台ISP与图像的IQ调试(1)

本文探讨了ISP概念,解释了图像信号处理在摄像头中的作用,介绍了ISP和IQ的关系,以及在海思MPP平台中ISP的实现框架,包括官方文档、Sample代码解析和sensor注册细节。重点在于ISP调试和IQ优化的方法,以及PQTools工具的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、何为ISP何为IQ调试

1、ISP概念剖析

(1)ISP: image signal process,图像信号处理(现今一般指数字图像信号处理)
    image signal processor 图像信号处理器

  ISP(Image Signal Processing) 图像信号处理。主要用来对前端图像传感器输出信号处理的单元,以匹配不同厂商的图象传感器。相机用图像处理器ISP(Image Signal Processor)。
(2)思考:什么是图像信号?

  图像信号是通过光电器件和扫描产生的电信号代表图像的亮度信息。

(3)为什么需要处理?

  器件或环境不理想导致图像不理想,譬如过曝光、不通透、坏点

(4)如何处理?

  使用针对性算法对原始图像数据做运算处理。先天(器件、环境)不行,后天(算法)来补

(5)ISP的本质:用采集后的数字图像的运算处理修补前端的不理想,尽量提升图像质量

(6)ISP处理器:核心是数字运算能力

2、在哪里做ISP

(1)镜头->sensor->ISP->VIU->…

(2)ISP单元可以在sensor中,或者独立,或集成到AP SoC中,现在大多在AP(Application processor)中

(3)HI3518E中内置ISP单元

3、何为IQ

(1)image quality,图像质量

(2)浅层次的图像质量问题:坏点、畸变、条纹、局部不清晰等

(3)高层次的图像质量问题:通透性、锐度、色彩饱满度、色彩还原度等

通透性:图片的清晰度,通透性低的话看起来模糊,
锐度:图片中物理的轮廓,如果很低会导致轮廓不清晰
色彩饱和度:颜色的鲜艳程度
色彩还原度:颜色的真实性

4、ISP和IQ总结

(1)IQ是目的,ISP是手段,调试是方法

(2)掌握ISP和IQ调试的关键:相关概念、海思MPP中ISP的实现、PQTool工具

二、海思MPP中ISP的实现框架

1、官方文档

(1)《HiISP开发参考》 与 《ISP_3A开发指南》

链接:https://pan.baidu.com/s/1KZqnKOG7h0TjOJLWLuogkg 
提取码:q0o6 
--来自百度网盘超级会员V5的分享

(2)重点是ISP的框架架构和软件流程

  ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括 3A(AE 自动曝光 AF 自动对焦 AWB 自动白平衡)、坏点校正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理。 ISP 包括逻辑部分以及运行在其上的 firmware。

在这里插入图片描述
  lens 将光信号投射到 sensor 的感光区域后, sensor 经过光电转换,将 Bayer 格式的原始图像送给 ISP, ISP 经过算法处理,输出 RGB 空间域的图像给后端的视频采集单元。在这个过程中, ISP 通过运行在其上的 firmware 对 ISP逻辑, lens 和 sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。其中, firmware 的运转靠视频采集单元的中断驱动。 PQ Tools 工具通过网口或者串口完成对 ISP 的在线图像质量调节。

  ISP 由 ISP 逻辑及运行在其上的 Firmware 组成,逻辑单元除了完成一部分算法处理外,还可以统计出当前图像的实时信息。 Firmware 通过获取 ISP 逻辑的图像统计信息,重新计算,反馈控制 lens、 sensor 和 ISP 逻辑,以达到自动调节图像质量的目的。

过曝光:进光太多
lens:镜头距离sensor的距离,不过我的开发板使用的镜头是固定的,焦距是固定的,
不可变

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)ISP 作为前端采集部分,需要和视频采集单元( VIU)协同工作。 ISP 初始化和基本配置完成后,需要 VIU 进行接口时序匹配。一是为了匹配不同 sensor 的输入时序,二是为 ISP 配置正确的输入时序。待时序配置完成后, ISP 就可以启动 Run 来进行动态图像质量调节。此时输出的图像被 VIU 采集,进而送去显示或编码。

  PQ Tools 工具主要完成在 PC 端进行动态图像质量调节,可以调节多个影响图像质量的因子,如去噪强度、色彩转换矩阵、饱和度等。
在这里插入图片描述
  如果用户调试好图像效果后,可以使用 PQ Tools 工具提供的配置文件保存功能进行配置参数保存。在下次启动时系统可以使用 PQ Tools 工具提供的配置文件加载功能加载已经调节好的图像参数。

2、sample中ISP相关部分再次解读

(1)核心代码在SAMPLE_COMM_ISP_Init函数中(mpp/sample/common/sample_comm_isp.c)

  分析使用的源码在以往文章中任意选择一个皆可,我就不重复提供了。

(2)注意对照上边所讲述的架构来理解代码

3、海思MPP中ISP的实现框架3

参考学习:
图像sensor的特性和驱动解析(1)
图像sensor的特性和驱动解析(2)

main
	SAMPLE_VENC_720P_CLASSIC
		SAMPLE_COMM_VI_StartVi
			SAMPLE_COMM_VI_StartIspAndVi
				SAMPLE_COMM_ISP_Init
					sensor_register_callback //sensor注册回调函数
						cmos_init_sensor_exp_function //进行一些初始化,接口对接
						HI_MPI_ISP_SensorRegCallBack //sensor向isp基础算法库注册回调函数
						cmos_init_ae_exp_function
						HI_MPI_AE_SensorRegCallBack//sensor向AE算法库注
						cmos_init_awb_exp_function
						HI_MPI_AWB_SensorRegCallBack//sensor向AWB算法库注
					HI_MPI_AE_Register //AE算法库向isp基础算法库注册
					HI_MPI_AWB_Register //AWB算法库向isp基础算法库注册
					HI_MPI_AF_Register //AF算法库向isp基础算法库注册
					HI_MPI_ISP_MemInit //初始化 ISP 外部寄存器。
					HI_MPI_ISP_SetWDRMode //设置宽动态模式
					HI_MPI_ISP_SetPubAttr //设置 ISP 公共属性
					HI_MPI_ISP_Init //初始化 ISP firmware。
				SAMPLE_COMM_ISP_Run
					Test_ISP_Run
						HI_MPI_ISP_Run// 运行 ISP firmware。

3、sensor注册的细节

HI_S32 cmos_init_sensor_exp_function(ISP_SENSOR_EXP_FUNC_S *pstSensorExpFunc)
{
    memset(pstSensorExpFunc, 0, sizeof(ISP_SENSOR_EXP_FUNC_S));

    pstSensorExpFunc->pfn_cmos_sensor_init = sensor_init;
    pstSensorExpFunc->pfn_cmos_sensor_exit = sensor_exit;
    pstSensorExpFunc->pfn_cmos_sensor_global_init = sensor_global_init;//初始化一些全局参数
    pstSensorExpFunc->pfn_cmos_set_image_mode = cmos_set_image_mode;//向sensor设置image mode;
    pstSensorExpFunc->pfn_cmos_set_wdr_mode = cmos_set_wdr_mode;//操作sensor的寄存器
    
    pstSensorExpFunc->pfn_cmos_get_isp_default = cmos_get_isp_default;//读取isp默认配置参数
    pstSensorExpFunc->pfn_cmos_get_isp_black_level = cmos_get_isp_black_level;//黑电平处理
    pstSensorExpFunc->pfn_cmos_set_pixel_detect = cmos_set_pixel_detect;
    pstSensorExpFunc->pfn_cmos_get_sns_reg_info = cmos_get_sns_regs_info;

    return 0;
}

static ISP_CMOS_DRC_S g_stIspDrc =//这些参数也是我们之后调参修改的
{
    0,
    10,
    0,
    2,
    192,
    60,
    0,
    0,
    0,
    {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}
};

HI_U32 cmos_get_isp_default(ISP_CMOS_DEFAULT_S *pstDef)
{   
    if (HI_NULL == pstDef)
    {
        printf("null pointer when get isp default value!\n");
        return -1;
    }

    memset(pstDef, 0, sizeof(ISP_CMOS_DEFAULT_S));
	
    switch (genSensorMode)
    {
        default:
        case WDR_MODE_NONE:

            memcpy(&pstDef->stDrc, &g_stIspDrc, sizeof(ISP_CMOS_DRC_S));
            memcpy(&pstDef->stDemosaic, &g_stIspDemosaicLin, sizeof(ISP_CMOS_DEMOSAIC_S));
            memcpy(&pstDef->stGe, &g_stIspGeLin, sizeof(ISP_CMOS_GE_S));			

			pstDef->stNoiseTbl.stNrCaliPara.u8CalicoefRow = DMNR_CALIB_CARVE_NUM_AR0130;
			pstDef->stNoiseTbl.stNrCaliPara.pCalibcoef    = (HI_FLOAT (*)[4])g_coef_calib_ar0130;
			//memcpy(&pstDef->stNoiseTbl.stNrCommPara, &g_stNrCommPara,sizeof(ISP_NR_COMM_PARA_S));
			memcpy(&pstDef->stNoiseTbl.stIsoParaTable[0], &g_stNrIsoParaTab[0],sizeof(ISP_NR_ISO_PARA_TABLE_S)*HI_ISP_NR_ISO_LEVEL_MAX);
			

			memcpy(&pstDef->stRgbSharpen, &g_stIspRgbSharpen, sizeof(ISP_CMOS_RGBSHARPEN_S));
			memcpy(&pstDef->stUvnr,       &g_stIspUVNR,       sizeof(ISP_CMOS_UVNR_S));
			memcpy(&pstDef->stDpc,       &g_stCmosDpc,       sizeof(ISP_CMOS_DPC_S));
        break;

    }
    pstDef->stSensorMaxResolution.u32MaxWidth  = 1280;
    pstDef->stSensorMaxResolution.u32MaxHeight = 720;

    return 0;
}

  关于这部分代码要想理解的很深刻,只能自己对着数据手册去分析代码!个人精力有限,就不去做这部分工作了,我目前的实际开发也不需要去做,只能宏观理解,抓大放小了。

注:本文章参考了《朱老师物联网大讲堂》课程笔记,并结合了自己的实际开发经历以及网上他人的技术文章,综合整理得到。如有侵权,联系删除!水平有限,欢迎各位在评论区交流。

### 如何使用海思 PQTools 进行 IQ 调整 #### 使用工具前的概念理解 在开始调整之前,需先了解一些基础概念。图像质量 (Image Quality, IQ) 是指通过一系列算法优化后的图像效果表现,包括但不限于通透性、锐度、色彩饱满度以及色彩还原度等方面的表现[^4]。 #### 海思 MPP 中 ISP 的实现框架概述 海思多媒体处理平台 (MPP) 提供了一套完整的解决方案用于图像信号处理器 (ISP) 和画质增强器 (PQ) 的开发调试。其中,PQTools 是专门设计用来辅助开发者完成画质调优工作的工具之一[^1]。 #### 具体操作指南 以下是利用 **PQTools** 对 IQ 参数进行调整的具体方法: 1. **加载默认配置** 打开 PQTools 后,默认会读取预设的配置文件。这些文件包含了传感器的基础设置以及其他硬件模块的相关初始化数据。如果当前项目已有特定的配置,则可以直接导入对应的 `.cfg` 文件[^2]。 2. **实时查看图像效果** 利用 Stream 工具可观察到实际输出的画面情况。此功能允许用户即时更改某些参数并立即看到其影响,比如当 Sensor 支持 WDR/HDR 功能时,在配置好相应模式后即可在此界面下切换不同的曝光策略以比较 Lean Mode Wide Dynamic Range (WDR) 下的效果差异。 3. **Gamma 曲线校正** Gamma 参数对于最终呈现的颜色深浅有着重要影响。可以通过修改 gamma 表中的数值来达到理想的视觉感受。具体做法是在 GUI 上找到对应选项卡,按照需求微调各个亮度等级下的映射关系直至满意为止[^3]。 4. **白平衡调节** 白平衡决定了场景内的白色物体能否正确显示出来。通常情况下需要针对不同光照条件分别设定一组合适的 RGB 增益系数。这一步骤同样可以在软件界面上轻松完成并通过监视窗口确认结果是否符合预期。 5. **降噪处理** 数字摄像机不可避免地会产生噪声干扰,特别是在弱光环境下更为明显。因此适当启用 NR(Noise Reduction) 技术就显得尤为重要。一般而言,增加强度虽然能有效减少杂讯但也可能连带抹去细节纹理;反之则保留更多信息却让画面更加粗糙。所以要依据具体情况权衡利弊做出最佳抉择。 6. **保存自定义设置** 完成上述各项调整之后记得及时存储新的 profile 至本地磁盘以便后续重复应用或者分享给团队成员共同参考学习。 ```bash # 示例命令:运行 HiIspTool 并指定摄像头型号 ./HiIspTool.sh -a imx334 ``` 以上便是基于海思 PQTools 实现全面而细致化的 IQ 参数调控全过程介绍。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嵌同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值