2019-10-20 18:25:28 ding283595861 阅读数 697
  • 数字成像系统

    数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲

    7632 人正在学习 去看看 姜卓

摄像机模组与图像处理:
在这里插入图片描述
事实上,ISP 除了上面提到的主要功能外,还需要支持 DENOISE,CONTRAST、SATURATION、SHARPNESS 等调整功能。
3A技术即自动对焦(AF)、自动曝光(AE)和自动白平衡(AWB)3A数字成像技术利用了AF自动对焦算法、AE自动曝光算法及AWB自动白平衡算法来实现图像对比度最大、改善主体拍摄物过曝光或曝光不足情况、使画面在不同光线照射下的色差得到补偿,从而呈现较高画质的图像信息。采用了3A数字成像技术的摄像机能够很好的保障图像精准的色彩还原度,呈现完美的日夜监控效果。在这里插入图片描述
镜头:
在这里插入图片描述
IR cut filter,即红外截止滤光片,它放在于LENS与Sensor之间。因人眼与CMOS Sensor对各波长的响应不同,人眼看不到红外光但sensor会感应,因此需要IR cut filter阻绝红外光。

模组结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
快门的工作原理:
在这里插入图片描述
相机的快门有两道闸门,分别是:前帘、后帘。大家可以看上面的动图,在靠近镜头哪里的闸门被称为“前帘”,靠近传感器的闸门被称为“后帘”。
在进行拍摄时,后帘从下往上打开,这个时候不会有光量,因为前帘还是闭合的。当后帘从下往上打开,然后前帘从上往下打开,画面从上往下进行曝光,这就是“咔”。
等曝光结束后,后帘就从上往下闭合,后帘一闭合整个曝光就结束了,这就是“嚓”。所以拍照时咔嚓、咔嚓、咔嚓的声音就是这么来的。等到前帘闭合后,就可以进行下一次曝光了。

相机之所以有两个快门帘,就是为了能从上往下曝光,也能从上往下结束曝光。如果相机只有一个前帘,那么是从上往下开始曝光,当曝光结束就要从下往上了,这就会导致上面的曝光比下面多。当你使用非常快的快门速度进行拍摄时,画面曝光就会出现不一样的情况

Sonser:又分为两种:CMOS & CCD ,目前用到的就是 CMOS.

CMOS图像传感器本质是一块芯片 ,主要包括:感光区阵列(Bayer阵列,或叫像素阵列)、时序控制、模拟信号处理以及模数转换等模块。
主要作用把光信号转化成电信号 ,然后通过ADC 转化成数字信号.

Lens:用来接收光线,但camera module上会使用很多片 ,镜头的片数越多,解析力越高,但是厚度会增加,以及制作工艺难度也会加大.
IR cut filter/Blue glass: IR cut filter滤除红外光,减少ghost图像。蓝玻璃是用来增加特定波段的蓝光.

ISP处理流程结构图如下:
在这里插入图片描述

图像Bayer格式介绍

A: 为什么要使用Bayer ?
—> 对于彩色图像,需要采集多种最基本的颜色,如rgb三种颜色,最简单的方法就是用滤镜的方法,红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐,所以当使用bayer格式的时候,就解决了这个问题
B: bayer格式数据排列?
----> Bayer格式是相机内部的原始图片, 即RAW图,是isp处理前的原始图片,由于人眼对绿色较为敏感,所以一般bayer格式的图片绿色格式的像素是r和g像素的和,bayer色彩滤波阵列,由一半的G,1/4的R ,1/4的B组成

  1. bayer格式图像传感器硬件:
    在这里插入图片描述

每一个感光像素之间都有Metal Opaque Laye(金属隔离层),光纤通过Microlens(显微镜头),在Color Filter Array(CFA)(色彩滤波器过滤)之后,投射到相应的漏洞式photodiode silicon(硅的感光元件)上

  1. Bayer感光阵列示意图:
    柯达公司的拜耳提出一种解决方案,只用一个图像传感器,但是在图像传感器的前面放置一个滤光层,滤光层的滤光点与图像传感器的像素一一对应,每个滤光点只能通过红、绿、蓝三种光其中之一在这里插入图片描述
    这种可以通过不同颜色滤光点的排列是有规律的,每个绿色点的左上、右上、左下、右下分布的绿点,上下分布的是红点,左右分布的是蓝点。绿点的数量是红色或者蓝色数量的两倍,是因为研究发现人眼对绿色是最为敏感的。
    那么图像传感器的每个像素只可能取四种可能的值:红、绿、蓝、黑(没有光透过)。
    现在得到的图像也只有四种颜色,显然还无法表达真实世界的颜色。所以还需要根据每个像素周围的颜色来近似恢复它原来的值,最后得到彩色图像。这个过程叫做“去马赛克(demosaicing)”。

去马赛克有不同的实现方法,简单的内插法,比如绿色过滤器的像素精确测量了绿色成分,而该像素红色和蓝色的成分则是从邻区获取。一个绿色像素的红色数值可由相邻两个红色像素内插计算出来;同样的,内插相邻两个蓝色像素也能计算出蓝色数值

由于人眼对绿色较为敏感,所以一般bayer格式的图片绿色格式的像素是r和g像素的和,如下图:Bayer色彩滤波阵列(Bayer Color Filter Array,CFA),由一半的G,1/4的R,1/4的B组成,
在这里插入图片描述
3. RAW data格式:
RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。sensor的每一像素对应一个彩色滤光片,滤光片按Bayer pattern分布。将每一个像素的数据直接输出,即RAW RGB data.

Raw data(Raw RGB)经过彩色插值(DEMOSAIC )就变成RGB.

华为P30pro夜间拍摄牛逼,用到了RYYB的滤镜阵列设计,RYYB就是将两个绿色像素(G)换成黄色像素(Y)替代, Y(红色和绿色组合).
请查看文档:

http://www.openpcba.com/web/contents/get?id=3605&tid=15

4.ISP全称Image Signal Processing,即图像信号处理。主要用来对前端图像传感器输出信号处理的单元,以匹配不同厂商的图象传感器。

ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括3A、坏点校正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理。ISP 包括逻辑部分以及运行在其上的firmware。
ISP 的控制结构如图,lens 将光信号投射到sensor 的感光区域后,sensor 经过光电转换,将Bayer 格式的原始图像送给ISP,ISP 经过算法处理,输出RGB 空间域的图像给后端的视频采集单元。在这个过程中,ISP 通过运行在其上的firmware 对ISP逻辑,lens 和sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。其中,firmware
的运转靠视频采集单元的中断驱动。PQ Tools 工具通过网口或者串口完成对ISP 的在线图像质量调节。
在这里插入图片描述
ISP 的Firmware 包含三部分,一部分是ISP 控制单元和基础算法库,一部分是AE/AWB/AF 算法库,一部分是sensor 库。Firmware 设计的基本思想是单独提供3A 算法库,由ISP 控制单元调度基础算法库和3A 算法库,同时sensor 库分别向ISP 基础算法库和3A 算法库注册函数回调,以实现差异化的sensor 适配。ISP firmware 架构如图:
在这里插入图片描述
不同的sensor 都以回调函数的形式,向ISP 算法库注册控制函数。ISP 控制单元调度基础算法库和3A 算法库时,将通过这些回调函数获取初始化参数,并控制sensor,如调节曝光时间、模拟增益、数字增益,控制lens 步进聚焦或旋转光圈等

  1. RGB565 与 RGB888转化关系,代码实现如下:
#define RGB888_RED      0x00ff0000
#define RGB888_GREEN    0x0000ff00
#define RGB888_BLUE     0x000000ff

#define RGB565_RED      0xf800
#define RGB565_GREEN    0x07e0
#define RGB565_BLUE     0x001f 
unsigned short RGB888ToRGB565(unsigned int n888Color){ 
	 unsigned short n565Color = 0;  
	 // 获取RGB单色,并截取高位 
	 unsigned char cRed   = (n888Color & RGB888_RED)   >> 19; 
	 unsigned char cGreen = (n888Color & RGB888_GREEN) >> 10; 
	 unsigned char cBlue  = (n888Color & RGB888_BLUE)  >> 3;  
	 // 连接 
	 n565Color = (cRed << 11) + (cGreen << 5) + (cBlue << 0); 
	 return n565Color;
}
unsigned int RGB565ToRGB888(unsigned short n565Color){
	 unsigned int n888Color = 0;  
	 // 获取RGB单色,并填充低位 
	 unsigned char cRed   = (n565Color & RGB565_RED)    >> 8; 
	 unsigned char cGreen = (n565Color & RGB565_GREEN)  >> 3; 
	 unsigned char cBlue  = (n565Color & RGB565_BLUE)   << 3;  
	 // 连接 
	 n888Color = (cRed << 16) + (cGreen << 8) + (cBlue << 0); 
	 return n888Color;
}

ISP处理Bayer image详细讲解:

Bayer(拜耳滤波器得到彩色)
图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红、 绿、 蓝三个分量的信息, 然后将红、 绿、 蓝三个分量的信息合成彩色图像。 该方案需要三块滤镜, 这样价格昂贵,且不好制造, 因为三块滤镜都必须保证每一个像素点都对齐。
通过在黑白 cmos 图像传感器的基础上, 增加彩色滤波结构和彩色信息处理模块就可以获得图像的彩色信息, 再对该彩色信息进行处理, 就可以获得色彩逼真的彩色图像。通常把彩色图像传感器表面覆盖的滤波称为彩色滤波阵列(Color Filter Arrays,CFA)。
目前最常用的滤镜阵列是棋盘格式的, 已经有很多种类的, 其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列(Bayer Pattern CFA)。R、G、B 分别表示透红色、透绿色和透蓝色的滤镜阵列单元。由于人的视觉对绿色最为敏感,所以在 Bayer CFA 中G分量是 R和B 的二倍,在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。

A. BLC(BlackLevel Correction)------黑电平校正
–>在调试相机镜头过程, 把设备放入封闭的密封箱中,会发现镜头呈现黑色,但是黑色的程度不够黑,这是由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0),所以需要找到一个矫正值,然后将所有的区域的像素减去此矫正值,如果图像呈现纯黑色,说明矫正成功,左边未校验,右边是矫正后的图像
在这里插入图片描述
B. LSC(Lens Shade Correction)------镜头阴影校正
由于相机在成像距离较远时,随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少,从而使得获得的图像中间比较亮,边缘比较暗,这个现象就是光学系统中的渐晕。由于渐晕现象带来的图像亮度不均会影响后续处理的准确性。因此从图像传感器输出的数字信号必须先经过镜头矫正功能块来消除渐晕给图像带来的影响.
常用的镜头矫正的具体实现方法是,首先确定图像中间亮度比较均匀的区域,该区域的像素不需要做矫正;以这个区域为中心,计算出各点由于衰减带来的图像变暗的速度,这样就可以计算出相应R、G、B通道的补偿因子(即增益)。下图左边图像是未做镜头阴影校正的,右边图像是做了镜头阴影校正的。
在这里插入图片描述
备注: 在项目过程中还可以把将头贴着对准白色物体,有时候由于镜头的原因,四个边角会产生暗角。有些镜头由于工艺的问题,会导致没法通过软件的方式修复
C: BPC(Bad Point Correction)------坏点校正
常用检测方法是在全黑环境下看亮点和彩点和在盖白板的情况下看黑点和彩点。或者把镜头这个黑色物体,拍摄照片,然后观察,会发现图片上有坏点,并且是无规律的散列到图片的各个地方,由于图像传感器中CFA的应用,每个像素只能得到一种颜色信息,缺失的两种颜色信息需要从周围像素中得到。如果图像中存在坏点的话,那么坏点会随着颜色插补的过程往外扩散,直到影响整幅图像。因此必须在颜色插补(Demosaic)之前进行坏点的消除。

D: Demosaic------颜色插值
在做这一步之前,必须做坏点矫正,不然做颜色插值的时候,都是通过相邻的几点像素点来算出当前像素点,坏点容易往外扩散。经过滤色板的作用之后,每个像素点只能感应到一种颜色。必须要找到一种方法来复原该像素点其它两个通道的信息,寻找该点另外两个通道的值的过程就是颜色插补的过程。由于图像是连续变化的,因此一个像素点的R、G、B的值应该是与周围的像素点相联系的,因此可以利用其周围像素点的值来获得该点其它两个通道的值。目前最常用的插补算法是利用该像素点周围像素的平均值来计算该点的插补值。
在这里插入图片描述

E:Bayer Denoise-----去除噪声
使用 cmos sensor 获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素, 当信号经过 ADC 时, 又会引入其他一些噪声. 所以,这部分主要是处理Bayer 图像的噪声。一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。

F: AWB(Automatic White Balance)------自动白平衡
人类视觉系统具有颜色恒常性的特点,因此人类对事物的观察可以不受到光源颜色的影响。但是图像传感器本身并不具有这种颜色恒常性的特点,因此,其在不同光线下拍摄到的图像,会受到光源颜色的影响而发生变化。例如在晴朗的天空下拍摄到的图像可能偏蓝,而在烛光下拍摄到的物体颜色会偏红。因此,为了消除光源颜色对于图像传感器成像的影响,自动白平衡功能就是模拟了人类视觉系统的颜色恒常性特点来消除光源颜色对图像的影响的。
白平衡顾名思义就是让白色在任何色温下camera都能把它还原成白,由于色温的影响,一张白纸在低色温下会偏黄,高色温下会偏蓝,白平衡的目的就是白色物体在任何色问下都是R=G=B呈现出白色,比较常用的AWB算法有灰度世界,完美反射法等
在这里插入图片描述
G:CCM(Color Correction Matrix)------颜色校正
颜色校正主要为了校正在滤光板处各颜色块之间的颜色渗透带来的颜色误差。一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵,一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。

AWB已经将白色校准了,CCM就是用来校准白色除白色以外其他颜色的准确度的,用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。Ccm矫正最终结果可以通过拍摄24色卡图片然后用imatest分析来做分析参考
在这里插入图片描述
H:RGB Gamma------Gamma校正
现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值。在进行伽马校正的同时,可以一定范围的抑制图像较暗部分的噪声值,并提高图像的对比度。还可以实现图像现显示精度的调整,比如从l0bit精度至8bit精度的调整。上图分别是未做Gamma校正的,下图是做了Gamma校正的。
在这里插入图片描述
I: RGBToYUV
YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量 Y 要比色度分量 U、 V 重要得多。 另外,YUV色彩空间分为YUV444,YUV422,YUV420等格式,这些格式有些比原始RGB图像格式所需内存要小很多,这样亮度分量和色度分量分别存储之后,给视频编码压缩图像带来一定好处。

J: Color denoise / sharpness
主要是对yuv降噪处理,同时为了消除降噪过程中对图像细节的损失,需要对图像进行锐化处理,还原图像的相关细节(为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理)

在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出 YUV(或者RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理

1、RGB、YUV和YCbCr三种颜色空间
首先要说明,RGB、YUV和YCbCr都是人为规定的彩色模型或颜色空间(有时也叫彩色系统或彩色空间)。它的用途是在某些标准下用通常可接受的方式对彩色加以说明。本质上,彩色模型是坐标系统和子空间的阐述。
1.1、RGB
RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。
1.2、YUV
YUV是北美NTSC系统和欧洲PAL系统中模拟电视信号编码的基础。

在 YUV 空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和 V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。

YUV 使用RGB的信息,但它从全彩色图像中产生一个黑白图像,然后提取出三个主要的颜色变成两个额外的信号来描述颜色。把这三个信号组合回来就可以产生一个全彩色图像。

Y 通道描述 Luma 信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。 Luma 是黑白电视可以看到的信号。U (Cb) 和 V (Cr) 通道从红 (U) 和蓝 (V) 中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。

YUV和RGB的转换:

  Y = 0.299 R + 0.587 G + 0.114 B
  U = -0.1687 R - 0.3313 G + 0.5 B + 128
  V = 0.5 R - 0.4187 G - 0.0813 B + 128
 
  R = Y + 1.402 (V-128)
  G= Y - 0.34414 (U-128) - 0.71414 (V-128)
  B= Y + 1.772 (U-128)

1.3、YCbCr
YCbCr 颜色空间是YUV的国际标准化变种,在数字电视和图像压缩(比如JPEG)方面都有应用。

YCbCr 是在世界数字组织视频标准研制过程中作为ITU - R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

YCbCr与RGB的相互转换

    Y=0.299R+0.587G+0.114B
    Cb=0.564(B-Y)
    Cr=0.713(R-Y)
     R=Y+1.402Cr
    G=Y-0.344Cb-0.714Cr
    B=Y+1.772Cb

补充、YUV(YCbCr)采样格式
主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值), 每 2 x 2 个点保存一个 Cr和Cb值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 每个点需要 8x3=24 bits, 而现在仅需要 8+(8/4)+(8/4)=12bits, 平均每个点占12bits。这样就把图像的数据压缩了一半上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式:
(1)、 YUV 4:4:4
YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
  
(2)、YUV 4:2:2
 每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存(例如下面映射出的前两个像素点只需要Y0、Y1、U0、V1四个字节)。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3

映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
 (3)、 YUV 4:1:1
 4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 Y1 Y2 V2 Y3

映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
 (4)、 YUV4:2:0
  4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0…以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。

下面八个像素为:

[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] 
[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8] 

存放的码流为:

Y0 U0 Y1 Y2 U2 Y3 
Y5 V5 Y6 Y7 V7 Y8 

映射出的像素点为:

[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7] 

[Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]

除了yuv4:4:4没有压缩外,其它几种,都是对色度数据做过压缩,YUV 的优点之一是基于人眼对色度的敏感程度要低于对亮度的敏感程度,可以适当降低色度的采样率,同时不会明显降低视觉质量, 下面的截图,能否很好的帮忙理解,不同的格式是如何压缩以及如何映射出对应的像素点, 用圆圈圈起来部分,就是要存储的色度值:
在这里插入图片描述

YUV格式有两大类:planar和packed。

对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。

YUV采样的进一步说明
YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,关于其详细原理,可以通过网上其它文章了解,这里我想强调的是如何根据其采样格式来从码流中还原每个像素点的YUV值,因为只有正确地还原了每个像素点的YUV值,才能通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。

用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。
在这里插入图片描述
先记住下面这段话,以后提取每个像素的YUV分量会用到。
YUV 4:4:4采样,每一个Y对应一组UV分量, 每像素 24 位
YUV 4:2:2采样,每两个Y共用一组UV分量, 每像素 16 位
YUV 4:2:0采样,每四个Y共用一组UV分量, 每像素 12位

下面用一种表说明几种常见存储方式所占用的内存,以 w*h 大小的图像为例:
在这里插入图片描述
例如:w*h = 320*180
YUV4:4:4 :y:320*180, u:320*180, v:320*180, 即size=3*320*180
YUV4:2:2 :y:320*180, u:320*180/2, v:320*180/2, 即size=2*320*180
YUV4:2:0 :y:320*180, u:320*180/4, v:320*180/4, 即size=1.5*320*180

首先了解视频编码为什么使用YUV420而不是rgb。那么需要了解两者的原理,看图说话:
在这里插入图片描述
所以从内存的角度来说,yuv单位像素使用的内存更低,但是两者表示的效果是一致的,也可以认为rgb过度绘制了,把人眼无法分辨的区域也进行了绘制。
下面看一下两者之间内存暂用对比,这里采用·rgb24对比
RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。在一个2*2的像素区域,RRG暂用的字节数为2*2*3=12字节。那么用yuv表示,占用的字节数为4(Y)+1(u)+1(v)=6字节,其中Y占用4个字节,U和V各占用1字节,比例为4:1:1
所以在一个宽高为w*h的设备上,使用rgb表示编码占用的字节数为w*h*3,使用yuv表示暂用的内存为w*h*+w*h/4+w*h/4 = w*h*3/2.

YUV422内存排列如下:
在这里插入图片描述
在这里插入图片描述
yuv编码分类:
YUV420主要分为以下两种YUV420P & YUV420SP:

A.YUV420P:(YUV420 Planar)
又叫plane平面模式,Y , U , V分别在不同平面,也就是有三个平面,它是YUV 标准格式4:2:0
YUV420P: 主要分为两种格式YU12YV12:
1.1: YU12格式(安卓模式下,也叫I420格式):首先是所有Y值,然后是所有U值,最后是所有V值。
在这里插入图片描述

YU12:亮度(行×列) + U(行×列/4) + V(行×列/4)

1.2:YV12格式:首先是所有Y值,然后是所有V值,最后是所有U值
在这里插入图片描述

 YV12:亮度Y(行×列) + V(行×列/4) + U(行×列/4)

可以参考此结构:
在这里插入图片描述
B:YUV420SP(YUV420 Semi-Planar)
是一种two-plane模式,即Y和UV分为两个plane,但是UV(CbCr)为交错存储,而不是分为三个平面.
YUV420SP主要分为: NV12NV21
1.1:NV12(IOS只有这一种模式),存储顺序是先存Y值,再UV交替存储:YYYYUVUVUV,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节
在这里插入图片描述
1.2:NV21(安卓的模式),android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,NV21存储顺序是先存Y值,再VU交替存储:YYYYVUVUVU,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节
在这里插入图片描述

NV12: YYYYYYYY UVUV    =>YUV420SP
NV21: YYYYYYYY VUVU    =>YUV420SP

可以参考此结构:
在这里插入图片描述

2018-07-29 11:45:51 lyfwill 阅读数 6514
  • 数字成像系统

    数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲

    7632 人正在学习 去看看 姜卓

最近在看ISP模块,即成像引擎(Image Signal Processing) 

ISP承接sensor的输出,并输出8bit RGB格式的数据给AI引擎来做人脸识别,且需要的尺寸固定为640x480,所以ISP还需要支持任意比例的缩放。

ISP的主要结构如下:

AWB自动白平衡

DPCC(Defect Pixel Cluster Correction)坏点簇纠正

DPF(De-noising Pre-Filter)降噪预滤波

蓝框框里是“去马赛克”单元,包含CAC(Cromatic Aberration Correction色彩失常校正)、降噪滤波器

CNR(Croma Noise Reduction)色度噪点降低

X-talk,串扰

VSM(Video Stablization Measurement)视频稳定

CSM(Color Space Matrix)

2015-07-17 10:11:20 tfygg 阅读数 7028
  • 数字成像系统

    数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲

    7632 人正在学习 去看看 姜卓

        ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量。它分为独立与集成两种形式。


      一般情况下,配备独立ISP的手机,在图像处理方面有更大的优势,且随着手机摄像头像素的提高,高速连拍,全高清甚至4K录制的加入,手机对ISP的处理性能要求越来越高。


       不少主打拍摄功能的厂商都在手机当中加入了独立ISP,例如魅族MX3就采用了富士通四通道ISP,官方宣称其传输速度提升两倍,能完美实现每秒25张连拍,使其拥有卓越的图像处理能力,综合拍摄性能相对于MX2来讲有了较大的进步。主打自拍功能的MeituKiss手机,在全球范围内首次为前置摄像头配置了独立ISP芯片(图像信号处理器)。这款来自富士通的高端芯片有着出众的噪点和色彩还原能力,被广泛应用于数码相机等专业领域。


       下图是图像信号处理主要流程:


               


(1)黑电平校正(暗电流校正)   

       暗电流指传感器在没有入射光的情况下,存在一定的信号输出,这是由于半导体的热运动造成的,它的大小和传感器结构及温度有关,大概每升高9 ℃,其暗电流会增加1 倍。由于每个像素存在不平衡性,因此像素间暗电流也会不一致,造成电流噪声。一般情况下,在传感器中,实际像素要比有效像素多,像素区最靠边的行和列为不感光区,一般用作自动黑电平校正,其平均值作为校正值。


(2)颜色插补

       原始像素只包含一种颜色的信息(R 或G 或B),要重建色彩画面,就必须从相邻的像素中得到失去的信息。红色及蓝色插补一般遵循最近原则,进行平均处理,作为本像素的色彩值,由插值原理知,相邻像素间存在依赖关系,结果造成画面锐度降低。


(3)颜色校正  

       由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,插补后得到的RGB 值颜色会存在偏差,因此必须对颜色进行校正,一般通过颜色校正矩阵来实现。具体的彩色矫正参数,可以通过试验或从传感器供应商中获得,当然要得到不失真的还原是不可能的,只能反复调试达到最佳。一般通过标准色卡进行校正。


(4)Gamma 校正

       Gamma 校正主要依据色度学原理进行调整,色彩在不同显示设备中频谱响应度不一样,造成颜色失真。失真成幂指数关系,因此调节相对简单,分别对R、G、B 调节即可。


(5)RGB2YUV 转换

        Y =16 +(0. 257 × R +0. 504 × G +0. 098 × B)

        Cb =128 +(-0. 148 × R-0. 291 × G +0. 439 × B)

        Cr =128 +(0. 439 × R-0. 368 × G-0. 071 × B)


(6)自动白平衡处理

       如果使用过没有白平衡的数码相机,会发现荧光灯的光人眼看起来是白色的,但用数码相机拍摄出来却有点偏绿。同样,如果在白炽灯下,拍出图像的色彩就会明显偏红。人类的眼睛之所以把它们都看成白色,是因为人眼进行了修正。由于图像传感器本身没有这种功能,因此有必要对它输出的信号进行一定的修正,这种修正叫作白平衡。  

    

       白平衡控制通过图像色彩调整(一般调节R、B 增益实现),使在各种光线条件下拍摄出的照片色彩和人眼所看到的景物色彩完全相同。从理论上我们知道,随着色温的升高,要对色温进行较正,否则,物体在这样的光线条件下所表现出来的颜色就会偏离其正常的颜色,因此需要降低 sensor对红色的增益,增加sersor对蓝光的增益。同时在调整参数时一定程度上要考虑到整体亮度的要保持大致的不变,即以YUV来衡量时,Y值要 基本保持不变,理论上认为可以参考RGB->YUV变换公式中,RGB三分量对Y值的贡献,从而确定RGAIN和BGAIN的变化的比例关系。但实 际情况比这还要复杂一些,要考虑到不同sensor对R,B的感光的交叉影响和非线性,所以最佳值可能和理论值会有一些偏差。


       白平衡的实现一般有手动和自动两种模式,当然对于摄像机主要以自动白平衡为主。自动白平衡一般基于“ Grey World” 假设,调节R、B 的增益,在选定参考白平衡区域内达到R、G、B 相等。自动白平衡是基于假设场景的色彩的平均值落在一个特定的范围内,如果测量得到结果偏离该范围,则调整对应参数,校正直到其均值落入指定范围。该处理过程可能基于YUV空间,也可能基于RGB空间来进行。对于Sensor来说,通常的处理方式是通过校正R/B增益,使得UV值落在一个指定的范围 内。从而实现自动白平衡。这种假设在很多场合可以达到很好的效果,但由于无法得到场景光源的所有信息,因此自动白平衡效果有时并不让人满意,此时可以让用户自己定义一个点火区域作为参考点,也有用白平衡感测器来实现的。


       白平衡对色彩效果影响很大,一个好的算法能够使色彩效果更逼真,也可以利用白平衡达到艺术效果。


(7)自动曝光、AE 评估

       自动曝光,简单地说就是自动控制曝光时间,达到曝光恰到好处的效果。曝光过度,图像传感器就会产生溢出,造成对比度下降,动态灵敏度降低。曝光不够,同样会造成对比度下降,动态灵敏度降低,信噪比下降,画面效果不好。因此在不同的场景必须对曝光时间进行控制。

       自动曝光主要是对某可选区域内画面亮度分量(y 信号)进行评估,若y 偏小,增大曝光量,反之减少。


感光宽容度

       从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度。

 

      人眼的感光宽容度比胶片要高很多,而胶片的感光宽容度要比数码相机的ccd高出很多!了解这个概念之后,我们就不难了解,为什么在逆光的条件 下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍摄出来,要么就是云彩颜色绚烂而建筑物变成了黑糊糊的剪影,要么就是建筑物色彩细节清楚而原本美 丽的云彩却成了白色的一片再看人眼的结构,有瞳孔可以控制通光量,有杆状感光细胞和椎状感光细胞以适应不同的光强,可见即使人眼有着很高的感光宽容度,依然有亮度调节系统,以适应光强变化。

       那么对于camera sensor来说,正确的曝光就更为重要了!


自动曝光和18%灰

       对于sensor来说,又是如何来判断曝光是否正确呢?很标准的做法就是在YUV空间计算当前图像的Y值的均值。调节各种曝光参数设定(自动或手动),使得该均值落在一个目标值附近的时候,就认为得到了正确的曝光。


       那么如何确定这个Y的均值,以及如何调整参数使得sensor能够将当前图像的亮度调整到这个范围呢?

       这就涉及到一个概念 18%灰,一般认为室内室外的景物,在通常的情况下,其平均的反光系数大约为18%,而色彩均值,如前所述,可以认为是一种中灰的色调。这样,可以通过对 反光率为18%的灰板拍摄,调整曝光参数,使其颜色接近为中等亮度的灰色(Y值为128)。然后,对于通常的景物,就能自动的得到正确的曝光了。

 

      当然这种自动判断曝光参数的AE功能不是万能的,对于反光率偏离通常均值的场景,比如雪景,夜景等,用这种方法就无法得到正确的曝光量了。所以在sensor的软件处理模块中,通常还会提供曝光级别的设定功能,强制改变自动曝光的判断标准。比如改变预期的亮度均值等。


曝光级别设定

       在多数数码相机和拍照手机上都可以看到曝光级别设定的功能,如前所述,这种设定实际上是在自动曝光的基础上给用户提供一定的曝光控制能力,强制改变camera sensor的曝光判断标准,获得用户想要的效果。

       通常的做法就是改变Y值均值的预期值,使得sensor在自动曝光时以新的Y预期值为目标,自动调整Exptime 和 AG。


曝光参数的调整

       曝光强度的调整,可以通过改变曝光时间,也可以通过改变亮度增益AG来实现。

       曝光时间受到桢频的限制,比如摄像时要求15帧每秒的话,这时候曝光时间最长就不能超过1/15s,可能还有别的条件限制,实际的曝光时间还要短,在光线弱的情况下,单独调整曝光时间就无法满足帧频的需要了。


       这时候还可以调整增益AG,来控制曝光的增益,降低曝光时间。但是,这样做的缺点是以牺牲图像质量为代价的,AG的增强,伴随的必然是信噪比的降低,图像噪声的增强。

       所以,以图像质量为优先考虑的时候,曝光参数的调节通常是优先考虑调节曝光时间,其次在考虑曝光增益。当然曝光时间也不能过长以免由于抖动造成图像的模糊,而在拍摄运动场景时,对曝光时间的要求就更高了。


(8)其他知识

抗噪处理

       AG 的增大,不可避免的带来噪点的增多,此外,如果光线较暗,曝光时间过长,也会增加噪点的数目(从数码相机上看,主要是因为长时间曝光,感光元件温度升高, 电流噪声造成感光元件噪点的增多),而感光元件本身的缺陷也是噪点甚至坏点的来源之一。因此,通常sensor集成或后端的ISP都带有降噪功能的相关设 置。


A、启动时机

       根据噪点形成的原因,主要是AG或Exptime超过一定值后需要启动降噪功能,因此通常需要确定这两个参数的阙值,过小和过大都不好。

       从下面的降噪处理的办法将会看到,降噪势附带的带来图像质量的下降,所以过早启动降噪功能,在不必要的情况下做降噪处理不但增加处理器或ISP的负担,还有可能适得其反。而过迟启动降噪功能,则在原本需要它的时候,起不到相应的作用。


B、判定原则和处理方式

       那么如何判定一个点是否是噪点呢?我们从人是如何识别噪点的开始讨论,对于人眼来说,判定一个点是噪点,无外乎就是这一点的亮度或颜色与边上大 部分的点差异过大。从噪点产生的机制来说,颜色的异常应该是总是伴随着亮度的异常,而且对亮度异常的处理工作量比颜色异常要小,所以通常sensor ISP的判定原则是一个点的亮度与周围点的亮度的差值大于一个阙值的时候,就认为该点是一个噪点。

       处理的方式,通常是对周围的点取均值来替代原先的值,这种做法并不增加信息量,类似于一个模糊算法。

       对于高端的数码相机,拥有较强的图像处理芯片,在判定和处理方面是否有更复杂的算法,估计也是有可能的。比如亮度和颜色综合作为标准来判定噪 点,采用运算量更大的插值算法做补偿,对于sensor固有的坏点,噪点,采用屏蔽的方式抛弃其数据(Nikon就是这么做的,其它厂商应该也如此)等 等。


C、效果

       对于手机sensor来说,这种降噪处理的作用有多大,笔者个人认为应该很有限,毕竟相对数码相机,手机sensor的镜头太小,通光量小,所 以其基准AG势必就比相机的增益要大(比如相当于普通家用数码相机ISO800的水平),这样才能获得同样的亮度,所以电流噪声带来的影响也就要大得多。 这样一来,即使最佳情况,噪点也会很多,数据本身的波动就很大,这也就造成我们在手机照片上势必会看到的密密麻麻的花点,如果全部做平均,降低了噪点的同 时,图像也会变得模糊,所以手机噪点的判断阙值会设得比较高,以免涉及面过大,模糊了整体图像。这样一来一是数据本身就差,二是降噪的标准也降低了,造成 总体效果不佳。


数码变焦

数码变焦可以有两种形式:

       其一,是通过插值算法,对图像进行插值运算,将图像的尺寸扩大到所需的规格,这种算法就其效果而言,并不理想,尤其是当使用在手机上的时候,手 机上的摄像头本身得到的数据就有较大的噪声,再插值的话,得到的图像几乎没法使用。实际上,即使是数码相机的数码变焦功能也没有太大的实用价值。如果插值 算法没有硬件支持,则需要在应用层实现。


       其二,其实是一种伪数码变焦的形式,当摄像头不处在最大分辨率格式的情况下,比如130万像素的sensor使用640*480的规格
拍照时, 仍旧设置sersor工作在1280*960的分辨率下,而后通过采集中央部分的图像来获取640*480的照片,使得在手机上看来所拍物体尺寸被放大了 一倍。也有很多手机采用的是这种数码变焦方式,这种办法几乎不需要额外的算法支持,对图像质量也没有影响,缺点是只有小尺寸情况下可以采用。此外在DV方 式下也可以实现所谓的数码变焦放大拍摄功能。(这应该是一个卖点,对Dv来说,这种数码变焦还是有实际意义的)。要采用这种变焦模式,驱动需要支持windowing功能,获取所需部分的sensor图像数据。


工频干扰

A、何谓频闪

       日常使用的普通光源如白炽灯、日光灯、石英灯等都是直接用220/50Hz交流电工作,每秒钟内正负半周各变化50次,因而导致灯光在1秒钟内发生100(50×2)次的闪烁,再加上市电电压的不稳定,灯光忽明忽暗,这样就产生了所谓的“频闪”。

       因为人眼对光强变化有一定的迟滞和适应性,所以通常看不出光源的亮度变化。但是依然还是会增加眼睛的疲劳程度。所以市场上才会有所谓的无频闪灯销售。 


B、对频闪的抑制

       对于camera sensor来说,没有人眼的迟滞和适应过程,所以对光源亮度的变化是比较敏感的。如果不加抑制,在预览和DV模式下,可能会有明显的图像的明亮变化闪烁的现象发生。

       如何解决呢?考虑到频闪的周期性,在一个周期内,光源亮度的累积值,应该是大体一致的,所以,如果控制曝光的时间是频闪周期的整倍数,那么每一帧图像的亮度就大体是一致的了,这样就可以有效地抑制频闪对图像亮度的影响。

       所以,在自动曝光的模式下,sensor会根据频闪的频率,调整曝光时间为其周期的整倍数。 因为各地的交流电的频率不同,所以有50Hz/60Hz之分。

       在具体设置相关Sensor寄存器的时候,要根据电流频率和sensor的时钟频率,分辨率等,计算出频闪周期对应的时钟周期数等。



2019-08-01 14:41:35 m0_37324740 阅读数 289
  • 数字成像系统

    数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲

    7632 人正在学习 去看看 姜卓

1 什么是 ISP ?

        ISP 全称 Image Signal Processing,即图像信号处理。

        景物通过光学图像投射到 sensor 表面后,光电转换为模拟电信号,消除噪声后经过 A/D 转换后变为数字图像信号。由于原始的图像是 Bayer 图像,因此需要通过一定的技术转换成一张色彩正常的 RGB 通道的图像。这个过程涉及到以下的基本流程:

1.1 BLC 模块

        BLC (Black Level Correction)模块为了校正黑电平(图像数据为0时的信号电平)。因为 A/D 芯片无法输出电压值极小的信号,以及 sensor 电路本身存在暗电流(没有光照条件下依然有一定的输出电压)。  

1.2 Demosaic 插值模块

        该模块实现 Bayer 数据转换成 RGB 数据的功能,通过颜色插值后使得每个像素都具有三个通道数据。

1.3 White Balance 模块

        Bayer 经过插值后的 RGB 数据显示通常偏向绿色。Bayer 数据中,绿色像素占总像素的一半(因为人的眼睛对于绿色更加敏感,这也是 Bayer 格式设计的初衷),需要对偏色进行修正。白平衡操作可以在颜色插值后进行,也可以在黑电平操作后进行。

1.4 CCM 模块

        CCM (Color Correction Matrix) 模块通过矩阵运算,调节图像的饱和度,颜色校正等功能。

1.5 Gamma 模块

        模块主要用于调节图像的对比度和亮度,通过 Gamma 曲线进行映射,获得新的像素值。

1.6 CSC 模块

        该模块通过矩阵运算并叠加偏移量,实现 RGB 向 YUV 数据的转换。为什么要转换呢?因为 YUV 数据分离了图片不同的信息,且由于采样方式不一样,压缩了数据,便于存储。

1.7 Sharpen 模块

        锐化模块提高图像的清晰度,但是作用太强会放大噪声,同时会造成白边和锯齿等现象。

1.8 DN 模块

        降噪模块用于降低图像的躁点。

2 新人学习 ISP 流程的注意点

  • 需要一定的编程基础,至少懂得一门语言。在这个基础上需要熟练掌握一门脚本和编程语言。推荐 Matlab 进行仿真工作,用 C 语言或者 C++ 进行工程工作。
  • 对自身工作具有一定的兴趣
  • 在初次编程过程中可能会遇到的问题:
  1. 如何读取数据
  2. 图像数据的类型
  3. 图像数据的结构
  4. 如何进行矩阵运算
  5. 计算过程中溢出的数据如何截断
  6. 各个图像的算法原理是什么,如何改进,不同算法之间的区别是什么
  7. 图像如何显示
  8. 尤其掌握 C 语言的基本语法(主要掌握指针使用和内存分配问题)等等。

 

2020-01-29 22:33:40 brandon2015 阅读数 1342
  • 数字成像系统

    数字成像系统暨Image signal processor原理培训,涵盖成像系统基础5讲:1. 数字成像系统介绍2. CMOS image sensor基础3. 镜头光学基础4. 颜色科学基础5. ISP 信号处理基础,以及ISP各模块:6.黑电平与线性化7.Green Imbalance8:9.坏点消除等21讲,3A技术以及图像质量评价与调校6讲

    7632 人正在学习 去看看 姜卓

目录

引言

Sensor输出的原始数据和人类预期的图像有巨大差异

Sensor的不完美以及ISP处理的原理

总结,如何才能做一个能商用有竞争力的ISP


引言


凡是和图像领域工作的人,都会经常听到ISP(Image Signal Process,图像信号处理),知道ISP对图像质量非常重要。比如华为和小米竞争手机拍照和录像效果,主要的竞争领域就是ISP;做AI(Artificial Intelligence,人工智能)的人也知道,如果ISP不给力,后续的AI处理效果会受到影响。

ISP在图像输入流中的位置如下(图中的成像引擎): 

有时,我们想了解一下ISP里面到底有什么,会拿到一个巨大图,伴随一个名词列表,搞不清重点,搞不清前因后果。

再请教几个图像处理的教授,他会说,你说的都是工程问题,我现在在研究更深奥的课题,比如三维重建,语义分割,人体运动捕捉等算法。What?我就是为了这些AI算法,遇到了ISP的瓶颈。

为什么相机的CMOS传感器(Sensor)输出的原始数据(raw data)不能做好一点,不要让ISP做这么复杂?

现在的ISP通常做了哪些工作,每个工作的原因是什么?处理的原理是什么?哪些处理对于图像效果最明显?哪些处理比较成熟?

接下来我们就来回答。

 

Sensor输出的原始数据和人类预期的图像有巨大差异


需要ISP模块的原因有2个方面,一个是镜头和Sensor的物理缺陷(不完美),第二是拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过瞳孔缩放,适应环境明暗一样)。

由于这2个方面原因,如果没有ISP模块,现在无法让我们生成人类预期的图片质量。如下图,是几幅油画,这就是人类期望的调整ISP成像效果的方向。

 

梦幻田园│法国画家Jean Marc Janiaczyk油画作品

跨越阿尔卑斯山圣伯纳隘口的拿破仑│法国画家雅克-路易·大卫 (1801-1805年)

抱陶女│画家谢楚余油画作品(1997年)

再来一张Sensor输出的Raw Data的效果,可以看到效果很差(注意是正常室内光线下):

 

Sensor的问题以及ISP的处理原理


镜头和Sensor的物理缺陷(不完美)导致以下问题,需要ISP模块去补偿。

 

问题一:Sensor有漏电流。

由于Sensor漏电流存在,刚把镜头放入一个全黑的环境,Sensor输出的原始数据不为0;而我们希望全黑时原始数据为0.

处理模块名称:BLC(BlackLevel Correction)------黑电平校正

处理原理:我们需要找到一个矫正值,所有像素值都减去这个值,就得到一个矫正成功的结果。一般情况下,sensor的传感器周边,还有一小部分区域是有感光器的,但是没有光透射进来。可以把这部分的传感器的信号作为矫正值,从可感光部分的信号中减去,就可获得校正后信号。

处理流程:在运行时调整,不需要依赖人工矫正。

处理效果:处理方案成熟。

左边未校验,右边是矫正后的图像

 

问题二:通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕。

这是由于随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少。导致Senor捕获的图像中间亮度高,周围边缘亮度低。

处理模块名称:LSC(Lens Shade Correction)------镜头阴影校正

处理原理:首先检测出图像中间亮度比较均匀的部分,认为这部分不需要矫正,然后以此为中心,计算出周围区域需要补偿的因子(增益)。实际项目中,可以把镜头对准白色物体,检查图像四周是否有暗角。

处理流程:在运行前依赖人工矫正。

处理效果:处理方案成熟。

下图左边图像是未做镜头阴影校正的,右边图像是做了镜头阴影校正的。

 

问题三:Senor上有的像素点的输出有坏点。

由于Sensor是物理器件,有坏点是难以避免的;而且使用时间长了坏点会越来越多。通过在全黑环境下观察输出的彩点和亮点,或在白色物体下观察输出的彩点和黑点,就可以看到无规律的散落在各处的坏点。

处理模块名称:BPC(Bad Point Correction)------坏点校正

也叫Defect Pixel Correction(DPC)

处理原理

第一步:检测坏点。在RGB域上做5x5的评估,如果某个点和周围的点偏离度超过阈值的点为坏点。为了防止误判,还需要更复杂的逻辑,如连续评估N帧。

第二步:纠正坏点。对找到的坏点做中值滤波,替换原来的值即可。

处理流程:在运行时调整,不需要依赖人工矫正。

处理效果NA

 

问题四:Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)。

按道理sensor输出的是RGB的raw data,每个像素点都感知RGB 3个分量的数字这样最准确。但是这样需要3套感光板,而且RGB的3套数据还需要时间同步和对齐,这样成本高,难度大。

所以,我们通常采用一个叫Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)的滤光板,放在一个感光板。

如下图是一个8x8的分辨率的感光面板,图(a)中彩色部分是Bayer色彩滤波阵列,RGB三种颜色间隔排列。这样一次拍照就产生图(b)的RGB三幅图片,图片中彩色的是有感光数字的,白色空白是没有感光数字的点。我们需要通过Demosaic(颜色插值)的方法,把白色的像素点的值给补上。

图(b)绿色的像素点数目是红色或蓝色的2倍,是因为人员对绿色更敏感。

Bayer色彩滤波阵列的结构:(a)在Sensor表面的CFA; (b)颜色分量的光分离和导致的传感器的不同像素点

注:Bayer色彩滤波阵列并不是唯一选择,他只是柯达公司科学家Bayer发明的。华为P30pro夜间拍摄牛逼,用到了RYYB的滤镜阵列设计,RYYB就是将两个绿色像素(G)换成黄色像素(Y)替代, Y(红色和绿色组合)。

处理模块名称:Demosaic------颜色插值

处理原理:在补充图(b)中白色像素点的数值时,我们可以认为每个白色像素点的值,和他附近的同色点的值相近。所以,最简单的方法是内插法。

处理流程:在运行时调整,不需要依赖人工矫正。

处理效果:较成熟。

 

问题五:Senor获取的图像中有大量噪声。

Senor的感光器件包含模拟部分,所以信号中的噪声很难避免,ADC器件本身也会引入噪声。另外,当光线较暗时,整个系统需要将信号放大,这样噪声也跟着放大。

我们在看没有经过降噪处理的图片时,会感觉到图片上浮了一层彩色雪花点。

处理模块名称:Bayer Denoise-----去除噪声

处理原理对图像进行降噪处理的传统方法有均值滤波、高斯滤波,本质是低通滤波器。

普通的高斯滤波只考虑像素的空间距离关系,这样会导致滤波后图像变得模糊,为了避免图像变模糊,就需要保持图像的边缘,这时,就还要考虑相邻像素和本像素的相似程度,对于相似度高的像素给予更高的权重,我们称这种滤波为双边滤波。

处理流程:部分参数可提前调校(tuning),如调整滤波强弱。

处理效果比较成熟。

下面左边是滤波前的图像,右边是滤波后的图像。

 

问题六:Senor获取的图像容易受到光源颜色的影响。

人类的视觉系统有一定的颜色恒常性特点,不会受到光源颜色的影响。实际生活中,不论是晴天、阴天、室内白炽灯或日光灯下,人们所看到的白色物体总是是白色的,这就是视觉修正的结果。人脑对物体的颜色有一定先验知识,可识别物体并且更正这种色差。

但是Sensor不具备这样的特点,比如一张白纸,在不同光线下,Sensor输出的是不同颜色,在低色温下偏黄,在高色温下偏蓝。如白炽灯照明下拍出的照片易偏黄;而在户外日光充足则拍摄出来景物也会偏蓝。

我们就需要,让不同色温光线条件下白色物体,Sensor的输出都转换为更接近白色。

处理模块名称:AWB(Automatic White Balance)------自动白平衡

处理原理:比较常用的WEB算法有灰度世界、完美反射法等。

灰度世界(Gray World)算法基于一个假设:平均来讲,世界是灰色的。所以,白平衡就是调整R/B增益,达到R、G、B 相等。

白平衡有3个步骤:

(1)检测色温,如果手工调节,就知道图像中什么位置是白色物体了,色温容易检测;如果是自动调节,就需要估计出(猜出)图像中的白色位置,这是最重要的一环;

实际计算中为了实时操作,减少计算量,通常选取某个特定区域(如图像中央)像素进行计算。但若图像颜色较为单一或选定区域正好落入大的色块(红光下的白墙),以上算法求得的色温会非常不准确。为此,必须根据一定的约束条件,挑选出白色像素来计算色差。

(2)计算增益,计算R和B要调整的增益;调整增益将Cb和Cr调整到0 (或接近0)的两个系数,即R=G=B。

(2)色温矫正,根据增益调整整幅图片的色温。

处理流程:自动校正。

处理效果:现阶段大多数的数码相机、拍照手机的白平衡的功能都已相当准确。

白平衡对色彩效果影响很大,一个好的算法能够使色彩效果更逼真,也可以利用白平衡达到艺术效果。

 

问题七:Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差。

所以,Sensor图像传感器获取的图像,于人们期望的颜色有距离,必须矫正。

AWB已经将白色校准了,CCM就是用来校准除白色以外其他颜色的准确度的,

处理模块名称:CCM(Color Correction Matrix)------颜色校正

处理原理:一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵,一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。

用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。Ccm矫正最终结果可以通过拍摄24色卡图片然后用imatest(一款专业的图像分析软件,具有强大的图像分析和处理功能)分析来做分析参考

处理流程:依赖手工校正。

处理效果:大家可以看到,右侧的24色卡图片是经过颜色校正的,色彩艳丽了很多。

 

问题八:人眼对暗部细节比Sensor敏感。

人眼不同于摄像机,接收光子来感知光线。比如:在一间小黑屋中每增加一盏灯,摄像机都能线性增加亮度。但是人眼在黑暗时增加一盏灯时感受明显,往后随着灯的个数增长人眼并不会有明显感受。如果将实验做成图表,如下图所示,蓝色为人眼,紫色为摄像机。

处理模块名称:RGB Gamma------Gamma校正

处理原理Gamma编码后的图像相比于线性编码的图像,明显有更多的暗部色阶。Gamma编码刚好满足了人眼对暗部细节敏感的特性。即人眼是按照gamma < 1的曲线对输入图像进行处理的(公式f(I)=I^gamma,I为原图像素值)。

现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值。

处理流程:可手工校正Gamma参数。

处理效果:左图为原图,中图为gamma = 1/2.2在校正结果,右图为gamma = 2.2的校正结果。

 

问题九:Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽。

在YUV 色彩空间上进行彩色噪声去除、 边缘增强等更方便。

处理模块名称:RGBToYUV------色彩空间转换

处理原理:YUV 是一种基本色彩空间, 人眼对亮度Y改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。所以,只有YUV444格式的YUV数据的比例是1:1:1,其他各种格式,如YUV422,YUV420等格式,UV的数据量都小于Y,达到节省存储空间和传输带宽的目的。YUV数据的概念就是这样简单。(在编程时查一下文档,再搞清楚内存排布即可)

第二,RGB和YUV转换有固定的公式。

另外,  在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

YCbCr与RGB的相互转换

   Y=0.299R+0.587G+0.114B

   Cb=0.564(B-Y)

   Cr=0.713(R-Y)

   R=Y+1.402Cr

   G=Y-0.344Cb-0.714Cr

    B=Y+1.772Cb

处理流程:实时计算,不需要提前调校。

处理效果:人眼看不出图像质量变化。

 

问题十:Senor一定曝光量下较暗部分或较亮部分的细节显示不充分。

自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力相对较窄,而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范围内高亮,极暗环境的中的细节分辨率。

为保证人眼看到的世界和显示器或者摄像头采集的图像的亮度范围相差无几,甚至更好,需要通过tone mapping,将暗处和亮出细节再现。这是一种纯粹为了视觉感受而进行的处理,并非真正的HDR。也有人称为WDR(Wide Dynamic Range)。

简而言之,宽动态技术可以使场景中特别亮的区域和特别暗的区域在最终成像中同时看清楚。

处理模块名称:HDR(High-Dynamic Range)------高动态范围

处理原理

主要是通过tone mapping的方法,将像素值在特别暗的区域拉高,在特别亮的区域拉低。

Tone mapping有以下几种:

1) global tone mapping

    (a) 单一tone mapping曲线。对整幅图低拉高,高拉低。(缺点,蒙上一层雾感觉,因为数值压缩后忘中间靠拢,局部对比度下降)

    (b) 双边滤波tone mapping。在图像中局部边缘处不会进行tone mapping,以保持局部细节。

2) local tone mapping

    (a) 虚拟曝光。通过多帧相加确定哪些区域是高亮区,哪些区域是低亮区。然后分区进行local tone mapping

    (b) local gamma。图片分成多块,对每块进行gamma矫正。主要根据每块的亮度直方图进行动态调整gamma曲线。

处理流程:实时计算,且需要提前调校。

处理效果:HDR或WDR仍然是手机相机重点竞争的领域,说明这个方向有长足进度,但仍然有提升空间,而且是难点。

 

问题十一:YUV色彩空间需要进一步降噪和锐化。

主要是对yuv降噪处理,同时为了消除降噪过程中对图像细节的损失,需要对图像进行锐化处理,还原图像的相关细节。

因为在YUV色彩空间,这些处理更方便。

处理模块名称:Color denoise / sharpness

处理原理:为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理。

在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出YUV(或者RGB) 格式的数据, 再通过I/O 接口传输到CPU 中处理

处理流程:实时计算,且需要提前调校。

处理效果:降噪的要求和效果总是不断提高的,而且降噪和锐化是互相矛盾的,所以会有各种不同算法。

如下图所示,左图是未锐化的原始图像,右图是经过锐化之后的图像。

 

问题十二:图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间。

不同场景下,光照的强度有着很大的差别。人眼有着自适应的能力因此可以很快的调整,使自己可以感应到合适的亮度。而图像传感器却不具有这种自适应能力,因此必须使用自动曝光功能来确保拍摄的照片获得准确的曝光从而具有合适的亮度。

处理模块名称:AEC(Automatic Exposure Control)----自动曝光

处理原理

自动曝光的实现一般包括三个步骤:

1)光强测量。光强测量的过程是利用图像的曝光信息来获得当前光照信息的过程。可以统计图像的全部像素,也可以统计图像中间部分、也可以将图像分成不同部分且每部分赋予不同权重。

2)场景分析。场景分析是指为了获得当前光照的特殊情况而进行的处理,比如有没有背光照射或者正面强光等场景下。对这些信息的分析,可以提升图像传感器的易用性,并且能大幅度提高图像的质量,这是自动曝光中最为关键的技术。目前常用的场景分析的技术主要有模糊逻辑和人工神经网络算法。这些算法比起固定分区测光算法具有更高的可靠性,主要是因为在模糊规则制定或者神经网络的训练过程中已经考虑了各种不同光照条件。

3)曝光补偿。

在完成了光强测量和场景分析之后,就要控制相应的参数使得曝光调节生效。主要是通过设定曝光时间和曝光增益来实现的。

处理流程:实时计算,且需要提前调校。

处理效果:自动曝光的要求总是不断提高的。

 

问题十三:变焦镜头需要自动调节焦距。

处理模块名称:AF自动对焦

处理原理

AF算法的基本步骤是先判断图像的模糊程度,通过合适的模糊度评价函数求得采集的每一副图像的评价值, 然后通过搜索算法得到一系列评价值的峰值, 最后通过电机驱动将采集设备调节到峰值所在的位置, 得到最清晰的图像。

对焦评价函数

评价函数有很多种, 主要考虑的图像因素有图像频率(清晰的图像纹理多, 高频分布较多), 还有图像的灰度分量的分布(图像对应的灰度图的分量分布范围越大,说明图像的细节较多, 反应的图像的清晰程度)

常用的搜索算法有爬山算法, 搜索窗口有黄金分割点对焦嵌套窗口等.

处理流程:实时计算,且需要提前调校。

处理效果:大家体验一下自己的手机摄像头的对焦体验,大部分时间是准的。

 

总结,如何才能做一个能商用有竞争力的ISP


通过上面的介绍,大家在看cmos传感器的ISP处理流程图,是不是就豁然开朗了?

ISP的原理如此简单,那为什么成为图像处理芯片的差异化的最大壁垒之一呢?

第一,上面介绍的ISP的功能,原理虽然简单,但是里面有太多需要估计的策略,其实就是猜,要猜准确,有大量的经验,反复的调校工作在里面。

第二,上面有些模块是相互影响的,这也增加了工作量。调试时,可能按下葫芦浮起瓢,大量时间消耗。比如,我们常说的3A算法(Auto Exposure、Auto Focus和Auto white balance)上文都介绍过,之所以叫3A,就是因为他们是相互作用相互成全的。

第三,作为一个商用的ISP,还需要更多的功能模块。如下图中,还需要有X-talk(串扰),VSM(Video Stablization Measurement)视频稳定。

下面的名词的概念上文中都提到了:
    DPCC(Defect Pixel Cluster Correction)坏点簇纠正
    DPF(De-noising Pre-Filter)降噪预滤波
    蓝框框里是“去马赛克”单元,包含CAC(Cromatic Aberration Correction色彩失常校正)、降噪滤波器
    CNR(Croma Noise Reduction)色度噪点降低
    CSM(Color Space Matrix)

最后,是人才问题,ISP是苦活累活,人才会被吸引到更加多金、就业面更广的AI上去;作为历史较悠久的技术,员工花了大量时间,就业去向只有较大的几家芯片公司,这些公司可能已经不怎么招新人了。所以,一家公司要建立自己的ISP团队,考验的是公司的技术积累、公司对ISP的政策倾斜。

 

camera图像处理

阅读数 31

ISP工作原理

阅读数 20

没有更多推荐了,返回首页