图像sensor的工作原理

电子说

1.3w人已加入

描述

CCD(ChargeCoupledDevice,电荷耦合组件)使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要和想像来修改图像。CCD由许多感光单位组成,当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。它就像传统相机的底片一样的感光系统,是感应光线的电路装置,你可以将它想象成一颗颗微小的感应粒子,铺满在光学镜头后方,当光线与图像从镜头透过、投射到CCD表面时,CCD就会产生电流,将感应到的内容转换成数码资料储存起来。CCD像素数目越多、单一像素尺寸越大,收集到的图像就会越清晰。因此,尽管CCD数目并不是决定图像品质的唯一重点,我们仍然可以把它当成相机等级的重要判准之一。目前扫描机、摄录放一体机、数码照相机多数配备CCD。

CCD经过长达35年的发展,大致的形状和运作方式都已经定型。CCD的组成主要是由一个类似马赛克的网格、聚光镜片以及垫于最底下的电子线路矩阵所组成。目前有能力生产CCD的公司分别为:SONY、Philps、Kodak、Matsushita、Fuji和Sharp,大半是日本厂商。

CMOS(Complementaryetal-OxideSemiconductor,附加金属氧化物半导体组件)和CCD一样同为在数码相机中可记录光线变化的半导体。CMOS的制造技术和一般计算机芯片没什么差别,主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带–电)和P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。然而,CMOS的缺点就是太容易出现杂点,这主要是因为早期的设计使CMOS在处理快速变化的影像时,由于电流变化过于频繁而会产生过热的现象。

CCD和CMOS各自的利弊,我们可以从技术的角度来比较两者主要存在的区别:

信息读取方式不同。CCD传感器存储的电荷信息需在同步信号控制下一位一位的实施转移后读取,电荷信息转移和读取输出需要有时钟控制电路和三组不同的电源相配合,整个电路较为复杂。CMOS传感器经光电转换后直接产生电流(或电压)信号,信号读取十分简单。

速度有所差别。CCD传感器需在同步时钟的控制下以行为单位一位一位的输出信息,速度较慢;而CMOS传感器采集光信号的同时就可以取出电信号,还能同时处理各单元的图象信息,速度比CCD快很多。

电源及耗电量。CCD传感器电荷耦合器大多需要三组电源供电,耗电量较大;CMOS传感器只需使用一个电源,耗电量非常小,仅为CCD电荷耦合器的1/8到1/10,CMOS光电传感器在节能方面具有很大优势。

成像质量。CCD传感器制作技术起步较早,技术相对成熟,采用PN结合二氧化硅隔离层隔离噪声,成像质量相对CMOS传感器有一定优势。由于CMOS传感器集成度高,光电传感元件与电路之间距离很近,相互之间的光、电、磁干扰较为严重,噪声对图象质量影响很大。在相同分辨率下,CMOS价格比CCD便宜,但是CMOS器件产生的图像质量相比CCD来说要低一些。到目前为止,市面上绝大多数的消费级别以及高端数码相机都使用CCD作为感应器;CMOS感应器则作为低端产品应用于一些摄像头上。是否具有CCD感应器一度成为人们判断数码相机档次的标准之一。而由于CMOS的制造成本和功耗都要低于CCD不少,所以很多手机生产厂商采用的都是CMOS镜头。现在,市面上大多数手机都采用的是CMOS摄像头,少数也采用了CCD摄像头。

光学变焦和数码变焦原理

光学变焦(OpticalZoom)是通过镜头、物体和焦点三方的位置发生变化而产生的。当成像面在水平方向运动的时候,如下图,视觉和焦距就会发生变化,更远的景物变得更清晰,让人感觉像物体递进的感觉。

显而易见,要改变视角必然有两种办法,一种是改变镜头的焦距。用摄影的话来说,这就是光学变焦。通过改变变焦镜头中的各镜片的相对位置来改变镜头的焦距。另一种就是改变成像面的大小,即成像面的对角线长短在目前的数码摄影中,这就叫做数码变焦。实际上数码变焦并没有改变镜头的焦距,只是通过改变成像面对角线的角度来改变视角,从而产生了“相当于”镜头焦距变化的效果。

所以我们看到,一些镜头越长的数码相机,内部的镜片和感光器移动空间更大,所以变焦倍数也更大。我们看到市面上的一些超薄型数码相机,一般没有光学变焦功能,因为其机身内根部不允许感光器件的移动,而像索尼F828、富士S7000这些“长镜头”的数码相机,光学变焦功能达到5、6倍。

数码变焦(DigitalZoom)也称为数字变焦,数码变焦是通过数码相机内的处理器,把图片内的每个象素面积增大,从而达到放大目的。这种手法如同用图像处理软件把图片的面积改大,不过程序在数码相机内进行,把原来影像感应器上的一部份像素使用“插值”处理手段做放大,将影像感应器上的像素用插值算法将画面放大到整个画面。

与光学变焦不同,数码变焦是在感光器件垂直方向向上的变化,而给人以变焦效果的。在感光器件上的面积越小,那么视觉上就会让用户只看见景物的局部。但是由于焦距没有变化,所以,图像质量是相对于正常情况下较差。

通过数码变焦,拍摄的景物放大了,但它的清晰度会有一定程度的下降,所以数码变焦并没有太大的实际意义。因为太大的数码变焦会使图像严重受损,有时候甚至因为放大倍数太高,而分不清所拍摄的画面。

Sensor内部工作原理

外部光线穿过lens后,经过colorfilter滤波后照射到Sensor面上,Sensor将从lens上传导过来的光线转换为电信号,再通过内部的DA转换为数字信号。如果Sensor没有集成DSP,则通过DVP的方式传输到baseband,此时的数据格式是RAWRGB。

Sensor

Camera Sensor 图像处理原理及实例分析

1、色彩感应及校正

1.1 原理

人眼对色彩的识别,是基于人眼对光线存在三种不同的感应单元,不同的感应单元对不同波段的光有不同的响应曲线的原理,通过大脑的合成得到色彩的感知。 一般来说,我们可以通俗的用RGB三基色的概念来理解颜色的分解和合成。

理论上,如果人眼和sensor对光谱的色光的响应,在光谱上的体现如下的话,基本上对三色光的响应,相互之间不会发生影响,没有所谓的交叉效应。

Sensor

但是,实际情况并没有如此理想,下图表示了人眼的三色感应系统对光谱的响应情况。可见RGB的响应并不是完全独立的。

Sensor

下图则表示了某Kodak相机光谱的响应。可见其与人眼的响应曲线有较大的区别。

Sensor

1.2、 对sensor的色彩感应的校正

既然我们已经看到sensor对光谱的响应,在RGB各分量上与人眼对光谱的响应通常是有偏差的,当然就需要对其进行校正。不光是在交叉效应上,同样对色彩各分量的响应强度也需要校正。通常的做法是通过一个色彩校正矩阵对颜色进行一次校正。

该色彩校正的运算通常是由sensor模块集成或后端的ISP完成,软件通过修改相关寄存器得到正确的校正结果。值得注意的一点是,由于RGB -》 YUV的转换也是通过一个3*3的变换矩阵来实现的,所以有时候这两个矩阵在ISP处理的过程中会合并在一起,通过一次矩阵运算操作完成色彩的校正和颜色 空间的转换。

2、 颜色空间

2.1 、分类

实际上颜色的描述是非常复杂的,比如RGB三基色加光系统就不能涵盖所有可能的颜色,出于各种色彩表达,以及色彩变换和软硬件应用的需求,存在各种各样的颜色模型及色彩空间的表达方式。这些颜色模型,根据不同的划分标准,可以按不同的原则划分为不同的类别。

Sensor

匹配任意可见光所需的三原色光比例曲线

对于sensor来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种(实际上,这两种体系包含了许多种不同的颜色表达方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB如前所述就是按三基色加光系统的原理来描述颜色,而YUV则是按照 亮度,色差的原理来描述颜色。

2.1.1 RGB 《-》 YUV的转换

不比其它颜色空间的转换有一个标准的转换公式,因为YUV在很大程度上是与硬件相关的,所以RGB与YUV的转换公式通常会多个版本,略有不同。

常见的公式如下:

Y=0.30R+0.59G+0.11B

U=0.493(B-Y) = -0.15R-0.29G+0.44B

V=0.877(R-Y) = 0.62R-0.52G-0.10B

但是这样获得的YUV值存在着负值以及取值范围上下限之差不为255等等问题,不利于计算机处理,所以根据不同的理解和需求,通常在软件处理中会用到各种不同的变形的公式,这里就不列举了。

体现在Sensor上,我们也会发现有些Sensor可以设置YUV的输出取值范围。原因就在于此。

从公式中,我们关键要理解的一点是,UV 信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。

3.1、 白平衡

3.1.1、 色温

色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K来表示),当温度升高到一定程度时候,黑体便辐射出可见光,其光谱成份以及给人的感觉也会着温度的不断升高发生相应的变化。于是,就把黑体辐射一定色光的温度定为发射相同色光光源的色温。

Sensor

常见光源色温:

光源 色温(K)

钨丝灯(白炽灯) 2500-3200k

碳棒灯 4000-5500k

荧光灯(日光灯,节能灯) 4500-6500k

氙灯 5600 k

炭精灯 5500~6500k

日光平均 5400k

有云天气下的日光 6500-7000k

阴天日光 12000-18000k

随着色温的升高,光源的颜色由暖色向冷色过渡,光源中的能量分布也由红光端向蓝光端偏移。

值得注意的是,实际光源的光谱分布各不相同,而色温只是代表了能量的偏重程度,并不反映具体的光谱分布,所以即使相同色温的光源,也可能引起不同的色彩反应。

人眼及大脑对色温有一定的生理和心理的自适应性,所以看到的颜色受色温偏移的影响较小,而camera的sersor没有这种能力,所以拍出来的照片不经过白平衡处理的话,和人眼看到的颜色会有较大的偏差(虽然人眼看到的和白光下真实的色彩也有偏差)。

太阳光色温随天气和时间变化的原因,与不同频率光的折射率有关:

Sensor

波长长的光线,折射率小,透射能力强,波长短的光线,折射率大,容易被散射,折射率低,这也就是为什么交通灯用红色,防雾灯通常是黄色,天空为什么是蓝色的等等现象的原因。

知道了这一点,太阳光色温变化的规律和原因也就可以理解和分析了,留给大家自己思考。

3.1.1 色温变化时的色彩校正

所以从理论上可以看出,随着色温的升高,要对色温进行较正,否则,物体在这样的光线条件下所表现出来的颜色就会偏离其正常的颜色,因此需要降低 sensor对红色的增益,增加sersor对蓝光的增益。同时在调整参数时一定程度上要考虑到整体亮度的要保持大致的不变,即以YUV来衡量时,Y值要 基本保持不变,理论上认为可以参考RGB-》YUV变换公式中,RGB三分量对Y值的贡献,从而确定RGAIN和BGAIN的变化的比例关系。但实 际情况比这还要复杂一些,要考虑到不同sensor对R,B的感光的交叉影响和非线性,所以最佳值可能和理论值会有一些偏差。

3.1.2 自动白平衡原理

3.1.2.1 原理

自动白平衡是基于假设场景的色彩的平均值落在一个特定的范围内,如果测量得到结果偏离该范围,则调整对应参数,校正直到其均值落入指定范围。该 处理过程可能基于YUV空间,也可能基于RGB空间来进行。对于Sensor来说,通常的处理方式是通过校正R/B增益,使得UV值落在一个指定的范围 内。从而实现自动白平衡。

3.1.2.2 特殊情况的处理

在自动白平衡中,容易遇到的问题是,如果拍摄的场景,排除光线色温的影响,其本身颜色就是偏离平均颜色值的,比如大面积的偏向某种颜色的图案如:草地,红旗,蓝天等等,这时候,强制白平衡将其平均颜色调整到灰色附近,图像颜色就会严重失真。

因此,通常的做法是:在处理自动白平衡时,除了做为目标结果的预期颜色范围外,另外再设置一对源图像的颜色范围阙值,如果未经处理的图像其颜色均值超出了该阙值的话,根本就不对其做自动白平衡处理。由此保证了上述特殊情况的正确处理。

可见,这两对阙值的确定对于自动白平衡的效果起着关键性的作用。

3.1.3 某平台的例子

英文代码 中文界面 色温 色温 RGAIN, GGAIN, BGAIN

cloud 阴天 7500k 0x1D4C, 0x00CD, 0x0085, 0x0080

daylight 日光 6500k 0x1964, 0x00A3, 0x0080, 0x0088

INCANDESCENCE 白热光 5000k 0x1388, 0x00A5, 0x0080, 0x0088

FLUORESCENT 日光灯 4400k 0x1130, 0x0098, 0x0080, 0x00A8

TUNGSTEN 钨丝灯 2800k 0x0AF0, 0x0080, 0x0081, 0x00A4

可以看到随着色温的升高,其变化规律基本符合上节中的理论分析。不过这里多数参数与理论值都有一些偏差,其中日光灯的色温参数设置与理论值有较 大的偏差,实际效果也证明该日光灯的参数设置使得在家用日光灯环境下拍摄得到的照片颜色偏蓝。修改其参数后实拍效果明显改善。(再查一些资料可以看到通常 会有两种荧光灯色温 4000 和 5000K,目前我所接触到的应该是5000K居多)

3.1.4 调试和验证

具体参数的调整,应该在灯箱环境下,使用各种已知色温的标准光源对标准色卡拍摄,在Pc机上由取色工具测量得到其与标准色板的RGB分量上的色彩偏差,相应的调整各分量增益的比例关系。为了更精确的得到结果,曝光量增益的设置在此之前应该相对准确的校正过

4、颜色相关特效处理

4.1 grayscale (灰阶)

灰阶图的效果就是将彩色图片转换为黑白图片。

4.2 理论

理论上,在YUV空间,将UV分量丢弃,只保留Y分量,这样就可以得到黑白图像,这也是彩色电式机信号能兼容黑白电视机的原理。如下图理论上Y值一样的颜色(右边是用acdsee转成灰度图的效果),在grayscale模式下看应该是一样的颜色。

算法上的操作,理论上应该把UV值改成灰色对应数值就可以了。不过根据软件算法和硬件结构的不同,具体代码也会有不同。

4.3 以某平台为例

核心的两行代码如下:

SET_HUE_U_GAIN(0);

SET_HUE_V_GAIN(0);

这里设置UV GAIN为0,如果UV offset设置为128的话,最终得到的UV就是128,这就和理论是相符合的。

4.4 sepia / sepiagreen / sepiablue

所谓的复古(绿,蓝)就是在灰阶的基础上,对UV值额外再做了一个offset,将灰度图转换成某种颜色的梯度图。理论上为了获得蓝色效果,应该增加蓝色差信号,减小红色差信号。即增大U,减小V。

以sepiablue效果为例,这里的字节的MSB表示符号位:所以88为88,158为-30。

SET_HUE_U_GAIN(0);

SET_HUE_V_GAIN(0);

SET_HUE_U_OFFSET(88);

SET_HUE_V_OFFSET(158);

4.5 negative

所谓负片效果,就是将图像的颜色反转,看起来就像是在看胶片底片时的效果。这从理论上也很容易理解和处理,就是在RGB空间,取其补色,具体的操作就是用255分别减去RGB得到新的RGB值。通常会在ISP中实现该功能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分