文章内容来自网络,联系我可以删掉。
目录
CMOS sensor上有什么?
CMOS sensor 通常由像敏单元阵列、行驱动器、列驱动器、时序控制逻辑、AD转换器、数据总线输出接口、控制接口等几部分组成。这几部分功能通常都被集成在同一块硅片上,其工作过程一般可分为复位、光电转换、积分、读出几部分,如下所示。
在camera 产品中,CMOS sensor 是当之无愧的核心元件,它位于镜头和图像信号处理器(ISP)之间,把光信号转换成ISP能够处理的数字信号(电信号。CMOS sensor 让光子直接进入晶体管内部生成电流,光信号的强弱直接决定了电流的大小)。CMOS sensor 与镜头、ISP一起构成了camera 的灵魂,决定了camera 的核心价值。
不同像素对应的图像质量:
像素是camera 的常用宣传点。
(为社么总是说以前的手机拍照好看?因为像素低,拍不出来瑕疵啊啊啊)
像点感光原理:
sensor的感光原理的基础是光电效应。sensor的感光单元,在接受到外界的光刺激之后,会产生一定的电信号,经过处理之后,就能够显示外界图像信息。
Sensor感光的基本单元的解剖结构如下图所示。
图像的发展史,从黑白照片变为彩色图像,那么如何得到彩色的显示图像呢?这就需要对像素单元作一定的处理。
光学上,对于彩色图像,需要采集最基本的颜色,如rgb三种颜色。因此sensor 获取彩色图像,最简单的方法就是用彩色滤镜的方法,来获取三原色。红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果在一个感光单元上要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐。当用bayer格式的时候,很好的解决了这个问题。bayer 格式图片在一块滤镜上按固定的排列设置不同的颜色区块。通过分析人眼对颜色的感知发现,人眼对绿色比较敏感,所以一般bayer格式的图片绿色格式的像素是是r和g像素的和。
Bayer格式是相机内部的原始图片, 一般后缀名为.raw。很多软件都可以查看, 比如PS。我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片, 都是从.raw格式转化过来的。
根据人眼对彩色的响应带宽不高的大面积着色特点,每个像素没有必要同时输出3种颜色。因此,数据采样时,
奇数扫描行的第1,2,3,4,…象素分别采样和输出R,G,R,G,…数据;
偶数扫描行的第1,2,3,4,…象素分别采样和输出G,B,G,B,…数据。
在实际处理时,每个象素的R,G,B信号由象素本身输出的某一种颜色信号和相邻象素输出的其他颜色信号构成。这种采样方式在基本不降低图像质量的同时,可以将采样频率降低60%以上。
当Image Sensor往外逐行输出数据时,像素的序列为GRGRGR.../BGBGBG...(顺序RGB)。这样阵列的Sensor设计,使得RGB传感器减少到了全色传感器的1/3,
综合以上的采样方法,一个严格意义上的像素,是一个具备红、绿、蓝三个颜色分量的组合体,能够表达RGB空间中的一个点。事实上,sensor的一个像点只能表达三种颜色中的一个,所以在sensor范畴内并不存在严格意义上的像素概念。但是很多情况下人们并不刻意区分像素和像点在概念上的差别,经常会用像素来指代像点。
Bayer格式图片是科学家Bryce Bayer发明的,拜耳阵列被广泛运用与数字图像处理领域。不同的sensor可能设计成不同的布局方式,下面是几种常见的布局
Bayer格式变换成RGB格式:
为了从Bayer格式得到每个像素的RGB格式,我们需要通过插值填补缺失的2个色彩。插值的方法有很多(包括领域、线性、3*3等),速度与质量权衡,最好的线性插值补偿算法。其中算法如下:
R和B通过线性领域插值,但这有四种不同的分布,如下图所示:
在(a)与(b)中,R和B分别取邻域的平均值。
在(c)与(d)中,取领域的4个B或R的均值作为中间像素的B值。
4 bayer格式插值绿算法实现。(e),(f)
由于人眼对绿光反应最敏感,对紫光和红光则反应较弱,因此为了达到更好的画质,需要对G特殊照顾。在上述(c)与(d)中,扩展开来就是上图的(e)与(f)中间像素G的取值,者也有一定的算法要求。
(e)中间像素G值的算法如下:
(f)中间像素G值的算法如下:
CMOS摄像头这部分转换是在内部用ADC或者ISP完成的,生产商为了降低成本必然会使得图像失真。当然用外部处理器来实现转换,如果处理器的速度足够NB,能够胜任像素的操作,用上面的算法来进行转换,皆大欢喜。不过上述算法将直接成倍提高了算法的复杂度,速度上将会有所限制。因此为了速度的提成,可以直接通过来4领域G取均值来中间像素的G值,将会降低一倍的速率,而在性能上差之甚微,算法如下:
如果能够通过损失图像的额质量,来达到更快的速度,还可以取G1、G2的均值来实现,但是这样的做法会导致边沿以及跳变部分的失真。