一、摄像头结构和基本工作原理
拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。
数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。DSP结构框架:
1. ISP(image signal processor)(镜像信号处理器)
2. JPEG encoder(JPEG图像解码器)
3. USB device controller(USB设备控制器) 或者其他接口
常见的摄像头传感器类型主要有两种,
一种是CCD传感器(Chagre Couled Device),即电荷耦合器。
一种是CMOS传感器(Complementary Metal-Oxide Semiconductor)即互补性金属氧化物半导体。
CCD的优势在于成像质量好,但是制造工艺复杂,成本高昂,且耗电高。在相同分辨率下,CMOS价格比CCD便宜,但图像质量相比CCD来说要低一些。CMOS影像传感器相对CCD具有耗电低的优势,加上随着工艺技术的进步,CMOS的画质水平也不断地在提高,所以目前市面上的手机摄像头都采用CMOS传感器。
景物通过 Lens 生成的光学图像投射到 sensor 表面上, 经过光电转换为模拟电信号, 消噪声后经过 A/D 转换后变为数字图像信号,再送到数字信号处理芯片( DSP) 中加工处理。所以,从 sensor 端过来的图像是 Bayer 图像,经过黑电平补偿 ( black level compensation)、镜头矫正 ( lens shading correction)、坏像素矫正 ( bad pixel correction)、颜色插值 ( demosaic)、Bayer 噪声去除、 白平衡( awb) 矫正、 色彩矫正( color correction) 、 gamma 矫正、 色彩空间转换( RGB 转换为 YUV) 、 在 YUV 色彩空间上彩噪去除与边缘加强、 色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出 YUV( 或者 RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。
二、以下对各个模块的处理算法做简要概述
1)Bayer
图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红、 绿、 蓝三个分量的信息, 然后将红、 绿、 蓝三个分量的信息合成彩色图像。 该方案需要三块滤镜, 这样价格昂贵,且不好制造, 因为三块滤镜都必须保证每一个像素点都对齐。
通过在黑白cmos 图像传感器的基础上, 增加彩色滤波结构和彩色信息处理模块就可以获得图像的彩色信息, 再对该彩色信息进行处理, 就可以获得色彩逼真的彩色图像。通常把彩色图像传感器表面覆盖的滤波称为彩色滤波阵列( Color Filter Arrays, CFA) 。
目前最常用的滤镜阵列是棋盘格式的, 已经有很多种类的, 其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列( Bayer Pattern CFA) , 如图2 所示, R、 G、B 分别表示透红色、 透绿色和透蓝色的滤镜阵列单元, 图3 比较形象地展示了此过程。由于人的视觉对绿色最为敏感, 所以在Bayer CFA 中G 分量是R 和B 的二倍, 在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。
2)BLC(Black level Correction)
a.暗电流
物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到象素, 象素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行 区分。
b.Black Level
Black Level 是用来定义图像数据为0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。 所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下, 在传感器中, 实际像素要比有效像素多, 如下图所示, 像素区头几行作为不感光区( 实际上, 这部分区域也做了RGB 的 color filter) , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。
下面所列图是做了black level 矫正与没做black level 矫正的对比, 很明显, 左边没做black level矫正的图片会比较亮, 影响图像的对比度:
3)LSC(Lens Shading Correction)
由于镜头本身的物理性质, 造成图像四周亮度相对中心亮度逐渐降低, 以及, 如下图所示, 由于图像光照在透过镜头照射到pixel 上时, 边角处的焦点夹角大于中心焦点夹角, 造成边角失光。 表现在图像上的效果就是亮度从图像中心到四周逐渐衰减, 且离图像中心越远亮度越暗。 为了补偿四周的亮度, 需要进行Lens Shading 的矫正。
Lens Shading 的矫正的方法是根据一定的算法计算每个像素对应的亮度矫正值, 从而补偿周边衰减的亮度。
矫正方法有二次项矫正、 四次项矫正。
4)BPC(Bad Pixel Correction)
a.坏点
坏点为全黑环境下输出图像中的白点, 高亮环境下输出图像中的黑点。
b.坏点修复方法
一般情况下,RGB 信号应与景物亮度呈线性响应关系, 但由于Senor 部分pixel 不良导致输出的信号不正常, 出现白点或黑点。
坏点修复方法通常有两种:
一种是自动检测坏点并自动修复, 另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是OTP 的方式。
c.坏像素矫正原理
下面以自动检测坏点修复方法为例, 阐述坏像素矫正算法原理。
5)颜色插值
当光线通过 Bayer型 CFA(Color Filter Arrays) 阵列之后, 单色光线打在传感器上, 每个像素都为单色光, 从而理想的Bayer 图是一个较为昏暗的马赛克图。
6)Bayer Denoise
使用 cmos sensor获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。
但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。
7)AWB(Automatic White Balance)
白平衡的基本原理是在任意环境下, 把白色物体还原成白色物体, 也就是通过找到图像中的白块, 然后调整R/G/B 的比例, 如下关系: R’= R * R_Gain G’ = G * G_Gain B’ = B * B_Gain R’ = G’= B’
AWB 算法通常包括的步骤如下:
(1)色温统计: 根据图像统计出色温;
(2)计算通道增益: 计算出R 和B 通道的增益;
(3)进行偏色的矫正: 根据给出的增益, 算出偏色图像的矫正。
8)Color Correction
由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响, 得到的RGB 值颜色会存在偏差, 因此必须对颜色进行校正, 通常的做法是通过一个3x3 的颜色变化矩阵来进行颜色矫正。
9)Gamma Correction
人眼对外界光源的感光值与输入光强不是呈线性关系的, 而是呈指数型关系的。 在低照度下, 人眼更容易分辨出亮度的变化, 随着照度的增加, 人眼不易分辨出亮度的变化。 而摄像机感光与输入光强呈线性关系, 为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。
Gamma 矫正是对输入图像灰度值进行的非线性操作, 使输出图像灰度值与输入图像灰度值呈指数关系:
Vout =AVin
这个指数就是 Gamma, 横坐标是输入灰度值, 纵坐标是输出灰度值, 蓝色曲线是gamma 值小于1 时的输入输出关系, 红色曲线是gamma 值大于1 时的输入输出关系。 可以观察到, 当gamma 值小于1 时(蓝色曲线), 图像的整体亮度值得到提升, 同时低灰度处的对比度得到增加, 更利于分辩低灰度值时的图像细节。
#####10)色彩空间转换
YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量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 的公式如下:
r 0.5 0.4178 0.0813 128
b 0.1678 0.33113 0.5 128
0.299 0.587 0.114
C R G B
C R G G
Y R G B
色彩空间转换这个模块, 是将RGB 转换为 YUV444, 然后在YUV 色彩空间上进行后续的彩色噪声去除、 边缘增强等, 也为后续输出转换为jpeg 图片提供方便。
11)Color Denoise
为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理。
12)LLS
长曝光,摄影术语,是在摄影中选慢快门(曝光时间长)从而达到特殊摄影效果的一种摄影方法。该方法好处就是可以把光线暗的景色拍的更清晰,也可以拍出如梦幻般的画面,比如瀑布和城市公路夜景。
胶片的感光度是固定的,如果是数码相机可以调感光度来清晰影像,但是高感光度会增加噪点。拍摄夜景的时候经常用长曝光。通过选慢快门和小光圈来实现。
涉及到的feature,LLS + MFNR;
VCSEL就是「垂直共振腔面射型雷射(VerticalCavitySurfaceEmittingLaser)」的缩写
LTM 局部色调映射(Local Tone Mapping)
HE 直方图均衡(HE) 具有调整图像灰度,增强对比度的作用。
BPS Bayer processing segment Bayer processing : Lens shading correction, bad pixel correction, PDAF pixel correction, zzHDR merge/record, bayer NR, green imbalance correction, black level, and channel gain;
Color processing : Chromatic aberration correction, 2D LUT , chroma suppression, and skin color enhancement
CPP Camera post processor hal3之前有的概念,hal3之后用其他处理单元替换;
DE Detailed enhancement
EIS Electronic image stabilization
IFE Image front-ent engine hal3之后,重新定义的处理单元;Bayer processing for video/preview、 stats(for 3A)、Four tap-in/out points for Qualcomm Hexagon Vector eXtensions(HVX) Streaming
IPE Image processing engine hal3之后,重新定义的处理单元;1、NPS(Noise processing segment) :NR、EIS、Multiframe processing 2、PPS(Post processing segment):LTM、Color processing、Detailed enhancement (ASF)、scaler
MCTF Motion compensation temporal filtering
Multiframe noise reduction
NR Noise reduction
PPS Post processing segment
VFE Video front end
ZSL Zero shuter lag
instant auto focus 及时自动对焦
*本人从事Android Camera相关开发已有5年,
*目前在深圳上班,
*小伙伴记得点我头像,看【个人介绍】进行关注哦,希望和更多的小伙伴一起交流 ~
欢迎关注我的个人微信公众号,公众号会记录自己开发的点滴,还有日常的生活,希望和更多的小伙伴一起交流~~
-------- 2021.01.29 深圳 00:14