一 Camera模组
大家都知道,手机背面的那个小小的孔,就叫摄像头。这个小孔幽幽的泛着光泽,深邃又迷人,如同
一个含苞待放的小萝莉一样,这个小萝莉还是个傲娇娘,像零之使魔的614一样惹人怜爱,而且在小萝莉身体
里面,不对,是在小孔的里面,还有层膜…..哦,这是镀膜。 看了上面一段大家别惊慌,我不是猥琐的宅男,
我也有女朋友的……她叫姐崎宁宁……囧! 回到正题来吧。虽然Camera的构成大家都知道很简单,就是镜头+感光
芯片而已。不过大家也都知道光学成像是一门非常深奥且尖端的科学,这其中消费者可以拿来讨论的话题非常
之多。我们现在就来谈谈摄像头,从camera的构成开始
Camera最概念性的结构框图,就是镜头+图像传感器+DSP。如果图像传感器类型是CCD,那么在图像传
感器采光后还需要一个A/D转换的过程。 下面具体介绍。
Camera结构一 图像传感器(Sensor)
一 感光二极管阵列 图像传感器(image sensor),这个大家都耳熟能详了,目前买个相机或手机,一般
都会标注sensor的参数,人们也都知道了,sensor是相机中最重要的器件之一,没错,是之一,不是唯一。
Sensor的作用通俗点讲就等效于胶片相机的底片。两者的作用都是保存曝光时间内的光线数据,这些原始数
据就含有基色/亮度等成像的全部要素。 区别在于胶片要在暗房里面慢慢用光显影液和定影液冲洗出影像,
而sensor要经过数字信号处理和数据转换才能成为通用的影像格式。 大家也知道,Sensor的类型,按照工
作原理可分为两类CCD和CMOS。 CCD: 电荷耦合元件 CMOS: 互补型金属氧化物半导体 这两个名字非常拗口,
咱们略过,来说说他们的工作原理吧。 其实我觉得,我们能记住这些专业名词的,还是要记住。如果连名字
都记不住,就去研究原理的话,总觉得好像有什么奇怪的怨念混进来了。这就好比你看上个姑娘,追的死去
活来,终于追到手了,然后海誓山盟,各种美好,结果到领证登记时,登记员问你:未婚妻名字?你才拍脑
袋:我艹我老婆叫什么来着…? 对!就是这种感觉。 首先要说明,图像sensor既然要保存光线,首先要做的
就是能感应光线,即不同的光线照射到材料上,可以输出不同的信号电平。 CCD和CMOS就是对应两种感光
二级管的类型。以此带入后,大家都将这两种感光二极管所构成的sensor,简称为CCD和CMOS。 下面是CCD
和CMOS的感光二极管排列,看图也能看出来,因为感光二极管的构造不同,所以CCD和CMOS的感光阵列结构
也不同。CCD的阵列,是在一根总线后加A/D转换,而CMOS在每个感光二极管旁都加入了A/D转换(红色的二极
管标注)。
大家把视线焦点聚集在阵列图的总线上,CMOS结构的阵列有水平和竖直两条传输总线,而CCD只有水平或者竖
直一条传输总线。 那么大家就有疑问了,CMOS有两条总线,可以以坐标方式直接读取总线的电平来保存每个
像素的电平值,而CCD只有一条总线,怎么输出数据呢? 很简单,大学学过数电吧,CCD传出数据就是在时钟
信号同步下,一步一步的移位读出对应二极管的电平值。 这也就带出CCD和CMOS采集信息的不同点了。CMOS是
主动式输出采集的数据信息,CCD是在同步电路控制下被动式的输出采集的数据。 至此,CCD和CMOS的大多数
特性就可以解释了。 第一, CCD保存图像速度慢,不适合快速连拍。 你瞧,CCD传感器需在同步时钟的控制
下以行为单位一位一位的输出信息,速度当然慢,不慢不舒服斯基。 第二, CMOS保存图像速度快,适合快速
连拍。你瞧,CMOS阵列有坐标嘛,传感器采集光信号的同时就可以取出电信号,还能同时处理各单元的图像信
息,速度当然比CCD快,不快不舒服斯基。 第三, CCD耗电大。本来CCD感光二极管工作就需要多个源极,所
需要施加源极的电平很高(见图),加上CCD的阵列要在同步信号控制下一位一位的实施转移后读取,所以需要
时钟控制电源和三组电源供电,耗电当然大了。不大不舒服斯基。 第四, CMOS耗电小。CMOS传感器经光电转
换后直接产生电流或电压信号,信号读取十分简单,而且感光二极管所需的电压,直接由晶体放大输出,所以
需要施加在源极的电平很小(见图)。不小不舒服斯基。另外,大家还记得上面的摄像头结构框图吗?为什么
CCD传感器后面会有个A/D转换电路,而CMOS却没有?现在知道原因了吧?OK,再来说下一个话题。
CMOS之于CCD的弱点和优势。 在几年前,大家普遍存在一种说法,就是CCD画质比CMOS好。时至今日,这个说
法越来越站不住脚了,当然是CMOS传感技术在高速发展的结果。 说CMOS画质弱于CCD,其实也就是采集的数据
完整性不同罢了。
1. CMOS是主动式输出数据,阵列上每个点都要经过两条传输总线,路程长,虽然经过了放大,但传输时的
噪声引入多。
2. CMOS阵列的每个二极管旁边都有A/D,光电传感元件与电路之间距离很近,相互之间的光电磁干扰较为
严重,放大的同时可能带入的噪声也大。
3. 如上一点,CMOS因为二极管旁带有A/D电路,所以同样尺寸的sensor,CMOS的二极管能受到的光线面积
就小(其他的面积留给A/D电路),所以一部分光线被浪费了,受光弱于CCD的感光二极管,所以带入的一点小
噪声就会被放大。
4. CCD传感器制作技术起步较早,技术比较成熟,采用PN结和二氧化硅隔离层隔离噪声。 不过,近年来,
CMOS技术发展是一日千里,在中小尺寸传感器上,CMOS和CCD的画质区别已经很小了。CMOS可以通过改善微透
镜,在硅表面上掺入杂质等来减小噪声信号。(什么是微透镜?下面慢慢介绍) 这时候,大家又有疑问了,为
什么CMOS在发展,而CCD却没有技术更新了呢? 这个我只能说,CCD成本高又耗电,结构设计又复杂,谁TM闲
着没事去钻研它啊。而且CCD技术起步很早,发展的已经很成熟了,可改善的余地真的不算大。 感慨一下,说
起CCD和CMOS的发展,就好像猎人和海贼王一样。 猎人就是CCD啊,神作啊,可惜它是被富奸这个2B给画出来
的。于是可怜的猎人Fans等了八年,还没等到主角再次登场…
二 微透镜和滤光层 再来,就是微透镜了。 微透镜是什么?是镜头吗?错!给你打个叉。 微透镜不是镜头,
微透镜是CCD/CMOS传感器表面的一层小透镜阵列。 光线不是经由镜头,然后直接照射到CCD/CMOS的感光二极
管阵列上的。在光线射到感光阵列前,还要经过传感器表层的微透镜和滤光层。 在感光二极管之上,有很多微
型的透镜。这些透镜按照二极管的阵列排列,也就是每个感光二极管的上面都有附着一个微型透镜,即一个透
镜对应一个像素来排列。 下图为CCD传感器的纵向结构图。
为什么这种结构?聪明的读者已经猜到了。猜到的同学请举手,叔叔要奖励你一个轻轻的吻,不伸出舌头的那
种哦~~~ 微透镜的作用:初中物理老师都会告诉你,凸透镜用来聚集透射光线的。微透镜当然是用来聚集光线
的。 在阵列中,感光二极管的感光面有限,对应一格像素内的大部分面积是无效受光区域,所以要把阵列中每
格二极管前的光线集中起来,射到二极管的受光面上。 滤光层的作用:注意了,不是孙燕姿的绿光,是滤光。
滤光就是把色彩滤掉。保证每个二极管感受到的光是单色的。为什么要滤成单色光?把你生锈的脑袋转动起来。
前面说了感光二极管只能输出不同的电平,也就是只能表示光的强度而已,没办法表示颜色信息。也就是黄色光
和红色光,只要对应的亮度相同,二极管都会输出一样的电平信息。所以,聪明的开发者就在二极管阵列前面,
加个滤光层,指定这个二极管感受一种颜色的光强,光线中其他的颜色就去掉。这样每个二极管的输出信号就
对应为一种颜色的强度了。 这种做法的缺点是每个像素点得不到真正的信息,只能通过相邻像素的其他颜色强
度,来猜测自己这一格内的其他颜色强度,再把颜色组合起来,算出真正的颜色。这就是所谓的马赛克结构。
目前市面上手机和相机传感器总数的99%是马赛克结构,也就是有先天缺点的。 最常见的马赛克结构就是RGB
三个基色相错排列,如下图。相机将每个像素格的基色信息综合起来,猜出每个像素的实际颜色和强度。
现在还有一种sensor,可以完美解决马赛克的这种先天缺点。就是适马开发的FOVEON X3传感器,其实就是
每个格子的感光电路,可以感受RGB三种基色的信息,缺点是在感光阵列上要加三层滤光层,光线强度会有损
失。 适马X3传感器也是被誉为最接近胶片原理的传感器,成像效果比常用的CCD/CMOS确实好很多。这个好理
解嘛,因为每格像素记录的都是全部的基色,不用靠相邻像素去猜了嘛。 不过很可惜,这种传感器目前只用
在适马自己的单反和专业DC上,而且卖的很贵。另外同样的尺寸下,X3传感器比较难以提高总像素数。
三 传感器尺寸和画质的关系 传感器尺寸大小对于画质的影响,其实跟之前一样,就是采集的光线数据的正确
性和完整性的不同。在像素相同的情况下: 1. 传感器面积越大,感光阵列的面积就越大,相邻感光电路的距
离就越大,加电时产生的电磁干扰就越小。 2. 传感器面积越大,感光阵列的面积就越大,对应单个像素的透
镜就能做的越大,聚集到的光线就越多,感光二极管受光后产生的输出电平就越高。假设噪声大小不变,那么
更大的有用输出电平,带来更高的信噪比,转换后的信息处理时正确率就越高。 3. 为什么在光线非常好的时
候,传感器尺寸大小间的差异会缩小? 因为即使传感器尺寸小,但是光线强度足够,每个感光二极管都能受到
足够的光线,产生的信噪比就大,噪点也就缩小了。 这就是为什么画幅大的单反和单电,比画幅小的手机和卡
片DC成像好的本质原因,当然也有镜头素质等其他原因。下图是各种画幅的大小对比。
(小知识:32×24mm之所以被称为全画幅,是因为这个尺寸和135胶片的尺寸很接近) 好了,关于传感器就
说到这儿。这里是个浅显的原理讨论,深入的半导体材料特性,驱动电路设计等不是我们关心的了。 另外,
关于CCD和CMOS的优劣,被人争论的太多太频繁了。无忌有个帖子讨论的比较深入,感兴趣的话可以搜索一下。
Camera结构二 数字信号处理(DSP)
一 图像信号处理的目的 你像我一样,假期宅在家里,肚子饿了想吃碗泡面,然后打开冰箱拿出泡面,这个
泡面就是原始数据,是不能吃的。你要打开桶,撕开调味袋和酱袋,倒进桶中,再倒热水冲泡数分钟,然后才能
吃。这个过程就叫对数据进行处理。 这时候有人大叫:我吃泡面都是直接吃干面饼的。对于这种喜欢吐槽的魂
淡,我是不会理会的…… 关于图像信号的处理,我们先从需求上去探讨。 前文说过了,传感器一般为马赛克结
构,阵列输出的信号,在每个像素上都只是单色的,需要用相邻像素的色彩去猜测本像素的其他色彩。 这个由
传感器直接输出的,每个像素只有单色信息的数据,叫做Raw RGB数据。 而DSP的目的,就是把Raw RGB数据,
去通过计算和后期加工,变成真正的RGB或YUV格式的数据。 简而言之,DSP的主要工作,就是把Raw RGB格式
转换成RGB格式或者是YUV格式。
介绍一下各种颜色的数据格式吧。
1. RGB数据: 通用数据格式,因为理论上任何颜色都可以用红绿蓝三种基本颜色混合而成,所以RGB格式的
一个数据位由RGB(红绿蓝)三种颜色的比特位组来表示。
RGB格式有RGB565,RGB24,ARGB32等几种标准。 大家都知道,数据传输中,一个字节是8个比特
RGB565:共16比特,占两个字节。 其中5个比特表示R,6个比特表示G,剩下来5个比特表示B,所以一
共可以表示的颜色数为2^16 = 65536色, 其中红色R和蓝色B可表示为32种不同值,而绿色G可以表示为64
种不同;
RGB24:共24比特,占三个字节。 其中RGB三种颜色各种8个比特位, 所以一共可以表示的颜色数
为2^24 = 1677万色,每种颜色可表示成256种不同值;
ARGB32:共32比特,占四个字节。 其中RGB三种颜色各占8比特,剩下来8比特表示Alpha通道值,
所以一共可以表示的颜色数为2^24 = 1677万色,每种颜色可表示成256种不同值。 但是因为加了Alpha值,
所以每种颜色还可以另外显示为256种不同的透明度; 好,说到这里,大家知道了屏幕参数中6万5千色,
26万色,1670万色是怎么来的了吧?
另外RGB颜色在寄存器中的比特位顺序是BGR,所以写驱动时,定义的话是这么定义的:
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 蓝色分量
BYTE rgbtGreen; // 绿色分量
BYTE rgbtRed; // 红色分量
} RGBTRIPLE;
2. YUV数据: 说白了就是色差分量。大家的电视机上都有色差端口吧?色差端口传输的数据格式就是
YUV422。 YUV中,Y表示亮度信号,U和V表示色差信号。以前的黑白电视,是只有Y信号而没有UV信号,
所以只能表示灰度而不能表示色彩。 YUV数据和标准RGB数据互相转换公式:
Y = 0.299R + 0.587G + 0.114B
U = 0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
3. Raw-RGB数据:前文所说,马赛克结构的CCD/CMOS,其感受光线后输出的原始数据只有灰度数据,
因为滤光层关系每个灰度数据只表示一种颜色的强度,所以Raw-RGB数据就是传感器输出的原始图像数据,
其中的颜色信息是不完整的,不通过计算插值出其他颜色信息的话,是还原不出完整图像的。
了解了图像处理的目的之后,我们来看看DSP的简单框图。下面一步步的来拆分。
1.图像传感器部分:前面已经说过了,没记住的把鼠标往上面滚动,慢慢看。ASP/AFE就是感光阵列的辅助
电路,控制信号抽样,感光时间长短(也就是曝光)等功能,跟模拟信号的处理相关。A/D部分前文也有说明,
所以这部分带过。 最后一点最重要:图像传感器输出的就是Raw RGB原始数据。
2.DSP部分:基本上信号处理模块中,90%的功能由ISP完成。ISP是什么?Image Signal Processing,
图像信号处理。 故名思忆就是处理图像的。ISP将由Sensor输出的原始信号处理成通用的成像数据,这些处
理过的成像数据可以直接被AP处理器或者基带芯片来使用,至于这些通用的图像格式数据,是再处理还是显
示还是保存,这就看应用需求了。
二 Pre-ISP 大家辛辛苦苦工作了一年了,准备带着家人去普吉岛度个假。难得出国嘛,总觉得不带个好点
儿的相机会有遗憾。于是赶早儿带着女儿去摄影城买相机去了。 到了摄影城门口有人发传单,起手接过一张,
佳能小马四,双Digic高速数字图像处理引擎,倍儿牛逼。 没走两步又有人塞了张传单,索尼A77,双Bionz
图像处理引擎,忒专业了。 于是您女儿就好奇了,拽着您的衣角问起来了,把拔把拔,这个图像处理引擎,
四什么东东啊?好吃吗? 回答不出来吗?不能在自己可爱的女儿面前丢脸啊。大丈夫萌大乃! 客官儿,
给您沏一壶茶,您坐着,一边品茶一边听我慢慢的道来。
目前市面上的相机厂商都有自己的图像处理引擎,其实就是一块封装了ISP以及其他功能的芯片。这块芯片
的主要作用,其实就是处理原始图像数据(Raw-RGB)。 首先啊,咱们说说这Pre-ISP,哎?您问我什么是
Pre-ISP? 嘿,敢情客官您眼力好啊,问我那算是问对人儿了。 Pre-ISP部分称之为前端影像处理,是把
原始图像数据处理为通用图像数据的最关键的一个部分,没有之一。各家的图像处理引擎中,最核心的也就
是这个Pre-ISP的部分,对应着不同的图像数据的转换和处理方式。 其实说白了Pre-ISP就是一个调整图像
的过程(PS的过程)。这个和你在电脑上用Photoshop或者光影魔术手去给你的图像拉曲线,调色调等是一样
的过程。 只不过ISP是直接处理Raw-RGB数据的,这个原始数据虽然是不完整的RGB颜色数据,但是没有失真
和画质损耗,处理Raw-RGB数据,所带来的画质损失是最小的。 而经过Pre-ISP处理过的数据,即RGB或者
YUV数据,虽然有了完整的颜色信息,但是画质已经有了一定的损耗。如果再把这个RGB或YUV数据编码压缩
成JPG格式,画面细节的损耗就更大了。 而我们一般是直接使用出片的JPG文件去更进一步的处理,在手机上
或者导出到电脑上进一步修改,这就是第三次对画质进行了损坏。 图像数据在各个处理流程中的画质损耗见
下图。
所以,现在很多相机都具备直接输出原始的Raw-RGB数据的能力,也就是所谓的RAW片。直接用专用的
工具打开这个RAW片,在电脑上进行加工,以减少处理中画质的损耗。这个过程其实就是摒弃了相机内
置的ISP过程,而直接自己处理原始格式。嗯,高手都这么做,高手都是鄙视直出JPG的“伪”射影师的,
我就在无忌上被鄙视过……千万别招惹那些摄影高手,他们会用他们丰富的经验在精神上推倒你,而且绝
对不肯准备杜蕾丝的。 关于RAW片为什么处理起来对画质损失最小,我再引用其他人的一段文字吧:
1. RAW文件没有白平衡设置,可以任意的调整色温和白平衡来进行创造性的制作,而不会造成图像质
量损失。
2. 可以转化成16位的图像,也就是有65536个灰度层次可以被调整,这对于JPG文件来说是一个很大
的优势。当需要对阴影区或高光区进行细致调整的时候,这一点非常重要。
OK,再来说说Pre-ISP的重要性。 Pre-ISP是对原始图像格式的第一次处理,这是非常重要的一次处理,
可以说是直接修改和优化了图像的内容,也就是直接决定了这个相机或手机的出片能力。 而Pre-ISP之
后的处理,比如转换为TIFF或者JPG等,都不会对图像的内容进行修改,只是在转换过程中会产生一点
画质的损失。
Pre-ISP所做的工作没有一个固定的流程,因为每个厂商都有各自不同的处理流程和风格,所以带入进
相机,体现出来的就是各家都有显著不同的成像风格, 佳能“媚”,尼康“锐”,宾得“惹人醉”等说法,
说的就是这个,当然,不同的成像风格和所使用的镜头也有很大的关系。 不过不管是什么Pre-ISP,一
定有色彩插值的过程。也就是把Raw-RGB中缺失的颜色通过一定的算法给算出来的过程。 如果你是直接
输出Raw片,那么在电脑上用软件打开Raw片时,软件已经做了色彩插值的计算处理了。(否则怎么能看
到图像呢..) 我这里给出一个一般的ISP都有的前端处理动作:
1. Black Level Calibration(暗电流校正) 这个过程一般集成在sensor中,但是严格来说也属
于ISP的一部分。 感光二极管,在没有光线照射时,释放电流应该为0吧?很可惜这只是理想状态。这
些无受光情况下释放的电流值称之为Black Level暗电流,是噪音,需要去校正后保存进寄存器里面,
作为补正系数。以后在光照情况下,才能将二极管的输出电流相应的进行加减补正。
2. Lens shading(镜头黑点校正) 小通光口径镜头比较严重的毛病,成像圈的外围进光量不足,
所以图像四周有暗角。 所以要预先提高亮度把这个问题处理掉。
3. Black Point Compensation(黑点补偿) 通过扫描每个像素及其四周像素的颜色和灰度数据,
侦测出纯黑的点,进行插值计算出合理的颜色及其灰度值覆盖它。
4. 平滑锐化 平滑+锐化,皮肤要平滑白皙,眼神要锐利凶狠化,这就是傲娇娘的基本属性。
5. 色彩插值 这个就是前面所说的,基于马赛克sensor的ISP一定会有的步骤,把原始图像数据中
每个像素缺失的颜色给计算出来,算法很复杂哦,以后再说吧。
6. Gamma校正:就是对图像的伽马曲线进行编辑,以对图像进行非线性色调编辑的方法,检出图像信
号中的深色部分和浅色部分,并使两者比例增大,从而提高图像对比度效果。http://www.docin.com/p-69816832.html
7. AE自动曝光补偿:通俗一点讲,就是为了画面的明暗度和细节、层次更加丰富,适当地加、减曝
光量。
8. AWB自动白平衡补偿:就是无论环境光线如何,仍然把"白"定义为"白"的一种功能,这样可以保
证色彩还原的准确性。
9. Color Matrix:对图像进行颜色方面的处理,通过使用颜色矩阵(ColorMatrix)来实现。从
而可以达到很多特效如黑白老照片、泛黄旧照片等等,
http://developer.Android.com/reference/android/graphics/ColorMatrix.html。
10. 饱和度/对比度/亮度调节 不知道的看Photoshop帮助文件去。
下图是一个CCD摄像头模块中,关于ISP的框图。可以看到Pre-ISP的流程为: 坏点侦测
(黑点白点)->基色白平衡转换->Gamma值补偿->色彩插值->色彩修正->色域转换->将RGB444转换
为YUV422格式输出。
至于其他ISP的处理流程,可以参见各个camera模组的datasheet。 总之,Pre-ISP就是机器内部,
对于Raw-RGB原始格式的一个PS过程。你这么理解就对了。
三 Post-ISP 在ISP的框架中,Pre-ISP已经对原始图像数据进行过处理了,那Post-ISP是干嘛的呢?
Post-ISP,即后端影像处理,其实就是做做后勤工作的,并不是上前线直接作战的。Post-ISP对于图
像的直接影响并不多,它主要负责数据压缩及后端接口界面等,还包括数据传输和控制等工作。
如上图,红色框内的控制模块就可以视为Post-ISP。 Post-ISP的作用繁杂,主要还是体现在控制上。
控制什么?当然是控制拍照时相关的电路工作状态啊。
基本的控制项目:
1. 自动曝光控制(光圈+快门控制)
2. 自动白平衡控制
3. 闪烁控制(对应工频干扰)
4. 闪光灯控制,连拍控制,视频摄录控制
5. 自动聚焦控制
6. 变焦控制
7. 等等等等
我们来挑选大家比较关心的说说。
Post-ISP控制项目之一 曝光控制(光圈+快门控制) 传感器中,感光二极管加电工作的时间,就是
曝光时间,也就是所谓的快门时间。 当传感器如果不加电,即使有光照射到表面,也感光二极管也
不会工作。 Sensor的曝光方式有几种,全帧曝光和逐行曝光等。
全帧曝光:Sensor通电后,所有的感光二极管是同时开始工作的,你只要控制Sensor加电时间的
长短,就能控制曝光时间了。CCD传感器因为原理的关系,只能全帧曝光。
逐行曝光:Sensor通电后,感光二极管是一行一行开始工作的,你必须控制是哪一行曝光,然后计
算总的曝光时间。
下面贴一段控制逐行曝光的驱动代码,以说明快门控制的过程。(camera模组是美光的)
函数解释: PVOID IIC_Write16bit(WORD addr, DWORD value)
[函数功能] 写寄存器
[参数] addr:寄存器地址;
value:要写入到寄存器对应地址的值
[函数返回] NULL
DWORD IIC_Read16bit(WORD addr)
[函数功能] 读寄存器
[参数] addr:要读出的寄存器地址
[函数返回] 从对应寄存器地址读出的值
PWOID WaitTime_ms(DWORD waittime)
[函数功能] 字面意思,等待
[参数] waittime:等待时间,单位毫秒
[函数返回] NULL
寄存器地址解释:
0x09: 存储曝光时间值
0xf0: 存储预置动作值
0xc8: 存储快门状态值
IIC_Write16bit(0xf0, 0x0000);
dataTemp = IIC_Read16bit(0x09); //读取曝光时间值
gCurbrightness1 = dataTemp; //快门时间存入变量,后续做处理
WaitTime_ms(10);
IIC_Write16bit(0x09, dataTemp*2/7); //写入新曝光时间值为原来的2/7
IIC_Write16bit(0xf0, 0x0001); //将所有要新写入的寄存器地址预置为1
IIC_Write16bit(0xc6, 0x2225);
dataTemp = IIC_Read16bit(0xc8); //读取快门状态
gCurbrightness2 = dataTemp; //快门状态存入变量,后续做判断处理
WaitTime_ms(10);
IIC_Write16bit(0xf0, 0x0000); //将所有要新写入的寄存器地址预置为1
IIC_Write16bit(0x65, 0xB000); // CLOCK_ENABLING
IIC_Write16bit(0x65, 0xE000); // CLOCK_ENABLING
WaitTime_ms(600); // Wait 1 frame time
以上就是驱动控制快门状态的简单案例。实际中比较复杂一点的camera模组,是不会这样去直接控
制快门时间长短的。Post-ISP已经内置了测光模式和光圈控制的过程,需要调试的就是一组辅助系
数而已。
一个camera的驱动中,快门调试往往是最繁琐的,需要大工作量的去调试代码。快门控制关系到最
CCD/CMOS最基本的保存光线数据的正确性,即原始图像数据的素质。如果连最基本的感光都做不到正
确,还谈什么图像处理呢?原始图像数据就是一堆没法还原的垃圾了,谁也不能把它变成黄金啊。
另外的,像测光控制,因为手机的camera没有独立的测光元件和被测光路,所以都是直接用CMOS/CCD
来测光的,然后再Post-ISP中调整快门+光圈+ISO的组合。用CMOS/CCD来测光,优点是可以自由选择
测光点,不需要额外的测光系统,成本低,缺点是测光速度较慢,复杂光线下测光不准确等。
Post-ISP控制项目之二 对焦控制
大家都知道,如果摄像头素质高一点的话,一般都会带有AF功能。AF=Auto Focus,自动对焦功能。
而Post-ISP可以控制VCM(音圈对焦马达)模块的状态,即实现了对焦点的控制。 关于自动对焦,这
又是一门非常精深的学问了,发展了几十年,衍生出了数百种对焦的技术。目前相机厂家的对焦方式
还不尽相同。我不太了解这么精深的学问,那么,我们就来说浅显一点的吧。 目前常见自动对焦的类
型分为相位检测自动对焦和反差式自动对焦两种原理,另外富士等公司也开发出大规模应用的新对焦技术了。
相位检测自动对焦: 多单反和高端DC采用。相位检测对焦,要在相机内部另外加一个线性传感器
(只用来对焦)和分离镜头。当开始对焦时,光线首先被反光板反射到分离镜头上,这时候主CCD/CMOS
是不工作的,而线性传感器是工作的。分离镜头会把光线分为两束,这两速光线经分离镜头后会重新
投射到线性传感器上,如果焦点是对准的,那两束光线会聚集到线性传感器表平面,则线性传感器的
感光二极管受到的光强最强。以此来做对焦的检测和预测。
相位检测自动对焦的优点是快速,焦点准确。缺点是焦点需要经电路设计实现,不可触摸对焦,
而且实现复杂,暗光线下难以合焦(拉风箱)。
贴一段无忌的原话,来描述相位检测自动对焦的过程:
调焦准确时见图中(a),我们用AB来表示作为基准的一对CCD元件之间的距离。
当调焦不准时,有两种可能性。一种是镜头焦点在被摄体之前,见图中 (b)。此时受光的两只CCD元件
之间的距离短于AB;另一种情况是镜头焦点在被摄体之后,见图中(c),此时受光的两只CCD元件之间的
距离长于AB, 根据受光的一对CCD元件之间的距离,就能鉴别出焦点是否准确。
两只CCD元件所产生的电信号经过转换电路和模拟/数字转换电路,再送入照相机内的 CPU(中央处理单元)
,CPU按照厂家所设定的程序及根据这对CCD元件的距离与AB的差值,可计算出散焦量(即实际焦点与准
确焦点之差)以及散焦方向。
反差式自动对焦:多手机和卡片DC采用。就是传感器通电开始工作,不断的把画面通过DSP转换后传给
Post-ISP,Post-ISP就开始对不断的进行画面分析和比较了,控制对焦镜片来回移动,当检测到最佳的
反差时停止移动镜片。
优点是结构简单,焦点自由选择,可改善余地大;缺点是对焦镜片需要来回移动(拉风箱),速度慢,
费电,焦点不准确。
于是,我们知道了,相位检测自动对焦和反差自动对焦的优缺点。 手机和卡片DC,受限于体积大小
和结构需要简化等因素,所以不会采用相位检测对焦。虽然这样的自动对焦准确性会降低,但也带来
了体积简化成本降低的好处,而且因为手机的摄像头一般不会有长焦端,所以对焦点精度的要求并不
需要那么高。 而且对焦技术还在不停的发展,未来如果出现了兼顾体积和精度的对焦技术,说不定很
快就会产业化,我们拭目以待吧。 关于Post-ISP其他的功能,对于并没有对图像进行直接处理,而
多和电路设计,ID设计有关,这里就略过不提了。
Camera结构三 光学镜头(Lens)
说到重点来了,可惜这个重点咱们要简短的说,因为我对于光学,实在是苦手一名。 相对于传感
器和DSP的飞速发展,光学技术的发展已经相当成熟。 一家以消费电子为研发主体的企业,想要转型为
专业相机研发企业,是非常困难的,如果不通过收购或者技术购买,想要开发出自己的光学系统,无疑
可能性非常的小。 这也就是光学技术的壁垒过高,长期的技术和经验累积,对于光学公司来说是非常
重要的。 你看,那些玩摄影的发烧友人,一般都会投入几倍甚至十倍与机身的金钱,去升级自己的镜
头群。而数万块天朝币的镜头比比皆是,甚至是一些玩家的标配头,挂机头。足以见光学素质,对于成
像的重要性。 光学特性对于一个相机或者手机来说,完全体现于镜头的光学素质。 而相比传感器来说,
光学特性对于画质,完全是覆盖级别的关系。成像所需的方方面面点点滴滴,光学特性的好坏对其都会
有直接影响。 然而因为过于博大和精深,我们这里不可能从透镜成像开始说起,也不可能一一介绍弥
散圆,像差,锐利判定等概念,当然后面涉及的信号与系统,什么Nyquist采样定理就更无从谈起了。
当然,关于镜头的镜片数目和结构,以及镜片研磨,材料选用,透光率等,也就不说了,因为展开来说,
对于消费者的认知也没多大帮助。 咱们就从功能粗浅的说说,然后再粗浅的说说的镜头对画质影响,
反正咱就是个粗浅的大老爷们儿。
一 功能性
镜头的规格最大程度的影响拍照的功能,以下说明可以去各大摄影论坛找教学贴来科普一下。
1. 焦段覆盖 焦段覆盖直接影响你的疲劳程度,也就是得走多少路。定焦么就是所谓 的变焦基本
靠走。 拍风景少不了广角,拍野生动物少不了长焦。 否则风光摄影师可能会因为走远一点而跌入悬崖,
而动物摄影师可能会因为走近一点被狮子吃了。 以上结论:焦段影响性命……
2. 焦点 焦点直接影响视野角度,景深和透视感。 广角端入射角度大,光线强度高,景深大,透视
感强。 长焦端入射角度小,光线强度低,景深小,透视感弱。
3. 放大倍率,物距,最近对焦距离 简而言之影响微距效果。
4. 光圈 光圈直接影响曝光和景深,也就是影响快门时间和透视感。 有大光圈你可以提高快门时间,
减少手抖动带来的画面模糊,或者高ISO带来的画面噪点。
5. 特殊功能的实现 比如鱼眼镜头,移轴镜头,柔焦镜头等,实现特殊的画面效果。 这些特殊效果也
可以用后期处理来实现,不过处理带来的画质损失以及不自然感就看你自己选择了。能用前端的光学性能
达到的效果,就尽量不要用后期处理。
二 MTF与画质
说到这里,我来问问大家,画质的评判标准是什么? 画面细节?画面纯净度?色彩还原? 呵呵,
其实,这些都可以用解像力来概括,或者被解像力间接的影响到。 解像力简单的说就是量度、计算影像
从清晰->模糊之间的转换点(通俗点称之为分辨率)。每一个镜头都有其分辨能力的极限,比如一个光学
分辨率为500万像素的镜头,你在它的成像圈内放一个1000万像素的CMOS传感器,那你是白瞎了这块CMOS了。
简而言之嘛,镜头画质大部分和分辨率和反差有关。而MTF曲线,就是衡量一款镜头的分辨率和反差的曲线。
下面我们就来说说MTF(Modulation Transfer Function),中文名称为调制传递函数。 首先快速介绍一
些概念: 正弦光栅:亮度按正弦变化的周期图形叫做“正弦光栅”;
空间频率:单位长度(每毫米)的亮度按照正弦变化的图形的周期数,单位是线对/毫米(lines/mm);
最大亮度:设为Imax 最小亮度:设为Imin 调制度:M=(Imax-Imin)/(Imax+Imin)
MTF值:设正弦光栅原本的调制度为M,而正弦光栅透过镜头后,到达成像平面的图像的调制度为M’,
则MTF值= M’/M 所以,MTF的值越接近1,镜头成像素质越好(光线通过镜头后解像力完全不变);
S曲线和M曲线:镜头是光中心轴的中心圆形对称结构,像场中心各个方向的MTF值是相同的。
但是镜头有散性,在偏离中心的位置,沿切线方向的线条与沿径向方向的线条的MTF值是不同的!
S曲线:平行于直径的线条产生的MTF曲线称为弧矢曲线,标为S (sagittal);
M曲线:而将平行于切线的线条产生的MTF曲线称为子午曲线,标为M(meridional)。
空间频率很低时,MTF值趋于一个接近于1,即镜头对大尺寸色块的反差。随着空间频率增高,
MTF值逐渐下降,直到趋于0。肉眼分辨的反差极限是MTF = 0.03。 好,下面我们看看一张MTF图。
怎么样,看懂了吗? 图中共八条线,黑色线是在最大光圈下测试的镜头MTF曲线,蓝色线是在F8.0光圈
下车时的镜头MTF曲线。 粗线是用10线对/毫米的正弦光栅图测试的MTF曲线,细线是用30线对/毫米的
正弦光栅测试的MTF曲线。 实线是S曲线,虚线是M曲线。 可以看出:
1.越密集的正弦光栅,MTF值越小,解析力越差。
2.F8的小光圈,显然比最大光圈的解析力要好。
3.S曲线和M曲线并不重合,怎么镜头的子午和弧矢方向上,解析力并不相同。
借贴一段解译MTF值的原话:
反差/明锐度:5(或10)lines/mm的读数反映镜头的反差表现.即使微小的差别(2.5%)也能在画面中
体现出来! 你可以把它看作一种最基本的"锐度".一枚好的镜头在光圈收小后应该在5 lines/mm下径向
和切向同时高于95% .低于90%即表明镜头表现不佳.一枚明锐度好而锐度差的镜头通常比明锐度差而锐
度高的镜头看上去更锐利!不过,锐度和明锐度两项指标通常相辅相成.
锐度:10至40(或更高) lines/mm表明一枚镜头的锐度——即再现细节的能力.40lp/mm表明镜头再现
物体非常细微细节(如人像摄影中的头发丝)的能力.此时即使MTF值的差距较大(如10%)也无法直接在画
面中辨认出来.按照人眼的辨别力和35mm胶卷的片幅,如果要得到质量非常理想的7英寸的照片,镜头20
lines/mm下的MTF值必须大于50%.而要想在16英寸下仍有非常理想的画面质量,其70 lines/mm下的MTF值
竟须超过63%!几乎没有镜头可以达到这样好的表现! 怎么样?大家对镜头的画质有初步了解了吗?
以后别人跟你吹嘘自己的镜头有多牛逼时,你可以冲着他大吼:你丫给我上MTF,让我看看到底有多牛!!
二 拍摄功能相关的配置
什么是配置? 就是我把东西配好,放置在这里,你爱用不用。 你用或不用,它就在那里,不增不减。
可不可以有一些配置,让我泪流满面? …… 不小心豆瓣了一把,大家可以跟我一起来文艺一下。 其实拍
照相关的配置,之于手机来说,无非就是Flash闪光灯+各种操控按键。 其他的比如什么光学取景器,热靴,
外闪环闪,脚架云台,在手机上都是不适合的。 谁也不会给自己的手机配个乐摄宝的摄影包,里面踹几
块砖头,背着出去冒充摄影师踏青吧。摄影师都喜欢黑粗大的相机,最好接一个竖拍手柄,再接一个黑
粗长的牛头,再挂着个牛逼闪闪的外闪,特专业的感觉。相机调到连拍,甭管看到什么,上去就是频闪
打机关枪,射对方一脸再说…… 扯远了。那么,咱们就手机可能的机体配置来说说吧。
一:闪光灯
手机用闪光灯一般有两种,大多数使用白光LED,少部分使用氙气闪光灯管。 大家知道,如果环境光
线很暗,你为了拍照需要补光的话,光一定不能是红橙黄绿蓝靛紫这种非主流喜爱的颜色,因为会降低补
光亮度,以及严重影响白平衡。 这就是为什么拍照用LED都是白光LED的原因。 白光LED有很多特性优于
氙气闪光灯管,比如更低的功耗,驱动电路设计简单,不需要充电电容,EMI干扰性小,频闪速度快等。
不过氙气闪光灯的高亮度和宽照明角度,就完全击败白光LED了。 所以,虽然成本以及设计复杂度来说,
氙气闪光灯完败于白光LED,不过对于追求拍照功能的手机来说,氙气闪光灯还是首选。 以下是白光LED
和氙气闪光灯的一些特性对比:
二:操控按键
其实对于拍照按键来说,这是个贱人贱智的主观评价。 对于竖拍,单手直接在屏幕上操控比较容易,
所以只一个触屏也可以胜任。这时候对辅助的操控按键要求就比较低。 对于横拍,人如果将手机横过来
拍照,一般都是正儿八经的拍照,这时候对于抖动以及对焦的要求就比较高,一个专用的快门按键就显得
比较重要。 两段式的侧边快门按键,在横拍时,对于对焦和构图起到非常大的辅助,也由于食指可以搭
在侧边上,对于握持的稳定性来说,也有帮助
其他的,像什么模式转盘,WR拨杆,十字按键,焦点锁定按键,AE按键,预览按键什么的,就见鬼去吧。
手机还要用来上网看电影玩游戏呢,而不仅仅是拍照,不可能为了这些按键而缩小屏幕面积或者增大机身
体积的,那是得不偿失的事情。
三:取景器
说到取景器,手机当然就是屏幕啦。 一个好的屏幕,对于拍照时的快感不言而喻啊。大家对于iPhone4
的拍照赞誉中,有一些成分是源于对取景时画面以及流畅度的赞誉,而这功劳当然首先归功于那块IPS的
Retina显示屏,其次归功于camera ISP算法对于流畅取景的贡献。 不过对于LCM,其实也没什么多说的,
这里展开估计会引来吵架了,引来IPS流AMOLED流ASV流OLED流之间的争执,所以,我们略过这里吧。