
人有五感:眼睛、耳朵、鼻子、舌头和皮肤。 这些器官中的专门细胞和组织会接收原始刺激,并将其转化为神经系统可以使用的信号。 神经将信号传递到大脑,大脑将其解释为影像(视觉)、声音(听觉)、气味(嗅觉)、味道(味觉)和触感(触觉)。
但是对于机器则不局限于这五种感官,只要能造出来传感器可以转化为电信号都可以,但是最终人类要使用还是必须转化为人类的五种感官去接受,其中最重要的就是视觉。由于人使用视觉非常的多,那么基于视觉的智能人类天然的拥有,人类的行为很多受视觉的影响,所以造机器的时候,给机器按一双眼睛来模拟人类的智能是刻不容缓。
在手机、汽车、机器人都会有摄像头,搭配上AI算法就可以实现智能,例如自动驾驶、自主干家务等。那么其中的技术原理,例如摄像头怎么把光信号变成电信号,电信号又怎么还原成图片?电信号数据化怎么给芯片去处理等问题,本文将深入浅出的进行介绍。
1. 摄像机工作原理介绍
1.1 相机成像整体流程

图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。
目前的 SENSOR 类型有两种:
1.CCD(Charge Couple Device),电荷耦合器件,它是目前高像素类 sensor 中比较成熟的成像器件,是以一行为单位的电流信号。
2.CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体。CMOS的信号是以点为单位的电荷信号,更为敏感,速度也更快,更为省电
上图中少画了ISP(Image Signal Processing),其实相机单纯的RAM 数据,人类看是失真的,需要ISP进行处理,后续会详细介绍ISP会修复哪些相机的缺陷。
DSP 控制芯片的作用是:将感光芯片获取的数据及时快速地传到 baseband 中并刷新感光芯片,因此控制芯片的好坏,直接决定画面品质(比如色彩饱和度、清晰度)与流畅度。这个是相机使用,我们在AI SoC中数据是不需要显示的,直接就输出给NPU去进行运算了。
下面一个图更加专业的说明了ISP的位置作用:

1.2 sensor原理

我们都知道彩色是RGB三原色组成的,屏幕显示就是RGB三原色,例如把一个RGB格式的图片显示到屏幕上就是点亮屏幕上对应RGB位置的亮点就可以。这是显示的一个过程,但是这个RGB格式的图片怎么得到?

首先就是捕捉RGB三原色的传感器sensor,sensor由密密麻麻排列的收集光线的光腔组成,如上图的阵列。

光腔会把光信号的强弱转化为电信号的值,一个光腔只能产生一个电信号值,那就让其只接收RGB中的一种光,光腔上面用滤光片挡住其他光就可以了。

光腔的排列如上图,也叫"拜耳阵列"。这样就可以抓取每行的RGB颜色了,这样的数据称为RAW Data。然后再转换成RGB格式不就可以了,理想很美好,但是现实很打脸。反常作妖的东西我们拆开来一一介绍,并且ISP就是镇妖神器。
2. ISP功能介绍
相机看到的转化为人类看的图片就是ISP(Image Signal Processing)要干的活,可以说都是些无厘头的脏活累活。
具体就是相机看到的图片有如下问题:Bayer马赛克、黑电平补偿 (black level compensation)、镜头矫正(lens shading correction)、坏像素矫正(bad pixel correction)、颜色插值 (demosaic)、Bayer 噪声去除、 白平衡(AWB) 矫正、 色彩矫正(color correction)、gamma 矫正、色彩空间转换(RGB 转换为 YUV)、在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等, 这些都需要ISP去处理,然后输出 YUV(或者RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。
要实现上面说的功能,实现上有软件和硬件部分,部分算法使用硬件实现,并且有核可以运行软件固件。

如上图,ISP这个子系统里面就有CPU和外设,并且可以集成到SoC中去,或者其本身就是一个SoC芯片了。
- CPU:CPU 即中央处理器,可以运行 AF、LSC 等各种图像处理算法,控制外围设备。现代的 ISP 内部的 CPU 一般都是 ARM Cortex-A 系列的,例如 Cortex-A5、Cortex-A7。
- SUB IP:SUB IP 是各种功能模块的通称,对图像进行各自专业的处理。常见的 SUB IP 如 DIS、CSC、VRA 等。
- 图像传输接口:图像传输接口主要分两种,并口 ITU 和串口 CSI。CSI 是 MIPI CSI的简称,鉴于 MIPI CSI 的诸多优点,在手机相机领域,已经广泛使用 MIPI-CSI 接口传输图像数据和各种自定义数据。外置 ISP 一般包含 MIPI-CSIS 和 MIPI-CSIM 两个接口。内置 ISP 一般只需要 MIPI-CSIS 接口。
- 通用外围设备:通用外围设备指 I2C、SPI、PWM、UART、WATCHDOG 等。ISP 中包含 I2C 控制器,用于读取 OTP 信息,控制 VCM 等。对于外置 ISP,ISP 本身还是 I2C 从设备。AP 可以通过 I2C 控制 ISP 的工作模式,获取其工作状态等。
1.3 拜耳阵列

首先拜耳阵列中包含的绿色传感器是红色或蓝色传感器的两倍。由于人眼对绿光比红光和蓝光更敏感,因此每种原色不会获得总面积的同等比例。
绿色像素的冗余会生成一个图像,该图像看起来不那么嘈杂,并且具有比每种颜色均等处理时所能完成的更精细的细节。这也解释了为什么绿色通道中的噪音比其他两种主要颜色要小得多(常见图像噪声及产生原因(高斯、泊松和椒盐噪声)。

例如上面这个原始场景图,在相机sensor视角,传感器原始获取数据直接显示如下:

放大如下:

里面还是三原色显示,某一个点上的值强弱来决定这种颜色的强弱。到这里很明显这个相机看到的图片需要进行处理才能变为人类看到的自然界的镜像。
这里人眼和sensor竟然看到的东西不一样,太神奇了。一个问题就是到底谁看到的才是真实的?应该是两者都看到了真实的世界,只是表示方法不一样,就像两种语言,需要中间进行翻译。
由此引出一个更深奥的问题:哪种数据更适合AI训练?目前都是按人类看的图片给AI进行训练的,因为人类可以去判断图片是否正确,还依赖人类。但是长远来说,sensor直接获取的数据应该更加适合同样是机器的AI去计算,这是一个趋势,但需要大胆尝试,可能已经超出人类正常的理解过程,只能去靠分析看效果了。
2.2 拜尔马赛克转换
图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红、 绿、 蓝三个分量的信息, 然后将红、 绿、 蓝三个分量的信息合成彩色图像。 该方案需要三块滤镜, 这样价格昂贵,且不好制造, 因为三块滤镜都必须保证每一个像素点都对齐。 通过在黑白 cmos 图像传感器的基础上, 增加彩色滤波结构和彩色信息处理模块就可以获得图像的彩色信息, 再对该彩色信息进行处理, 就可以获得色彩逼真的彩色图像。通常把彩色图像传感器表面覆盖的滤波称为彩色滤波阵列(Color Filter Arrays,CFA)。 目前最常用的滤镜阵列是棋盘格式的, 已经有很多种类的, 其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列(Bayer Pattern CFA)。R、G、B 分别表示透红色、透绿色和透蓝色的滤镜阵列单元。由于人的视觉对绿色最为敏感,所以在 Bayer CFA 中G分量是 R和B 的二倍,在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。
拜耳阵列直接获取的信息比较少,需要原色阵列转换为包含每个像素全彩色信息的最终图像的过程。
像素对某些波长组之间的光很敏感,本质上是颜色不可知的。获取彩色图像的方法是在顶部放置一个滤镜(通常是拜耳图案滤色镜),然后对相邻像素的颜色进行插值。8 MP CMOS不会为每个像素感应红色,绿色和蓝色,而是为每个像素感应一种颜色,然后ISP根据旁边的颜色猜测颜色。这就是所谓的去马赛克,可能是ISP的主要工作,并且有许多秘密的调解方法来计算此插值图像,这估计是各个品牌相机的核心技术。
当光线通过 Bayer型 CFA(Color Filter Arrays) 阵列之后, 单色光线打在传感器上,每个像素都为单色光,从而理想的Bayer 图是一个较为昏暗的马赛克图。
首先需要说明的就是demosaiced并不是和字面的意思一样是为了去除电影中的一些打马赛克的图像,而是数字图像处理中用来从不完整的color samples插值生成完整的color samples的方法(因为bayer pattern看起来像一个个马赛克,因此称为去马赛克)。在sensor端通常需要使用CFA滤镜来得到Bayer pattern,而在后面的处理中需要把bayer pattern变成完整的RGB444(真彩色)图像。在ISP中需要有这么一个模块来做。
在传统的ISP中有很多算法可以来做这个插值,包括最近邻域法,bilinear 插值,cubic 插值等。
2.3 镜头的几何变形

由于镜头本身的物理性质, 造成图像四周亮度相对中心亮度逐渐降低,以及,由于图像光照在透过镜头照射到 pixel 上时,边角处的焦点夹角大于中心焦点夹角,造成边角失光。表现在图像上的效果就是亮度从图像中心到四周逐渐衰减, 且离图像中心越远亮度越暗。 为了补偿四周的亮度, 需要进行 Lens Shading 的矫正。
Lens Shading 的矫正的方法是根据一定的算法计算每个像素对应的亮度矫正值,从而补偿周边衰减的亮度。
矫正方法有二次项矫正、 四次项矫正。

2.4 镜头渐晕

Flare offset:光学上称Flare也叫stray light,耀斑补偿。镜片的表面反射或镜筒、反光镜组的内面所引起的反射光,到达底面后造成画面整体或一部份产生了雾蒙,降低了图像的鲜锐度。镜片的镀膜及内面防反射处理的加强,固然可以大幅度地减少光斑,但被摄体的状况并不相同,不可能完全消除。
2.5 曝光控制:曝光不足

2.6 黑电平校正BLC(Black Level Correction)

黑电平校正。所谓黑电平就是在DNP下,将曝光时间和增益都调到最小时拍摄图片的亮度值,理想情况下应该是0,但是实际中因为sensor暗电流作用,全黑像素值大于0。(这一个值,在后面可能会受到AWBGain,CCM,Gamma的影响)。
物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到象素,象素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行区分。
Black Level 是用来定义图像数据为0时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡(数据不为0)。所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下, 在传感器中,实际像素要比有效像素多, 如下图所示, 像素区头几行作为不感光区( 实际上,这部分区域也做了RGB 的 color filter),用于自动黑电平校正,其平均值作为校正值, 然后在下面区域的像素都减去此矫正值,那么就可以将黑电平矫正过来了。
做了black level 矫正与没做black level 矫正的对比,没做black level矫正的图片会比较亮,影响图像的对比度。
2.7 图像噪音

指的是图像中的杂点干扰,表现为图像中有固定的彩色杂点。
使用 cmos sensor获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。
但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。
固定模式噪声。由于CMOS每个感光二极体旁都搭配一个ADC 放大器,如果以百万像素计,那么就需要百万个以上的 ADC 放大器,但是每个像素结构中的光电二极管的尺寸、掺杂浓度、生产过程中的沾污以及MOS场效应管的参数的偏差等都会造成像素输出信号的变化。对于给定的单个像素它是固定的。通常消除固定模式噪声采用"双采样降噪"方法,这是CMOS 感光器件特有的一种降噪方式。在光线较暗的环境下使用时,画面会有明显的噪声,这时通过对景物进行两次不同曝光率和敏感度的采样,然后将两次采样的结果进行综合处理,就可以有效解决低照度下的图像噪声问题。
2.8 白平衡处理技术(AWB)
AWB(Auto White Balance ):自动白平衡。解决环境光不同色温导致整幅图片偏色的情况。
白平衡指不管在任何光源下,都能将白色物体还原为白色。
白平衡是描述显示器或相机中红、绿、蓝三基色混合生成后白色精确度的一项指标。
色温表示光谱成份,光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色(红、绿、蓝)的比例会发生变化,需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。
图象传感器的图象数据被读取后,系统将对其进行针对镜头的边缘畸变的运算修正,然后经过坏像处理后被系统送进去进行白平衡处理(在不同的环境光照下,人类的眼睛可以把一些"白"色的物体都看成白色,是因为人眼进行了修正。但是SENSOR没有这种功能,因此需要对SENSOR输出的信号进行一定的修正,这就是白平衡处理技术)。
白平衡的基本原理是在任意环境下, 把白色物体还原成白色物体, 也就是通过找到图像中的白块, 然后调整R/G/B 的比例, 如下关系:
R′=R∗RGainR′=R∗RGain
G′=G∗GGainG′=G∗GGain
B′=B∗BGainB′=B∗BGain
R′=G′=B′R′=G′=B′
AWB 算法通常包括的步骤如下:
(1)色温统计: 根据图像统计出色温;
(2)计算通道增益: 计算出R 和B 通道的增益;
(3)进行偏色的矫正: 根据给出的增益, 算出偏色图像的矫正。
2.9 坏点矫正 BPC(Bad Pixel Correction)
坏点校正/坏点检测。相机中成像坏点一般是白色或者黑色的点,和周围像素点的差异明显。
a.坏点
坏点为全黑环境下输出图像中的白点,高亮环境下输出图像中的黑点。
b.坏点修复方法
一般情况下, RGB 信号应与景物亮度呈线性响应关系, 但由于 Senor 部分 pixel 不良导致输出的信号不正常, 出现白点或黑点。
坏点修复方法通常有两种: 一种是自动检测坏点并自动修复, 另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是 OTP 的方式。
2.10 Color Correction(颜色矫正)
由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响, 得到的RGB 值颜色会存在偏差, 因此必须对颜色进行校正, 通常的做法是通过一个3x3 的颜色变化矩阵来进行颜色矫正。
2.11 Gamma Correction(伽马矫正)
人眼对外界光源的感光值与输入光强不是呈线性关系的, 而是呈指数型关系的。 在低照度下,人眼更容易分辨出亮度的变化, 随着照度的增加,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系, 为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。
Gamma 矫正是对输入图像灰度值进行的非线性操作, 使输出图像灰度值与输入图像灰度值呈指数关系:
out = Vin ^ gamma

这个指数就是 gamma, 横坐标是输入灰度值, 纵坐标是输出灰度值, 蓝色曲线是 gamma 值小于 1 时的输入输出关系, 红色曲线是 gamma 值大于 1 时的输入输出关系。 可以观察到, 当 gamma 值小于 1 时(蓝色曲线), 图像的整体亮度值得到提升, 同时低灰度处的对比度得到增加, 更利于分辩低灰度值时的图像细节。
2.12 色彩空间转换
YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。 YCbCr 其实是YUV 经过缩放和偏移的改动版,Y 表示亮度,Cr、Cb 表示色彩的色差,RGB信号亮度值之间的差异,分别是红色和蓝色的分量。 在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG 均采用此格式。 一般人们所讲的YUV 大多是指YCbCr。YCbCr有许多取样格式,如 4∶4∶4,4∶2∶2, 4∶1∶1和 4∶2∶0。
Cb:反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
Cr:反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。
色彩空间转换这个模块, 是将RGB 转换为 YUV444, 然后在YUV 色彩空间上进行后续的彩色噪声去除、 边缘增强等, 也为后续输出转换为jpeg 图片提供方便。
2.13 Color Denoise
为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理。
阴影校正。Lens Shading是由于镜片从边缘到中心对入射光线的反射程度不同,造成拍摄均匀亮度的画面,图像从中心到边缘亮度不均匀逐渐变暗。Color Shading是由于Lens从中心到边缘,其R、G、B变暗的速率不一样,总体表现就是Gb/Gr像素值差异较大,两个像素之间有细微纹理。找出shading的distribution,然后用最小的模型来建模将其导入
2.14 图形压缩

上面只是ISP处理的部分问题,看完,你可能要说ISP干的都是些什么事,就净给sensor硬件的缺陷擦屁股了,这点也看出来我们人类的眼睛相对sensor还是高级了不少,多少年的进化不是白给的。
3. ISP架构
3.1 ISP构成

CPU:CPU 即中央处理器,可以运行 AF、LSC 等各种图像处理算法,控制外围设备。现代的 ISP 内部的 CPU 一般都是 ARM Cortex-A 系列的,例如 Cortex-A5、Cortex-A7。
SUB IP:SUB IP 是各种功能模块的通称,对图像进行各自专业的处理。常见的 SUB IP 如 DIS、CSC、VRA 等。
图像传输接口:图像传输接口主要分两种,并口 ITU 和串口 CSI。CSI 是 MIPI CSI 的简称,鉴于 MIPI CSI 的诸多优点,在手机相机领域,已经广泛使用 MIPI-CSI 接口传输图像数据和各种自定义数据。外置 ISP 一般包含 MIPI-CSIS 和 MIPI-CSIM 两个接口。内置 ISP 一般只需要 MIPI-CSIS 接口。
通用外围设备:通用外围设备指 I2C、SPI、PWM、UART、WATCHDOG 等。ISP 中包含 I2C 控制器,用于读取 OTP 信息,控制 VCM 等。对于外置 ISP,ISP 本身还是 I2C 从设备。AP 可以通过 I2C 控制 ISP 的工作模式,获取其工作状态等。
实现实例(TI TMS320DM270):

ISP算法处理流程:

3.2 ISP固件

lens 将光信号投射到sensor 的感光区域后,sensor 经过光电转换,将Bayer 格式的原始图像送给ISP,ISP 经过算法处理,输出RGB空间域的图像给后端的视频采集单元。在这个过程中,ISP通过运行在其上的firmware(固件)对ISP逻辑,从而对lens 和sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。其中,firmware的运转靠视频采集单元的中断驱动。PQ Tools 工具通过网口或者串口完成对ISP 的在线图像质量调节。 ISP 由ISP逻辑及运行在其上的Firmware组成,逻辑单元除了完成一部分算法处理外,还可以统计出当前图像的实时信息。Firmware 通过获取ISP 逻辑的图像统计信息,重新计算,反馈控制lens、sensor 和ISP 逻辑,以达到自动调节图像质量的目的。
ISP 的Firmware包含三部分,一部分是ISP 控制单元和基础算法库,一部分是AE/AWB/AF 算法库,一部分是sensor 库。Firmware 设计的基本思想是单独提供3A算法库,由ISP控制单元调度基础算法库和3A 算法库,同时sensor 库分别向ISP 基础算法库和3A 算法库注册函数回调,以实现差异化的sensor 适配。ISP firmware 架构如图所示。
不同的sensor 都以回调函数的形式,向ISP 算法库注册控制函数。ISP 控制单元调度基础算法库和3A 算法库时,将通过这些回调函数获取初始化参数,并控制sensor,如调节曝光时间、模拟增益、数字增益,控制lens 步进聚焦或旋转光圈等。

AP对ISP的操控方式
CPU处理器包括:AP、BP、CP。 BP:基带处理器、AP:应用处理器、CP:多媒体加速器。
这里所说的控制方式是AP 对 ISP 的操控方式 。
I2C/SPI:这一般是外置 ISP 的做法。SPI 一般用于下载固件、I2C 一般用于寄存器控制。在内核的 ISP 驱动中,外置 ISP 一般是实现为 I2C 设备,然后封装成 V4L2-SUBDEV。
MEM MAP:这一般是内置 ISP 的做法。将 ISP 内部的寄存器地址空间映射到内核地址空间,
MEM SHARE:这也是内置 ISP 的做法。AP 这边分配内存,然后将内存地址传给 ISP,二者实际上共享同一块内存。因此 AP 对这段共享内存的操作会实时反馈到 ISP 端。
4. ISP集成入AI SoC
在AI SoC芯片中可以说视觉智能是必不可少的,特别是汽车和机器人,ISP这个IP必然要集成到SoC内部,作为一个子系统。
另外在AI SoC内部,相机的高清数据一般需要高速的MIPI接口进入SoC芯片内部,然后ISP就对数据进行处理,之后提供给NPU去进行AI计算。所以AI SoC需要集成MIPI或者其他接口的驱动控制器。且相机的数量越多,控制器需要集成的越多。
4.1 MIPI接口
移动产业处理器接口(Mobile Industry Processorinterface,MIPI)
常见的智能手机上的摄像头是MIPI接口,CSI是相机串行接口(CMOS Sensor Interface)的简称。

MIPI总线速率lvds接口耦合,走线必须差分等长,并且需要保护,故对PCB走线以及阻抗控制要求高一点(一般来讲差分阻抗要求在85欧姆~125欧姆之间)
MIPI是LVDS低压差分串口,只需要要CLKP/N、DATAP/N------最大支持4-lane,一般2-lane即可。
MIPI接口比DVP的接口信号线少,由于是低压差分信号,产生的干扰小,抗干扰能力也强。
DVP接口在信号完整性方面受限制,速率也受限制。
500W还可以勉强用DVP,800W及以上都采用MIPI接口。
所以高清摄像头我们都选用MIPI接口 。
4.2 自动驾驶对ISP的需求
ISP作为视觉处理芯片核心,其主要功能包括AE(自动曝光)、AF(自动对焦)、AWB(自动白平衡)、去除图像噪声、LSC(Lens Shading Correction)、BPC(Bad PixelCorrection),最后把Raw Data 保存起来,传给videocodec 或CV 等。
通过ISP 可以得到更好的图像效果,因此在自动驾驶汽车上对ISP的要求很高,比如开始集成双通道甚至三通道的ISP。
一般来说ISP 是集成在AP 里面(对很多AP 芯片厂商来说,这是差异化竞争的关键部分),但是随着需求的变化也出现了独立的ISP,主要原因是可以更灵活的配置,同时弥补及配合AP 芯片内ISP 功能的不足。
图像/视频处理单元 SOC芯片上的图像处理单元主要包括几个部分功能:数字图像信号处理、图像分割(Pyramid)、图像拼接(Stitch)、图像渲染(GDC)以及视频编解码功能。
ISP 模块接收感光元件(Sensor)的原始信号数据,并处理图像传感器输出的图像信号,对图像质量起着非常重要的作用。ISP内部包含多个图像算法处理模块,其中主要包含如下几种:
- 通过扣暗电流去掉底电流噪声;
- 通过线性化解决数据非线性问题;
- 解决镜头带来的亮度衰减与颜色变化;
- 通过去坏点,剔除sensor中坏点数据);
- 通过数字图像滤波进行图像去噪;
- 通过感光半导体处理将原始环境光源数据转为RGB数据;
- 自动白平衡,自动对焦,自动曝光
- 亮度映射曲线,优化局部与整体对比度
此外,ISP的处理过程还包括如下几个部分:即旋转(角度变化),锐化(调整锐度),缩放(放大缩小),色彩空间转换(转换到不同色彩空间进处理),颜色增强(可选,调整颜色),肤色增强(可选,优化肤色表现) 等。
图像分割实在神经网络处理逻辑之前进行简单的场景分割 ,将环境中明显可表达的语义进行分别输出。图像拼接是针对有一定overlap的图像进行全场景范围拼接,拼接的结果主要用于流媒体显示。

此外,图像处理单元一版还会额外搭载一些视频编解码核 ,一般可应用HEVC的方式进行编解码。更为强大的图像/视频处理单元会有能力进行3D图像渲染 。这一部分可能会用到GPU的相关计算能力。这里需要说明一下的是,在我们设计域控制器的时候,很多情况下,我们选择的SOC芯片是不具备足够的3D渲染能力的,这时,从整个先进的显示方案需求出发,我们就需要采用额外的处理器进行渲染 。这里有两种方案:其一,是采用驾驶域控制器的芯片扩充方案,即在自动驾驶域控制器AI芯片外围在增加相应的GPU芯片 进行集成,两者可通过PCIe进行图像传输。其二,是采用座舱域控制器芯片扩充方案,即在智能座舱控制器芯片中集成GPU处理能力的芯片直接做渲染和显示。
特斯拉的自研模式 很有价值,可以垂直整合 做到更高效的利用软硬件资源 来实现更先进的技术和性能,而且不受外部很多规范规则限制。

- 摄像头就传感器,收集视频画面
- 再进行后续图像分割、物体分类、目标跟踪、世界模型、多传感器融合、在线标定、视觉SLAM、ISP 等一系列步骤进行匹配与深度学习
4.3 ISP演进
ISP的作用就是把相机看到的失真不好的图片,还原成人眼真实看到的清晰的图片,这就需要一些算法,但是这些算法都是固定的。那能不能利用AI这个武器去让图片变清晰?
答案是肯定的,而且很好用,特别针对特殊的例子,固定算法直接失效,例如忽明忽暗的场景。AI的做法就是把相机看到的图片搞一个图片集,进行神经网络训练让跟人眼看到的图片进行标记训练,尽量的贴近,这不是固定的运算,而是根据经验进行局部修复替换,全新的思路。甚至手机可以拍照月亮非常清晰,因为算法识别到你在拍月亮,那直接拿数据库里面一个清晰的月亮给你换上,直接搞定。
但是有一个问题,这里ISP处理的数据要给NPU进行AI运算的,自己先用NPU给运算了一下,那是不是直接把RAW Data数据给NPU得了,把ISP自己革命革没了。当前应该AI算法还不足完成ISP所有的算法,或者说直接上AI耗费资源太多,有固定的算法先处理下快(ISP轻量化),而且把进入NPU的数据缩小,有利于大规模的AI计算。
4.4 视觉AI演进
回到之前的问题:相机看到的图片和人类看到的图片,那个更适合神经网络去运算给出判断?
如果是相机的硬件缺陷,那肯定是需要进行弥补的,不然信息会造成缺失。如果在同样信息的条件下,先转换为人类看清的图片再给AI去训练,AI其实根本不理解直接固定的算法去给出判断结果。这点看转换为人类看清的图片完全是多此一举,但是这样做的好处就是人类可以去判断监控处理的过程。不然完全是一个黑盒,人类也直接看不懂那些二进制表示啊。
ISP不直接转换为人类看清的图片,那么只用保证信息的完整性,很多色彩和平衡的计算都不需要了,这样ISP更加的简化也是好处。为了保证信息完整性,特别是摄像头有很多缺陷,可以多个摄像头一块信息对比叠加,就像人有两个眼睛。这就符合AI算法,只需要特征,把两个或者多个摄像头拍摄的图片叠加特征会更好的保留。
参考:
- blog.csdn.net/qq_28258885...
- blog.csdn.net/u010783226/...
- zhuanlan.zhihu.com/p/457952229
- blog.csdn.net/lz0499/arti...
- zhuanlan.zhihu.com/p/142640955
- blog.csdn.net/qq_37692302...
- mp.weixin.qq.com/s/nxKCBf-5x...
后记:
对于非相机研发来说,这部分ISP入门知识会挺有趣,通过视觉的处理原理可以延伸到人类其他的感官处理也是同样的道理,sensor抓取信息,转换为电信号,再各种算法处理还原,人类判断信息正确后给AI进行运算,给出智能的判断。