ubuntu-linux-实验机环境配置

手机、相机成像原理

Bayer Pattern

Bayer Pattern
CCD(Charge-coupled Device)通过滤镜将普通的入射光分为红绿蓝RGB三个分量。很容易联想到普通的图片每个像素点都包含RGB三个分量的信息,这很容易误导我们认为CCD也接收了每个像素点的三个通道的信息。然而并不是,原理图如下,每一个像素点CCD都只接收了RGB三个分量中的一个分量。一般而言是按照“RG/GB”的方式排列(对照图可以了解RG/GB其实是一个正方形的两行这么排列的)。
image|450x158

Bayer彩色滤波阵列是当前最为流行的彩色图像数字获取形式, 一半的像素点为绿色(G),四分之一的像素点分别是红色(R)和蓝色(B)。
因为Bayer每个像素点的值只存了一个通道的值,所以在转化为RGB图像时需要通过插值的方式将每个像素点中丢失的两个颜色找回来。有几种插值的方式可以使用,但是最常用的方法是线性插值的修正调节版本。这里插值算法不做详细介绍,这里有介绍。

手机成像过程:

一个模拟的Platform Paper
光先经过 lenssensor(CCD,CMOS)出bayer图像经过黑电平补偿 (black level compensation)、镜头矫正(lens shading correction)、坏像素矫正(bad pixel correction)、颜色插值 (demosaic)、Bayer 噪声去除白平衡(awb) 矫正色彩矫正(color correction)、gamma 矫正色彩空间转换(RGB 转换为 YUV)、在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等(IS 的主要作用是使得图像不要因为手持时轻微的抖动而模糊不清。IS 有很多种,例如 OIS、DIS、EIS。ISP 可以实现 DIS 和 EIS), 然后输出 YUV(或者RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。一些具体处理过程细节可以在这里找到.
上述部分为ISP的处理过程。其中包含了我们常常提及的2A(AWB/AE,自动白平衡/自动曝光)或者3A(AWB/AE/AF,自动白平衡/自动曝光/自动聚焦) 总的来说,ISP的图像处理是多个非线性操作组合得到的结果。
image|690x202

黑电平矫正 (BLC)

黑电平(Black Level Correction):即黑色数据的最低电平值,通常指感光图像数据为0时对应的sensor信号电平值。
黑电平形成的原因有多种,主要的形成原因如下面两点:

  1. CMOS传感器采集的信息经过一系列转换生成原始RAW格式数据。以8bit数据为例,单个pixel的有效值是0~255,但是实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,当然同时也会损失一些亮部细节。

  2. sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值

如多sensor输出raw数据中附加的黑电平值,需要在ISP最前端去干净。如果不去干净,干扰信息会影响后端ISP各模块的处理,尤其会导致AWB容易不准,出现画面整体偏绿或者整体偏红现象。

坏点矫正 (DCP)

图像的坏点校正(DPC)通常在Bayer域(灰度图原理一致)进行,算法主要思路为: 使用梯度百分比的方式去检测坏点,检测到坏点之后通过中值滤波进行坏点校正,最终通过alpha混合的方式计算出最终的计算结果。

YUV空间

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。