ISP(imagesignalprocessing),图像信号处理芯片,在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。
ISPpipeline流程图如下:
光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。然后,得到的bayerpattern的image,再经过BLC(blacklevelcompensation,黑电平补偿)、lensshading(lensshadingcorrection,镜头阴影矫正)、BPC(badpixelcorrection,去坏点)、CIP(demosaic,去马赛克插值)、DNS(denoise,去噪)、AWB(自动白平衡)、colorcorrection(颜色矫正)、gamma矫正、色彩空间转换(RGB转换YUV),然后输出YUV(或者RGB)格式的数据,再通过I/O接口传输到CPU中处理。
各个模块功能简述如下:
Bayerpattern:
通常把图像传感器表面覆盖的滤波称为彩色滤波阵列(ColorFilterArrays,CFA)。目前最常用的滤镜阵列是棋盘格式的,已经有很多种类的,其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列(BayerPatternCFA)R、G、B分别表示红色、绿色和蓝色的滤镜阵列单元,比较形象地展示了此过程。由于人的视觉对绿色最为敏感,所以在BayerCFA中G分量是R和B的二倍,在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。
BLC(BlacklevelCorrection):
物理器件不可能是理想的,由于杂质、受热等其他原因的影响,即使没有光照射到pixel,象素单元也会产生电荷,这些电荷产生了暗电流。而且,暗电流与光照产生的电荷很难进行区分。BlackLevel是用来定义图像数据为0时对应的信号电平。由于暗电流的影响,传感器出来的实际原始数据并不是我们需要的黑平衡(数据不为0)。所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下,在传感器中,实际像素要比有效像素多,像素区头几行作为不感光区,实际上这部分区域也做了RGB的colorfilter,用于自动黑电平校正,其平均值作为校正值,然后在下面区域的像素都减去此矫正值,那么就可以将黑电平矫正过来了。做了blacklevel矫正与没做blacklevel矫正对比,没做blacklevel矫正的图片会比较亮。
LSC(LensShadingCorrection)
由于镜头本身的物理性质,造成图像四周亮度相对中心亮度逐渐降低,图像光照在透过镜头照射到pixel上时,边角处的焦点夹角大于中心焦点夹角,造成边角失光。表现在图像上的效果就是亮度从图像中心到四周逐渐衰减,且离图像中心越远亮度越暗。为了补偿四周的亮度,需要进行LensShading的矫正。LensShading的矫正的方法是根据一定的算法计算每个像素对应的亮度矫正值,从而补偿周边衰减的亮度。
BPC(BadPixelCorrection)
一般情况下,RGB信号应与景物亮度呈线性响应关系,但由于Senor部分pixel不良导致输出的信号不正常,出现白点或黑点。坏点为全黑环境下输出图像中的白点,高亮环境下输出图像中的黑点。坏点修复方法通常有两种:一种是自动检测坏点并自动修复,另一种是建立坏点像素链表进行固定位置的坏像素点修复,这种方式是OTP的方式。其实坏点有时候是故意放进去的,为的就是作为一个参考标尺。
DNS:
使用cmossensor获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时,当信号经过ADC时,又会引入其他一些噪声。这些噪声会使图像整体变得模糊,而且丢失很多细节,所以需要对图像进行去噪处理,空间去噪传统的方法有均值滤波、高斯滤波等。但是,一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系,并没有考虑像素值之间的相似程度,因此这样得到的模糊结果通常是整张图片一团模糊。所以,一般采用非线性去噪算法,例如双边滤波器,在采样时不仅考虑像素在空间距离上的关系,同时加入了像素间的相似程度考虑,因而可以保持原始图像的大体分块,进而保持边缘。在实际的应用中,小波去噪比较合适,而且在整个pipeline中的各个分段,都会或多或少的应用到DNS的操作,在ISP的整个过程中特别重要,几乎存在于其各个部分。
颜色插值
当光线通过Bayer型CFA(ColorFilterArrays)阵列之后,光线打在传感器上,分别得到了BGR数据,在这里,BGR的数据采样比为11,是因为人眼对绿色光(550nm)更为敏感,其中G也称作亮度信息,BR为色度信息。可以看出,在上面的Bayer图中,每一个pixel都只有BGR数据中的一个,所以就需要利用CIP插值来补充其他两个通道的颜色信息。才能形成一幅正常的全彩色image。下图即为采集到的Bayerpattern格式的图片实际效果图,可以看出,整体显示出暗绿色,这也是绿色分量占了一半的原因造成的。另外附有最近邻和双线性插值的效果图。
AWB(AutomaticWhiteBalance)
自动白平衡的基本原理是在任意环境下,把白色物体还原成白色物体,也就是通过找到图像中的白块,然后调整R/G/B的比例,如下关系:R’=R*R_Gain,G’=G*G_Gain,B’=B*B_Gain,R’=G’=B’AWB算法通常包括的步骤如下:(1)色温统计:根据图像统计出色温;(2)计算通道增益:计算出R和B通道的增益;(3)进行偏色的矫正:根据给出的增益,算出偏色图像的矫正。
其中,灰度世界法和完美反射法等都是比较常用且有效的方法。
GammaCorrection
人眼对外界光源的感光值与输入光强不是呈线性关系的,而是呈指数型关系的。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增加,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系,为方便人眼辨识图像,需要将摄像机采集的图像进行gamma矫正。Gamma矫正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系,这个指数就是Gamma,横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色曲线是gamma值大于1时的输入输出关系。可以观察到,当gamma值小于1时(蓝色曲线),图像的整体亮度值得到提升,同时低灰度处的对比度得到增加,更利于分辩低灰度值时的图像细节。
ColorCorrection
由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,得到的RGB值颜色会存在偏差,因此必须对颜色进行校正,通常的做法是通过一个3x3的颜色变化矩阵来进行颜色矫正。
色彩空间转换:
UV是一种基本色彩空间,人眼对亮度改变的敏感性远比对色彩变化大很多,因此,对于人眼而言,亮度分量Y要比色度分量U、V重要得多。所以,可以适当地抛弃部分U、V分量,达到压缩数据的目的。Laplacian算子:YCbCr其实是YUV经过缩放和偏移的改动版,Y表示亮度,Cr、Cb表示色彩的色差,分别是红色和蓝色的分量。在YUV家族中,YCbCr是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。YCbCr有许多取样格式,。
如4∶4∶4,4∶2∶2,4∶1∶1和4∶2∶0。RGB转换为YCbCr的公式如下:r0.50.41780.0813128b0.16780.331130.51280.2990.5870.114CRGBCRGGYRGB
色彩空间转换这个模块,是将RGB转换为YUV444,然后在YUV色彩空间上进行后续的彩色噪声去除、边缘增强等,也为后续输出转换为jpeg图片提供方便。