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

这篇具有很好参考价值的文章主要介绍了海思平台ISP与图像的IQ调试(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、何为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。

海思平台ISP与图像的IQ调试(1)
  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的距离,不过我的开发板使用的镜头是固定的,焦距是固定的,
不可变

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

  PQ Tools 工具主要完成在 PC 端进行动态图像质量调节,可以调节多个影响图像质量的因子,如去噪强度、色彩转换矩阵、饱和度等。
海思平台ISP与图像的IQ调试(1)
  如果用户调试好图像效果后,可以使用 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;
}

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

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

到了这里,关于海思平台ISP与图像的IQ调试(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海思越影3516DV500/3519DV500/3519AV200/SD3403等新一代AI-ISP视觉SOC重磅回归,视觉类端侧人工智能产品又有了根基

            过去的三年,是视觉人工智能生态厂商最悲催的3年了,海思的视觉人工智能SOC相继停产,价格一度被爆炒,平均都要涨几倍,成本承受不住,众多的玩家被迫换平台。这不换还好,一换平台就让生态玩家丢了半条命。生态玩家一般只有局部的资源和能力,大部分

    2024年02月11日
    浏览(55)
  • isp调试工具环境搭建及其介绍!

    后期调试isp,是在rv1126提供的RKISP2.x Tuner工具上进行调试,所以我们大前提必须要把这个环境和一些操作先搞熟悉来,后面有一些专用术语,我们遇到了再去看,现在专门看一些专用术语,也记不住,也不知道他是干嘛用的,所以我们用到了,再去查看,这样可以节约学习成

    2024年02月14日
    浏览(48)
  • 基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月16日
    浏览(31)
  • 基于PyQt5的桌面图像调试仿真平台开发(8)锐化

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月12日
    浏览(30)
  • 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月12日
    浏览(28)
  • 基于PyQt5的桌面图像调试仿真平台开发(10)色彩矩阵

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月13日
    浏览(22)
  • 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月11日
    浏览(42)
  • 海思3559万能平台搭建:RTSP实时播放的优化

      之前的rtsp功能,仅仅是对demo的简单修改,(是通过保存本地文件后在读取本地文件数据再播放)。这样存在的主要问题是,如果是先保存好文件,在读取文件传给rtsp播放,有多此一举的嫌疑,而且这样人为的增加了延迟不说,有没有这么大的硬盘让我们一直实时观看呢

    2023年04月08日
    浏览(35)
  • 基于PyQt5的桌面图像调试仿真平台开发(11)清晰度测试

    基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理 基于PyQt5的桌

    2024年02月12日
    浏览(29)
  • 海思3559万能平台搭建:SPI输出h264码流

      面对各种各样的客户需求,spi接口也是一种传码流的形式,spi同步422可以保证抗干扰能力强的同时传输距离也很长,本文会介绍海思平台spi作为主机的发送功能以及发送码流的处理方式   首先需要配置的肯定是管脚复用,以spi0为例    查看pinout表格   直接用命令

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包