海思平台图像的IQ调试

news2024/11/8 22:32:51

目录

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看效果,和之前的截图对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

1208道Java面试题(2023突击版),覆盖互联网大厂核心知识点

Java 面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。…

需求分析引言:架构漫谈(三)可用性专题

前文介绍了非功能性需求的各个指标和一些业界的标准。 非功能性需求里有一项可靠性,与之关联的一个指标叫可用性 本文对非功能性需求里的可用性、可靠性,进行一些详细的说明。 概念 我们在网上的云服务商处,经常看到产品介绍里会有这种字样…

Redis【实战篇】---- 分布式锁-redission

Redis【实战篇】---- 分布式锁-redission 1. 分布式锁-redission功能介绍2. 分布式锁-redission快捷入门3. 分布式锁-redission可重入锁原理4. 分布式锁-redission锁重试和WatchDog机制5. 分布式锁-redission锁的MutiLock原理 1. 分布式锁-redission功能介绍 基于setnx实现的分…

【AcWing算法基础课】第一章 基础算法(部分待更)

文章目录 前言课前温习一、快速排序核心模板1.1题目描述1.2思路分析1.3代码实现 二、归并排序核心模板2.1题目描述2.2思路分析2.3代码实现 三、二分查找整数二分题目一3.1题目描述3.2思路分析3.3代码实现 浮点数二分题目二3.1题目描述3.2思路分析3.3代码实现 四、高精度加法核心…

SpringBoot实战(十八)集成Feign

目录 一、简介1.定义2.关键特征 二、Maven依赖三、编写代码1.DemoController.java2.DemoFeignClient.java3.启动类注解 EnableFeignClients 四、测试 一、简介 1.定义 OpenFeign:是由 Netflix 开发的声明式的 Web 服务客户端。它简化了向 RESTful Web 服务发送 HT…

python接口自动化(八)--发送post请求的接口(详解)

简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是…

HOT31-K个一组翻转链表

leetcode原题链接:K个一组翻转链表 题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余…

html实现酷炫好看的个人介绍主页(附源码)

文章目录 1.设计来源1.1 主界面1.2 我的简介界面1.3 教育经历界面1.4 我的源码界面1.5 我的相册界面1.6 朋友评价界面1.7 热门文章界面1.8 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.3 代码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csd…

vue3使用高德地图实现点击获取经纬度以及搜索功能

话不多说直接上干活 在此之前你需要有高德地图的 key&#xff0c;这个自己去申请即可 1&#xff0c;首先需要在终端安装 npm i amap/amap-jsapi-loader --save 2&#xff0c;准备一个容器 <template><div id"container"></div> </templat…

Python 识别拼图验证码

需要识别的某易易盾验证码如下: 识别过程也是非常简单,使用现成的拼图库就行,本文记录一下使用心得(其实也没啥心得,开箱即用,太简单了): 首先,下载gaps拼图库 Install requirements: $ pip install -r requirements.txt $ sudo apt-get install python-tkInstall …

爱奇艺数据湖实战-广告数据湖应用

01 背景 广告数据主要包括效果、品牌和ADX等广告形式的请求和投放链路中产出的一系列日志&#xff0c;经过处理后&#xff0c;用于算法模型训练、广告运营分析、广告投放决策等场景。广告业务对数据的时效性、准确性以及查询性能要求较高。目前&#xff0c;广告数据链路整体采用…

【C语言扫雷的显微镜级别讲述】

C语言扫雷的显微镜级别讲述 分析 很久之前写过这个 现在做一个详细复述从源头出发 首先我们想写扫雷 最基本的框架 1&#xff08;外部&#xff09;.这个游戏可以玩完之后再玩一次 2.&#xff08;内部&#xff09;首先是要创建一个游戏场地 3.&#xff08;内部&#xff09; 电…

Set 集合

1:特点 无序&#xff1a;存取顺序不一致不重复&#xff1a;可以去除重复无索引&#xff1a;不能使用普通for循环遍历&#xff0c;也不能通过索引来获取元素 2&#xff1a;实现类特点 HashSet&#xff1a; 无序&#xff0c;不重复&#xff0c;无索引LinkedHashSet&#xff1a…

Python3 实例(三) | 菜鸟教程(二十一)

目录 一、Python 二分查找 二、Python 线性查找 三、Python 插入排序 四、Python 快速排序 五、Python 选择排序 六、Python 冒泡排序 七、Python 归并排序 一、Python 二分查找 &#xff08;一&#xff09;二分搜索是一种在有序数组中查找某一特定元素的搜索算法。 &a…

手写map

目录 背景过程简介手写HashMap4、put方法5、get方法5、remove方法 总结 背景 让我们来了解一下HashMap吧 过程 简介 HashMap是Java中一中非常常用的数据结构&#xff0c;也基本是面试中的“必考题”。它实现了基于“K-V”形式的键值对的高效存取。JDK1.7之前&#xff0c;Ha…

Docker容器的tomcat安装后访问报404页面的解决办法

上次我们创建的tomcat容器访问的时候是404页面,是因为高版本的并没有把默认的页面放到webapps目录下,这时,就需要我们登录创建的tomcat容器了 登录tomcat容器: docker exec -it my_tomcat /bin/bash 查看当前目录: ls 将webapp.dist下的默认页面复制到webapps目录下: cp …

unity3d:YooAsset零冗余构建Assetbundle代码分析

BuildAssetInfo构建asset信息 1.每个收集器下asset会构建出BuildAssetInfo&#xff0c;这种asset是没有冗余&#xff0c;只有依赖列表 2.每个依赖asset会构建出BuildAssetInfo&#xff0c;会记录将要打入的bundle列表 依赖的Asset列表 这个asset依赖的其他asset列表&#xf…

Tree 树结构

Case 1st 最少的摄像头——亚马逊面试问题 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄像机都可以监视其父级、自身及其直接子级。 计算监视树的所有节点所需的最小摄像机数。 例&#xff1a; Input: [0,0,null,0,0]Output: 1Explanation: One cam…

asp.net宠物购物商城系统MyPetShop

asp.net宠物购物商城系统 在线购物网站&#xff0c;电子商务系统 主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; 用户可以购买宠物&#xff0c;查看订单记录 修改密码等 运行环境&#xff1a; 运行需vs2013或者以上版本&#xff0c;sql serv…