FPGA转行ISP的探索之二:技术路线和概念-LMLPHP

ISP领域的概念

1 相机方面的概念

1)DENOISE,图像去噪

图像噪声按噪声与信号的关系可分为加性噪声和乘性噪声;按照产生原因可分为外部噪声和内部噪声;按照统计特性可分为平稳噪声和非平稳噪声;平稳噪声基于统计后的概率密度函数又可以分为:高斯噪声、泊松噪声、脉冲噪声、瑞利噪声。

图像去噪的算法一般是滤波,比如空域滤波,变换域滤波,机器学习方法等,经常是用OpenCV的代码来写。

2) CONTRAST,对比度

对比度调节在科研成像中的两个重要作用:将图像调亮,让噪音消失。
图像由像素组成,每个像素的值我们称之为灰度值(Gray Scale),灰度值的大小代表每个像素的亮度,越大越亮;

灰度最小值为0,最大值由图像的位深决定,例如位深为8的图像(即我们常说的8位的图像或者8bit的图像),最大值为2的8次方即256;

当图像在电脑屏幕上显示时,0并不一定代表最暗(即纯黑),256并不一定代表最亮(即纯白),我们完全可以将譬如203设置为最亮,15设置为最暗;

将图像的灰度值与电脑屏幕的纯白和纯黑对应设置的过程我们称之为图像的对比度调节。说通俗点就是拉对比度。

3) SATURATION,饱和度

饱和(Saturation)数值是成像传感器(imaging sensor)的一个重要指标,不同相机的饱和(saturation)的数值不一样。

饱和度计算公式:

Ω=双键数+三键数×2+环数

饱和度可定义为彩度除以明度,与彩度同样表征彩色偏离同亮度灰色的程度。

但由于其和彩度决定的是表现于人眼里的同一个效果,

所以才会出现视彩度与饱和度为同一概念的情况。

可以理解为饱和度虽然表现的东西在人眼中与彩度一致,

但实际是包含着彩度更高一级的单位(饱和度=彩度÷明度)。

4) SHARPNESS,清晰度/图像锐化

sharpness在图像的边缘更明显,一般用图像的边缘响应来测量。

sharpness有几种测量方法:10%-90%上升距离法,MTF,空间频域,斜边算法等。

假设,在一张白色图像里有一个黑色条纹,那么黑色条纹边缘的像素亮度由里到外是逐渐升高的,最暗的地方是黑色条纹的中间部分,最亮的地方在白色区域,而上图中亮度变化的快慢就表示成像系统的清晰程度。取10%-90%这一距离来表示清晰度,距离越大,说明边缘像素的亮度变化越缓慢,黑白交界处就越模糊,清晰度就越低。

FPGA转行ISP的探索之二:技术路线和概念-LMLPHP

2 手机的camera结构和成像流程

不同于胶卷相机和单反相机,手机中的Camera已经集成为一个整体的模组,感光sensor(芯片)为核心器件,其它组成器件包括镜头、音圈马达、eeprom等。

其中的sensor IC,音圈马达和eeprom需要通过I2C进行控制,图像数据通过MIPI协议进行传输。其基本工作原理为:景物通过镜头生成光学图像投射到图像传感器表面上,产生电信号,经过A/D转换后变为数字图像信号,再将数字图像信号输出至手机的图像处理芯片(ISP)中。

3 ISP的技术路线

通常分为两种技术路线
1)针对相对固定的业务场景,本身又包含强大的算法团队支撑,也就是说可以明确自己想要什么算法落在芯片上(又能保证在产品周期内算法的竞争力),通常采用ASIC的设计。这种设计的优势对芯片来说是显而易见的,即最优的PPA,缺点是算法不能改动。采用此类设计方案的厂商包括比如Nvidia, TI和海思等

2)另一种方案是采用软核的方案,即采用可编程的DSP加速ISP算法。优势就在于其可编程性增加了算法的灵活性,便于OEM提供差异化的算法针对不同业务场景,主要厂商包括高通和NXP等.

4 典型ISP:S32V处理器

该芯片是NXP提供的第二代视觉处理器系列,旨在支持图像处理的计算密集型应用,并提供了一个ISP、强大的3D GPU、双APEX-2视觉加速器和安全性,以及支持SafeAssure™。S32V适用于ADAS、NCAP前视摄像头、异物检测和识别、环视、机器学习和传感器融合应用,S32V专为汽车级可靠性、功能安全和安全措施而设计,以支持汽车和工业自动化。

从编程的角度来看完成ISP的功能需要两个维度的编程工作:
1)Kernel层面的函数实现pixel级图像处理功能,通常用来实现单一或者融合的ISP算法,计算过程运行在IPUS/IPUV中。
2)Graph层面用于组合和排列各种算法实现完整的ISP pipeline. 这部分工作更像是对处理流程的描述,然后通Seqeuncer完成IPU的任务调度和buffer的状态管理。Sequence的代码由厂商作为firmware提供,并向用户开放特定API用于如IPU寄存器读写请求等工作。

5 ISP firmware

ISP firmware是指嵌入式系统中的固件,用于控制和管理图像传感器(Image Sensor)的功能和算法。

ISP firmware通常由多个部分组成,包括ISP控制单元和基础算法库、AE(Auto Exposure)/AWB(Auto White Balance)/AF(Auto Focus)算法库以及sensor库

其中,ISP控制单元和基础算法库负责调度和管理各种算法库的运行,而AE/AWB/AF算法库则负责实现自动曝光、自动白平衡和自动对焦等功能。sensor库则用于与ISP基础算法库和3A算法库进行函数回调,以实现对不同传感器的适配。
通过ISP firmware,可以实现对图像传感器的控制和优化,从而提高图像质量和性能。它可以应用于各种嵌入式系统中,如数字相机、智能手机、安防监控等。

6 ISP的工作

大致理解ISP的工作是在做固件/驱动,会看已有产品的芯片手册,会用OpenCV编程(C语言或者Python),可能也有一部分类似FPGA的工作,只不过因为芯片是固定的(ASIC),是了解而不是HDL编程
FPGA转行ISP的探索之二:技术路线和概念-LMLPHP

02-15 07:53