目录

  • 一、何为ISP何为IQ调试
    • 1、ISP概念剖析
    • 2、在哪里做ISP
    • 3、何为IQ
    • 4、ISP和IQ总结
  • 二、海思MPP中ISP的实现框架
    • 1、官方文档
    • 2、sample中ISP相关部分再次解读
    • 3、海思MPP中ISP的实现框架3
    • 3、sensor注册的细节

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

mainSAMPLE_VENC_720P_CLASSICSAMPLE_COMM_VI_StartViSAMPLE_COMM_VI_StartIspAndViSAMPLE_COMM_ISP_Initsensor_register_callback //sensor注册回调函数cmos_init_sensor_exp_function //进行一些初始化,接口对接HI_MPI_ISP_SensorRegCallBack //sensor向isp基础算法库注册回调函数cmos_init_ae_exp_functionHI_MPI_AE_SensorRegCallBack//sensor向AE算法库注cmos_init_awb_exp_functionHI_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_RunTest_ISP_RunHI_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;
}

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

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

海思平台ISP与图像的IQ调试(1)相关推荐

  1. 海思平台ISP系列从零开始:一、PQTools工具的使用总结

    海思平台 ISP 系列: 一. PQTools 工具使用方法 正所谓工欲善其事必先利其器,磨刀不误砍柴工, 想要在海思平台开始IQ, 就得利用海思SDK中提供的PQTools工具,这个工具作的很好的, ...

  2. 海思平台ISP调试经验

    ISP模块介绍 ISP是Image Signal Processor的缩写,全称是影像处理器.在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照.录像的第 ...

  3. 海思平台ISP的ae的简介

    AE 模块实现的功能是: 根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈.sensor 快门及增益来获得最佳的图像质量.自动曝光的算法主要分光圈优先.快门优先.增益优先.光圈优先时算法会优先 ...

  4. 海思平台(hi3559/hi3519/hi3516/hi3518)下的ISP功能介绍及问题调试总结(包括黑光成像/逆光成像/降噪/宽动态wdr/偏色等问题)

    海思平台下的ISP功能介绍及问题调试 平台说明 该调试是在海思平台下进行的(我用的是3559,在3519/3516测试也是没有问题的,只是部分参数稍微有差异.其海思他系列处理器的ISP调试大体上也是一 ...

  5. 海思平台的视频输入(VI)模块的介绍(以hi3559av100为例)

    当前是从海思平台的mpp角度理解VI这一部分的. 视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT. ...

  6. 海思平台OSD的实现(1)

    目录 一.海思平台OSD理论学习 1.OSD概述 2.海思OSD的4种类型 3.4种OSD类型各自支持的模块和功能 4.海思OSD的几个重要概念 5.海思平台OSD使用方法 6.海思平台OSD的API ...

  7. c++ opencv mat_海思平台OpenCV编译与进一步裁剪

    OpenCV是计算机视觉算法开发常用的工具.如果我们需要在嵌入式设备上运行opencv,那么就需要交叉编译,将它移植到对应平台上.但是有些嵌入式平台的存储空间有限,能节省1MB也有相当大的作用.Ope ...

  8. YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(中)

    YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(上) YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(中) YOLO系列(v1~v3)的学习及Y ...

  9. 第8季1:海思平台OSD的理论基础

    以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 一.OSD概述 1.区域管理模块 "OSD"是"on screen display"的缩写,即在 ...

最新文章

  1. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
  2. 在线场景感知:图像稀疏表示-ScSPM和LLC总结(lasso族、岭回归)
  3. Sqoop拒绝连接错误
  4. java把一段英文拆成单词_java编程题,输入一段英文文章,单词之间都已经用空格分隔,本人想以每5个单词为一行输出,怎么写?请指教...
  5. 什么是web标准??
  6. Jalview | 多序列比对图中显示序列标识
  7. node.js + express 初体验【hello world】
  8. net执行oracle的存储过程
  9. 高中生计算机考试软件手机版,信考中学信息技术考试练习系统内蒙古高中版
  10. python读取lmdb文件_LMDB 的 Python 接口使用方法
  11. [docker]dockerfile简介与应用
  12. flux mono 转_自语之Reactor中FluxMono的粗略使用
  13. linux 下安装redis并设置开机自启动
  14. php如何进行seo,如何做百度SEO?有哪些技巧?
  15. python提取时长2s以内的单词音频的韵母基频,以及单词词长信息
  16. 降噪蓝牙耳机评测排行榜最新,综合表现好的降噪蓝牙耳机分享
  17. 在vue项目中使用html2canvas实现保存网页为图片
  18. CAD中光栅图像参照设置透明和非透明打印成PDF的效果对比
  19. 【实战案例】分享6种常用的信用卡欺诈检测算法(附 Python 代码)
  20. 功能测试_测试用例设计方法

热门文章

  1. 张小龙2019微信公开课15个看点总结
  2. mxnitro浏览器 v1.0.0.500 官方版
  3. 谈谈对MVVM的理解?
  4. 利用IP查主机名的三种方法
  5. 计算机学院实验员岗位基本知识,实验室人员职责
  6. 最新2015浦东新区初中排名 分为四个档次
  7. 百度2015校园招聘面试题(成功拿到offer)
  8. 移动端网站的几大好处
  9. zz十年学会程序设计
  10. 小程序分销商城能帮助商家解决哪些问题?