导读: 一、摄像头模块CCM 二、摄像头工作原理 一、摄像头模块(CCM) 1、camera特写 摄像头模块,Camera Compact Module,简写为CCM,它是影响捕获的重要组成部分。我的理解是硬件 上摄像头。如下图所示:

2.摄像头内部分解 相机硬件结构图:
(1) 、工作原理 光通过镜头Lens进入摄像头,然后经过IR Filter过滤红外光,最后到达sensor(传感器), senor根据材料可分为CMOS和CCD两种,可以将光学信号转换为电信号,再通过内部的ADC电路转换 传输到数字信号DSP(如果有,若没有,则以DVP将数据传输到基带芯片baseband,此时 的数据格式Raw Data,后面是关于加工的)加工处理,转化为RGB、YUV等格式输出。 (2) 、镜头 Lens 镜头是相机的灵魂,单反中一个镜头上万是很随意的事。 (2) 、镜头 Lens 镜头是相机的灵魂,单反中有成千上万的镜头是非常随意的。镜头在成像中起着非常重要的作用,相当于在人们眼中 晶状体,利用镜的折射原理,通过镜头在聚焦平面上形成清晰的图像,然后通过感光材料CMOS 或CCD通过电路记录图像并转换为电信号。镜头行业技术门槛较高,国外主要集中在日韩, 中国主要在台湾省,富士精机、柯尼卡美能达、大力光等行业比较有名Enplas等。 Lens透镜结构一般由几个透镜组成,根据材料可分为塑料透镜(plastic)或玻璃透镜(glass),玻璃镜 片片比树脂镜片贵。塑胶透镜其实是树脂镜片,透光率和感光性等光学指标比不上镀膜镜片。 通常相机使用的镜头结构有:1P、2P、1G1P、1G2P、2G2P、2G3P、4G、5G等。透镜越多,成本越高, 相对成像效果会更出色(个人理解是光线更均匀、更细致;对光线的选通更丰富;成像畸变更小,但是会 镜头变长,光通量变小)。
(3)红外滤光片 IR Filter 主要是过滤掉进入镜头的红外光,因为人眼看不到红外光,但是sensor却能感受到 红外光需要过滤掉光线中的红外光,使图像更接近人眼看到的效果。 (4),传感器 Sensor sensor是摄像 头的核心,负责通过Lens光信号转换为电信号,然后通过内部AD转换为数字信号。 每个pixel只能感觉到像素点R、G、B其中一个存储在每个像素点中的数据是单色光,所以我们通常 30万像素或130万像素表示30万或130万感光点,每个感光点只能感应一种光 我们称之为最原始的感光数据RAW Data。Raw Data数据要经过ISP(应理解为Image Sensor Processor, 是Sensor模块的组成部分,下面有解释)可以恢复三原色,也就是说,如果像素点感应为R值, 那么ISP根据感光点周围的情况G、BR点的值通过插值和特效处理计算G、B值,这样该点的 RGB除此之外,还原了,ISP还有很多操作,下面是介绍。 目前常用的sensor有两种,一种是CCD(电荷耦合)原件CMOS(金属氧化物导体)原件。 目前常用的sensor有两种,一种是CCD(电荷耦合)原件CMOS(金属氧化物导体)原件。 >>CCD(Charge Coupled Device),电荷耦合器件传感器:由高感光度的半导体材料制成, 通过模数转换器芯片将光转换成电荷,将光转换成电信号。CCD它由许多独立的感光单位组成,通常是数百万 以像素为单位。当CCD当表面受到光照时,每个感光单元都会在组件上反映电荷,所有感光单元产生的信号 加在一起,形成完整的图像。CCD以日本厂商为主导的传感器90%被日本厂商垄断, 索尼、松下、夏普是龙头。 >>CMOS(Complementary Metal-Oxide Semiconductor),互补氧化金属半导体:主要用途 硅和锗制成的半导体使其在CMOS上共存着带N(-)和P( )这两种互补效应产生的电流可以是级半导体 被处理芯片记录并解释为图像。CMOS传感器主要由美国、韩国和中国台湾主导,主要制造商是美国 OmnVison、Agilent、Micron,中国台湾的锐像、原相、泰视等,韩国的三星和现代。 (5)图像处理芯片 DSP DSP是CCM其作用是及时、快速地将感光芯片获得的数据传输到中央处理器,刷新 因此,感光芯片DSP芯片质量直接影响画面质量,如色彩饱和度、清晰度、流畅度等。如果sensor 没有集成DSP,则通过DVP传输方式baseband芯片(可以理解为插件)DSP),进入DSP的数据是 RAW Data,收集到的原始数据。如果集成了DSP,则RAW Data会经过AWB、color matrix、lens shading、 gamma、sharpness、AE和de-noise处理,最终输出YUV或者RGB格式数据。如下图所示,ISP(Image Sensor Processor,不是Image Signal Processor)部分中使用的就是DSP来处理Image sensor的输出数据 (Raw Data):
DSP结构框架: >>ISP(Image Signal Processor),或图像信号处理器 >>JPEG encoder,JPEG图像编码器可分为软件和硬件。 (6)、DVP DVP分为三部分:输出总线;输入总线;电源总线;如下图所示:
>>输入总线介绍 a>PWDN是camera使能管脚有两种配置方式,一种是standby,一种是normal work,设置为 standby一切都对camera包括复位在内的复位。所以在RESET以前,一定要把PWDN管脚 设置为normal模式,否则RESET无效。 b>RESET是camera该方法为硬复位模式,camera的各个IO口腔恢复到默认出厂状态。 只有在XCLK开启后,将RESET硬复位是低的,否则复位是无效的。 c>XCLK是camera工作时钟管脚,这个管脚是BB提供camera工作时钟。 d>IIC是camera和BB通信总线通道。 >>介绍输出总线 a>data为camera数据管脚。该数据脚的输出格式有YUV、RGB、JPEG等。 b>VSYNC为camera帧同步信号管脚。一个VYSNC信号结束表示输出了一帧(即一张图片)的数据。 c>HSYNC为camera行同步信号管脚。一个HSYNC信号结束意味着一行数据已经输出。 d>PCLK同步信号管脚的像素。一个PCLK信号结束意味着像素点的数据已经输出。 >>Power线介绍 a>AVDD为camera模拟电压。 b>DOVDD为camera的GPIO口数字电压。 c>DVDD为camera核工作电压。 一般来说,要求先提供sensor的GPIO口压,然后提供模拟电压,最后提供工作电压。时序如下图所示:
(7)、FPC柔性电路板(柔性PCB) 简称"软板", 又称"柔性线路板",连接芯片和手机。起到电信号传输的作用。 (8)、ISP、DSP、基带芯片的差异和联系 这里有几篇文章中出现的术语的特别补充。 >>常见的基带处理器或基带芯片负责数据处理和存储,相当于一个 协处理器的主要部件是DSP、 微控制器,内存(如SRAM、Flash)其他单元的主要功能是基带编码/译码、声音编码和语音编码 等。 主流基带架构: DSP ARM。可分为五个子块:CPU处理器、信道编码器、DSP、调制解调器和接口模块。 基带芯片用于合成即将发射的基带信号,或解码接收到的基带信号。具体地说,就是: 发射时,将音频信号编译成用于发射的基带码;接收时,将收到的基带码解译成音频信号。同时,也负 编译地址信息(手机号、网站地址)、文字信息(短信文字、网站文字)、图片信息。 >>ISP,Image Signal Processor,图像信号处理器;DSP,Data Signal Processor,数字 信号处理器。 ISP一般用于处理Image Sensor例如:AEC(自动曝光控制), AGC(自动增益控制),AWB(自动白平衡),色彩校正,Gamma校正,消除坏点,Auto Black Level、 Auto White Level 等功能处理。 >>而DSP有很多功能。它可以拍照和显示。(JPEG编解码)、视频和回放(Video 的 编解码)、H.编解码264,还有很多其他方面的处理,总之是处理数字信号。可以认为ISP是一类特殊 的处理图像信号的DSP。 在本文中,基带芯片可作为开发板上的控制芯片,ISP和DSP可以平等,都是对的Raw Data进行 处理。这里尊重原作者的说法并不统一。 还需要注意的是,在摄像头这部分,要看清楚ISP是的Image Signal Processor(图像 或者Image Sensor Processor(图像传感器处理器)。像上面的OV2665里面的ISP就是 Image Sensor Processor,相当于Sensor模块的一部分,由DSP做处理器。而下面的GC0308,则正好 相反,是Image Signal Processor,它是一个真正的处理器,所以当你看到它时ISP根据语境看是指 一个特定的处理器或模块的组成部分,而不是。
3、CCM组装方式 (1)、定焦CCM组装 CCM分为定焦模块和自动变焦模块,主要由镜头、镜座、感光集成电路、软线板组成, 装配图如下:
(2)、自动变焦模组组装
主要是镜头下面装了一个VCM音圈马达
(3)、3D模组
多台摄像头拍摄图像,然后组合:
4、摄像头的一些技术指标
(1)、图像解析度/分辨率(resolution)
QSIF/QQVGA 160 x 120 19200
QCIF 176 x 144 25344
SIF/QVGA 320 x 240 76800
CIF 352 x 288 101376 10万像素
VGA 640 x 480 307200 30万像素(35万是指648X488)
SVGA 800 x 600 480000 50万像素
XGA 1024 x 768 786438 80万像素
SXGA 1280 x 1024 1310720 130万像素
UXGA 1600 x 1200 1920000 200万像素
QXGA 2048 x 1536 3145728 300万像素(320W)
QSXGA 2592 x 1944 5038848 500万像素
2816 x 2112 2947392 600万像素
3072 x 2304 7077888 700万像素
3200 x 2400 7680000 770万像素
3264 x 2448 7990272 800万像素
3876 x 2584 10015584 1000万像素
(2)、sensor输出的图像格式
>>YUV:luma(Y)+chroma(UV)格式(亮度、色度),一般情况下sensor支持YUV422格式,
即Y-U-Y-V次序输出数据。
>>RGB:传统的红绿蓝格式,比如RGB565,5bit R + 6bit G + 5bit B,G多一位是因为人
眼对绿色比较敏感。
>>RAW RGB:sensor的每一像素对应一个彩色滤光片,滤光片按Bayer Pattern(拜耳模板)分布,
将每一个像素的数据直接输出,即Raw RGB Data。
>>JPEG:有些sensor,特别是低分辨率的,其自带JPEG engine,可以直接输出压缩后的jpg格
式的数据。
注意:
a>YUV一个像素占2B,如果像素太大,在高时钟下基带芯片处理不过来,JPEG数据量就要小很多,
因为基带芯片对输出数据的速率有要求,所以基带芯片低时钟下使用YUV sensor,高时钟下使用JPEG sensor。
b>如果直接输出RGB,对于LCD显示是最方便的,但是大多数基带芯片都是要求输出为YUV格式的
数据再进行,这是因为,YUV输出数据的亮度信号没有任何损失,而色偏信号人眼并不是特别敏感,
RGB565输出格式是R5G3 G3B5,会丢失很多原始信息,所以YUV图像质量和稳定性要比RGB565好的多。
因此,很低端的基带芯片上才会输出RGB565格式。
Raw和JPEG的区别:
Raw优点:
1>Raw格式文件本质上是一个没有经过任何图像处理的源文件,它能原原本本地记录相机拍摄的
信息,没有经过图像处理(锐化、色彩对比增强)和压缩而造成的信息丢失。相比之下,JPEG格式的
数据经过压缩处理,无法完整的保存原图形的所有数据。
2>Raw是一种专业摄影师常用的格式,因为它能原原本本地保存信息,让用户能大幅度进行后期
制作,并且无论怎么操作,照片都能无损的恢复到最初状态;但是JPEG就弱了些,虽然因为PS等技术
的发展,也可以在JPEG上进行后期制作,但是如果做大幅度的调整还是Raw文件比较合适。
3>可以用专门的软件修正摄像机的不足,比如佳能DPP软件可以修正镜头失光、变形等。
Raw缺点:
1>存储数据量太大,JPEG就小很多
2>需要专门的软件来打开,JPEG几乎所有的PC都可以直接打开
3>打开速度较慢,JPEG较快
4>不同的软件有不同的方式去演绎RAW文件,所以在不同的软件上会有细微的差别。
5>厂商卖的专用软件价格较高,而这方面JPEG几乎无成本
(3)、自动白平衡调整(AWB)
定义:要求在不同色温环境下,照白色的物体,屏幕中的图像应也是白色的。色温表示光谱成份,
光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色(红、绿、蓝)的比例会发生变化,
需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。
(4)、图像压缩方式
JPEG:(joint photo graphicexpert group)静态图像压缩方式。一种有损图像的压缩方式。
压缩比越大,图像质量也就越差。当图像精度要求不高存储空间有限时,可以选择这种格式。目前大部分
数码相机都使用JPEG格式。
(5)、彩色深度(色彩位数)
反映对色彩的识别能力和成像的色彩表现能力,实际就是A/D转换器的量化精度,是指将信号分成多少
个等级。常用色彩位数(bit)表示。彩色深度越高,获得的影像色彩就越艳丽动人。现在市场上的摄像头
均已达到24位,有的甚至是32位(原文)
(6)、图像噪音
指的是图像中的杂点干挠。表现为图像中有固定的彩色杂点。
(7)、视角
与人的眼睛成像是相同原理,简单说就是成像范围。
(8)、输出/输入接口
串行接口(RS232/422):传输速率慢,为115kbit/s
并行接口(PP):速率可以达到1Mbit/s
红外接口(IrDA):速率也是115kbit/s,一般笔记本电脑有此接口
通用串行总线USB:即插即用的接口标准,支持热插拔。USB1.1速率可达12Mbit/s,USB2.0可达
480Mbit/s
IEEE1394(火线)接口(亦称ilink):其传输速率可达100M~400Mbit/s
(9)、CAMIF, Camera Interface
下面这张图,没看懂,暂时放在这里:
(10)、FIME,Fully Interactive Moblio Camera
摄像头采集的数据CPU无法直接处理,所以,主动芯片里面集成了 Camera控制器,即FIMC。
摄像头需要先将图像数九传送给控制器,经过控制器处理(裁剪拉升后直接预览或者编码)之后交给
CPU处理。MCLK就是由FIMC提供的。
CAMMCLK给摄像头提供时钟,CAMRST是复位线,PWD在摄像头工作时应该始终为敌。HREF是行参
考信号,PCLK是像素始终,VSYNC是场同步信号,一旦给摄像头提供了时钟,并且复位了摄像头,摄像
头就开始工作了。
FIMC信号定义如下所示(YCbCr模式)
(11)、camera时钟域
每个摄像头都有三个时钟域,第一个是系统总线时钟域;第二个是摄像头像素时钟域PCLK;
第三个是内部始终MCLK。
系统总线时钟必须高于PCLK,CAM_MCLK必须固定频率发呢拼比,如:PLL时钟。
二、摄像头工作原理
1、手册中内容扫盲:
首先,我们要明白,一旦给摄像头提供了时钟,并且复位了摄像头,摄像头就可以工作了,
通过PCLK、HSYNC、VSYNC听不传输数字图像信号。
摄像头的驱动需要完成三大步:
>>摄像头的上电、时钟这些基本条件
>>IIC保证摄像头的初始化
>>摄像头工作后传回数据到主控
原图有误,已经修改,红色圈圈部分。
控制部分是摄像头上电、IIC控制接口;数据输出是摄像头拍摄的图像数据传到主控芯片,所以,
需要有Data、行场同步时钟(告诉主控芯片哪些数据是一行,哪些是一帧)、以及时钟(PCLK,像素时钟,
告诉主控芯片哪些数据是一个像素点)。
(1)、MCLK
摄像头要 工作,必须要有个时钟进行同步,这个时钟就是MCLK,必须要有,否则摄像头就是一个死物,
这个时钟由主控芯片提供,确切的说是有主控芯片的控制器提供,下面会提到。
(2)、RESET
复位信号,上面有提
(3)、SDA、SCL
IIC总线,主要作用就是为主控芯片配置或者读取摄像头的寄存器提供通道。mini2440音频模块中
的L3协议,也是这个作用。不要看见协议就怕,协议就是一条路,数据传输的路,有规定的数据传输的道路。
(4)、Configuration Register
配置寄存器,控制器(在主控芯片中)通过IIC来设置,相当于告诉摄像头如何工作等。
(5)、Timing Control
时序控制,主要是根据主控芯片提供的MCLK时钟来控制行场同步、自动曝光AEC等。
因为这些都需要时钟的配合。
(6)、Pixel Array
gc0308物理上的阵列是648H*492V,实际采样阵列是648H*488V,也是有效阵列。
实际取像的阵列是640H*480V。如下图所示
(7)、CDS
Correlated Double Sampling,相关双联取样电路。CCD传感器的每个像素点输出波形只在一部
分时间内是图像信号,其余时间是复位电平和干扰,为了提取图像信号并消除干扰,就要采用取样保持电路。
(8)、Analog Processing、10bit ADC
主要是将sensor得到的电信号转换为数字信号,方便ISP或者DSP处理。
(9)、Image Signal Processing
图像信号处理器,可以理解为DSP的一种,主要是对sensor经过ADC处理后的Raw Data进行处理,
主要有自动白平衡AWB、插值计算(Bayer interpolation主要是对Raw Data进行格式转换,转为
YUV /RGB等)、去噪、gamaa修正、色彩修正、边缘增强等。这些都是由寄存器决定,寄存器又是通过
IIC总线来设置的。
(10)、Output Mode & Sync Control
输出接口,从光线进入镜头、过滤、光感应、ADC,然后到图像数据处理,最终数据到达外部接口。
摄像头取一幅图像的整个工作完成,摄像头本质上还是一个终端节点,所以需要将采集好的图像数据传
递给主控芯片,所以要有数据引脚,图形格式补在是Raw Data,而是YUV或者RGB数据。进行数据传输,
肯定需要时钟进行同步,所以需要PCLK,告诉主控芯片,哪个数据代表了一个像素点;VSYNC负责告诉
芯片哪些是一帧数据,HSYNC则同步行数据。
(11)、设备地址
百科上的定义,在数据通信中,可以发送或接受数据的任何设备标识。
操作系统课程上面有讲到,系统为了管理外部设备而进行的编码。不知道这个地址是不是这个意思。
反正写入的时候指定0x42,读取的时候指定0x43,
(12)、IIC通信
IIC通信是一个交互的过程,需要等待对方的确认信号,并不是一次性完成的。首先,主机需要做两个事情:
一个是,提供启动、结束信号;一个是提供IIC时钟信号。图示很明白了,不在啰嗦。
(13)、时序 Timing
帧时间(Ft,Frame time)=帧时钟不活动时间(Bt,Blank time)+启动时间(St,Start time)+
有效行时间(Vt,Valid line time)+结束时间(Et,End time)+8
空白无效行时间(Vblank/Dummy line)=Bt+St+Et。
首先要明白,物理上492行,但是实际感应光线的只有488行,4行是Dark Row,黑暗行;但是这488
有数据的行中只有480行是有效行。然后推导公式,首先分析小公式——空白行时间,空白时间包括无效的帧
同步时间,这里就是VSYNC处于高电平的无效时间;开始数据采集之前需要有几个时钟周期的缓冲,然后才
开始采集行数据,所以这个时间,也就是启动时间也要算在空白行时间里面,同理,480行有效数据采集完
成后,也需要几个时钟周期表示数据采集结束,结束时间也要包括在空白行时间里面。
一帧图像所需要的时间,首先包括空白行时间Bt,还有有效行时间Vt,然后加上8。这个8应该是代表
那8行无效数据(不确定),欢迎留言!
exp_time应该是曝光时间,当曝光时间小于488行数据采集时间+空白行时间,这帧时间由所有行采集
的时间+空白行时间控制,那么VSYNC无效电平的时间=行空白时间-启动时间-结束时间。
如果曝光时间超过win_height+VB,也就是在曝光没有在正常的一帧时间内完成,那么肯定需要继续
曝光,帧时间由曝光时间确定。帧同步无效时间=曝光时间-win_height-启动时间-结束时间。