1、camera特写 摄像头模组,全称Camera Compact Module,以下简写为CCM,是影像捕捉至关重要的电子器件。先来张特写,各种样子的都有。
( E$ g' `( W0 t8 w7 V; U2 K: J
2、摄像头工作原理、camera的组成各组件的作用想完全的去理解,还得去深入,如果是代码我们就逐步分析,模组的话我们就把它分解开来,看他到底是怎么工作的。看下它是有那些部分构成的,如下图所示:
- b/ K r6 q; f6 _& O# M. X9 v8 T# i6 z0 K7 ?: i5 K7 g5 G. a

" j2 I+ f( m% i+ W' q1 h
# w6 k0 G& r/ |) H% n) I( A- d(1)、工作原理:光通过镜头(lens)聚集的光,通过CMOS或CCD集成电路,把光信号转换成电信号,再经过内部图像处理器(ISP)转换成数字图像信号输出到数字信号处理器(DSP)加工处理,转换成标准的RGB、YUV等格式图像信号。
(2)、CCM 包含四大件: 镜头(lens)、传感器(sensor)、软板(FPC)、图像处理芯片(DSP)。决定一个摄像头好坏的重要部件是:镜头(lens)、图像处理芯片 (DSP)、传感器(sensor)。CCM的关键技术为:光学设计技术、非球面镜制作技术、光学镀膜技术。
镜头(lens)是相机的灵魂,镜头(lens)对成像的效果有很重要的作用,是利用透镜的折射原理,景物光线通过镜头,在聚焦平面上形成清晰的影像,通过感光材料CMOS或CCD感光器记录景物的影像。镜头厂家主要集中在台湾、日本和韩国,镜头这种光学技术含量高的产业有比较高的门槛,业内比较知名的企业如富士精机、柯尼卡美能达、大立光、Enplas等
传感器(sensor)是CCM的核心模块,目前广泛使用的有两种:一种是广泛使用的CCD(电荷藕合)元件;另一种是CMOS(互补金属氧化物导体)器件。
电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号。CCD由许多感光单位组成,通常以百万像 素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。CCD传感器模块以日本厂商为主导,全球规模市场有90%以上被日本厂商垄断,以索尼、松下、夏普为龙头。
互补性氧化金属半导体CMOS(Complementary Metal-Oxide Semiconductor)主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带–电)和 P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。CMOS 传感器主要美国、台湾和韩国为主导,主要生产厂家有美国 OmniVision、Agilent、Micron,台湾的锐像、原相、泰视等,韩国的三星、现代。
图像处理芯片(DSP)是CCM的重要组成部分,它的作用是将感光芯片获得的数据及时快速地传递中央处理器并刷新感光芯片,因此DSP芯片的好坏,直接影响画面品质(比如色彩饱和度,清晰度等)。
2 X6 E4 a7 |5 G7 q" [) h( X! w% N
图像处理(isp)——(Image Signal Processor)——影视处理 无论数码相机、摄像机或者摄像手机,其影像数据从前端感应后,皆须经过ASP(Analog Signal Processing)、ADC(Analog-Digital Converter)、前期影像处理(Pre-ISP)与后端影像处理(Post-ISP)四个阶段后,影像数据才能最终呈现于终端设备上
- @2 X- Y9 S- ?8 c& d5 V9 `# a0 @* R2 J
FPC柔性电路板(柔性PCB): 简称"软板", 又称"柔性线路板",连接芯片和手机。起到电信号传输作用。
3、camera模组的装配方式
(1)、定焦模组装配图
CCM分为定焦模组和自动变焦模组,其中定焦模组主要由镜头、镜座、感光集成电路、软性线路板、补强和钢片装配而成,其装配图如下:

2 N# C2 i2 {$ c/ v. j
(2)、自动变焦模组装配图
6 o* J( F" z" V) Z; W& ?
以前我不知道手机上的光学变焦是怎么会事,以为那些都是忽悠人的,看这个图这下明白了,如果你也不知道,看下这个图,原来里面有个音圈马达,这个只有高像素的模组才有,这个我们不用管,知道怎么光学变焦就可以了。
自动变焦模组由镜头、音圈马达、底座支架、感光集成电路、驱动集成电路和连接器组成,其装配图如下:

* f `* G2 e+ e& K1 R
9 g2 Z% P0 N: P
3、摄像头的一些技术指标1)、图像格式(imageFormat/Colorspace): B0 C2 B0 a2 Y) A/ u
RGB24,420是目前最常用的两种图像格式。
说道RGB24,不得不提一下RGB。
+ m6 g) {7 {7 [# m
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,
RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
) N. o& X ~8 V5 K5 D/ z0 Z5 f" P
RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216(256 * 256 * 256)种颜色。
- Q* q# Y" H) N+ f, C2 `! U8 H- N, m

. m! O( [' v1 V9 O4 ]3 Q. e
RGB555RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
6 X3 ?! m" C1 a$ S1 p& k高字节 低字节
: W1 W4 a# n: xX R R R R R G G G G G B B B B B (X表示不用,可以忽略)
. z5 [$ h3 ~5 }, q可以组合使用屏蔽字和移位操作来得到RGB各分量的值:" b, F/ m- M6 E& Y: C
#define RGB555_MASK_RED 0x7C00
" q9 J& U1 ]& v& N3 P#define RGB555_MASK_GREEN 0x03E0/ c) q( e2 v8 J
#define RGB555_MASK_BLUE 0x001F
& u- P5 I1 I* bR = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31
# l0 i# a3 w8 |4 r/ LG = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-319 n: r# j2 ~6 q9 H! d ]* t0 ]
B = wPixel & RGB555_MASK_BLUE; // 取值范围0-311 @5 a$ d. R/ B+ E5 t
RGB565RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:
1 L2 z5 p8 i! Z6 y高字节 低字节' `# b7 n2 m' e6 K2 t' U: Q+ t* A2 f) u
R R R R R G G G G G G B B B B B
! ^0 s; {' W; s3 I G# B可以组合使用屏蔽字和移位操作来得到RGB各分量的值:; G, W& {+ w+ d- y5 t, ]
#define RGB565_MASK_RED 0xF800% I1 Y! o* E, l3 X5 n1 s( u
#define RGB565_MASK_GREEN 0x07E04 i( h/ R( Q$ N5 {4 ~1 `- z
#define RGB565_MASK_BLUE 0x001F' r( i! C0 T8 N. s8 n* X
R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-315 T0 ^: G$ R4 H/ j7 A2 Q
G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63" P x0 w: G" U6 X, x) f
B = wPixel & RGB565_MASK_BLUE; // 取值范围0-319 `! G6 {) O4 q+ Z+ Z( a( h
#define RGB(r,g,b) (unsigned int)( (r|0x08 << 11) | (g|0x08 << 6) | b|0x08 )
3 }% b" W2 t* \; _" x* d( v" }#define RGB(r,g,b) (unsigned int)( (r|0x08 << 10) | (g|0x08 << 5) | b|0x08 )
& X& \ T& d/ H9 }6 D& I; p9 j" I该代码可以解决24位与16位相互转换的问题
1 _$ o7 ^7 C0 z3 E s( u( sRGB24(RGB888)RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:
4 v. F$ k! J+ N; H' M" _, Ltypedef struct tagRGBTRIPLE {+ C- {! F0 J; }$ a' S: B; O
BYTE rgbtBlue; // 蓝色分量
: R: P6 r; q* k3 K& iBYTE rgbtGreen; // 绿色分量
# @3 x" z1 I: _- N" XBYTE rgbtRed; // 红色分量+ g- \. n& e3 B6 M& ?; s# w
} RGBTRIPLE;- f- j& a4 r( c$ E3 C
RGB32(RGB8888)RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的RGB24。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:
6 l* N. k- l5 V1 e8 m# Xtypedef struct tagRGBQUAD {
- j$ @' u7 K: H% @" x! rBYTE rgbBlue; // 蓝色分量$ B2 e) | ^! }( G- M7 z% B @
BYTE rgbGreen; // 绿色分量
, r# G, b* y% |% ^. {& kBYTE rgbRed; // 红色分量) t$ C3 \0 a6 N6 a
BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略)
2 z+ D) h) E& \0 z} RGBQUAD。/ z* ^( f" ]7 E7 S5 e
: y0 S1 i* N. T! K8 }# Q
9 y d3 e- U- n8 s- o! l5 q
1 d2 \! ^) w! j& n4 m" N
$ u m% o: A+ G! N8 x) M5 a( h
; w" v, i8 ]4 Q# W
(2)、自动白平衡调整(AWB)8 f4 n* K. m" |
定义:要求在不同色温环境下,照白色的物体,屏幕中的图像应也是白色的。色温表示光谱成份,光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色(红、绿、蓝)的比例会发生变化,需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。+ s3 b& X6 h6 \' l& H
(3)、图像压缩方式
7 m8 ]/ e, n! c# V/ k/ r8 l
JPEG格式5 l) _) k9 a% h2 @
" |3 y5 h! ^0 a) Q0 s- r1 g' J3 N" h
: l: w4 w1 R! w) R
JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。
: ]! `) W7 w- A) g0 r( y, fJPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。) }/ L/ }5 G2 n
JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。% E" s8 s" u+ I/ G$ t
JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持所谓的"感兴趣区域" 特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。; x6 U7 X3 }& Z$ Z8 }; @3 i7 B% j
JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式。JPEG2000即可应用于传统的JPEG市场,如扫描仪、数码相机等,又可应用于新兴领域,如网路传输、无线通讯等等。6 i; e: n% h/ q; p# @3 z4 j) M
JPEG的全称是“联合图片专家组(Joint Photographic Experts Group)”,是由该专家组制订的用于连续色调(包括灰度和彩色)静止图像的压缩编码标准。JPEG标准的压缩编码算法是“多灰度静止图像的数字压缩编码”。0 G) n& e/ A6 a0 B/ m
JPEG标准包括3部分,即编码器、译码器和交换格式。
7 W _$ e/ X( A' c& n7 ^1 kl 编码器将原始图像的编码压缩成压缩数据。
( R& ?9 _. L0 m# e9 U% n+ ^l译码器将压缩的图像数据还原成原始图像数据。
2 G1 s' M5 k" vl图像压缩数据以一定的交换格式存储,格式中包括编码过程中采用的码表等。# g; O& x" w7 A% W" l6 X3 d& @
JPEG标准包括以下4种运行模式。
$ D) P, R7 d$ }! ~- r2 ?: Ml 基本系统(Baseline System):基于离散余弦变换DCT(Discrete Cosine Transform)进行从左到右、从上到下的顺序扫描编码和重建图像,实现信息有丢失的图像压缩,但重建图像的质量要达到难以观察出图像损伤的要求。它采用8×8像素自适应DCT算法量化以及哈夫曼(Huffman)型的熵编码器。
1 q7 W* T* s5 K# {: g0 Al 扩展系统(Extended System):选用基于离散余弦变换DCT的递增工作方式,编码过程采用具有自适应能力的算术编码。
0 G# `2 }$ e3 t t. X: x, \l 无失真的预测编码:采用帧内预测编码及哈夫曼编码(或算术编码),可保证重建图像与原始图像完全一样(即均方误差为零)。
/ _- t6 f- B9 v2 ~, K7 R9 J# m/ D) r3 Ql 分层编码:以多种分辨率对图像进行编码,按不同的应用要求可以获得不同分辨率或质量的图像。
% p& N, N. P7 ?/ U9 zJPEG标准定义了两种基本的压缩算法,即基于空间线性预测技术差分脉冲码调制DPCM(Differential Pulse Code Modulation)的无失真压缩算法和基于离散余弦DCT(Discrete Cosine Transform)的有失真压缩算法。
3 z: }) P. l2 fJPEG压缩标准的压缩比是通过量化因子(Q因子)来控制的。Q因子用来确定原始图像的采样精度,并产生一个JPEG量化矩阵,即:' ^- }( x- G( c" u4 {: U
式中QM[i,j]为量化矩阵,Q是量化因子,V[i,j]是图像缺省清晰度表。
$ }4 B, ^4 Z# r! y量化矩阵用来量化DCT变换产生的频率系数,量化后的系数值减少,0值的数目大大增加。Q因子越大,量化后的0值越多,压缩比越大,因此Q因子决定着JPEG的压缩比。
* X# G7 Z0 \; M/ P/ z. H: yJPEG的无失真压缩率为4:1,有失真压缩率为10:1~100:1。在压缩率小于40:1时,人眼基本上分辨不出图像的效果变化,可认为是“主观无失真压缩”。, G* B( ~: L% x
JPEG标准较复杂,但有许多公司和组织提供大量的操作JPEG的开放源码可以利用。本设计就使用了Independent JPEG Group的Thomas G. Lane编写的JPEGLIB2。
4 M( ?4 u1 h7 f0 Z! C8 m; `. e+ ?! ~' e" J V2 p% z0 O( x$ q0 L% H+ v
3 j. X* Y" i3 p& w3 S ?, d* N* J; L! h6 F4 ^( J3 p- q" R7 \
BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。
; K7 S$ a% e) W9 j; l; Z m由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。
9 A; S+ U+ o! D" U典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。( W4 ~$ s2 J' N/ v1 t5 \
BMP图像,即通常所说的位图(Bitmap),是Windows系统中最为常见的图像格式。Windows 3.0以前的版本只支持与设备相关位图DDB(Device Dependent Bitmap)。DDB是一种内部位图格式,它显示的图像依计算机显示系统的设置不同而不同,因此一般不存储为文件,与通常所说的BMP图像不同。在Windows.h中,结构体BITMAP定义了DDB位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:typedef struct tagBITMAP- G0 \0 D* O: Z
{int bmType; //位图类型,必须设为0: e: q; o- ~9 q
int bmWidth; //位图宽度; O3 |1 E6 Z: T! h
int bmHeight; //位图高度
. M+ R0 ^' p% T5 V5 j4 A" Qint bmWidthBytes; //位图中每一扫描行中的字节数" b* f" N" e, Y% l. k, `. T
BYTE bmPlanes; //颜色层数7 n" m9 j5 J, A
BYTE bmBitsPixel; //每一像素所占的位数3 g6 n/ t) G0 J- t
void FAR* bmBits; //存放像素值内存块的地址}BITMAP;+ X7 ~! e0 G0 K& z, E! O
DDB中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的。Windows只能保证系统调色板的前20种颜色稳定不变,所以DDB只能保证正确显示少于20色的位图。Windows SDK提供标准的DDB位图操作函数;MFC中定义了CBitmap类来说明DDB位图,其中封装了与DDB位图操作相关的数据结构和函数。
2 n9 P5 O* F$ T* J" x A+ NWindows 3.1以上版本提供了对设备无关位图DIB(Device Independent Bitmap)的支持。DIB位图可以在不同的机器或系统中显示位图所固有的图像。相对于DDB而言,DIB是一种外部位图格式,经常存储为常见的以BMP为后缀的位图文件(有时也以DIB为后缀)。因此,通常所说的BMP图像,即是DIB位图。6 Q( I9 j/ j0 i: s' k
BMP位图文件包括4部分,即位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据,BMP位图文件的结构如图1.1所示。5 V/ D2 ^" Q/ Q
位图文件头结构BITMAPFILEHEADER' B# o5 [% s% J( m2 N+ V
位图信息头结构BITMAPINFOHEADER
9 e4 ^0 d F7 P" w" z) E位图颜色表RGBQUAD6 M- ~9 Q1 \- d- C( h2 b6 Y
位图像素数据" j% R1 c& J9 ? G
图1.1 BMP位图文件的结构
0 ]7 K3 O, O5 J下面介绍BMP文件头、BMP位图信息头、颜色表这3个结构体在Windows.h中的定义。1 `+ i0 k& b+ ?5 O1 A4 ^
1. BMP文件头BMP文件头含有BMP文件的类型、文件的大小、位图文件的保留字、位图数据距文件头的偏移量等信息。定义如下:' I: n/ u" o# x% G
typedef struct tagBITMAPFILEHEADER
1 L7 o: `2 ^6 Q! B3 m# h! H{UINT bfType; //位图文件的类型,必须为BM
& Y; |" V! B8 \DWORD bfSize; //位图文件的大小,以字节为单位5 B' U1 E) s8 _! T I- B/ g) k
UINT bfReserved1; //位图文件保留字,必须为0
' ] }; m ^0 T+ [UINT bfReserved2; //位图文件保留字,必须为0
; O% J/ W+ g: i `4 B& wDWORD bfOffBits; //位图数据距文件头的偏移量,以字节为单位} BITMAPFILEHEADER;
. a- R l; O3 _6 ~ a1 W3 ^, d2. BMP位图信息头BMP位图信息头用于说明位图的尺寸等信息,定义如下:4 S$ T. f, F- T# p. [, U! N
typedef struct tagBIMAPINFOHEADER( G4 |: E5 y0 V& T7 W" l, U
{WORD biSize; //本结构所占用字节数
, T( s/ \! p4 I0 p- j3 XLONG biWidth; //位图的宽度,以像素为单位
( \& b$ m f( F$ `LONG biHeight; //位图的高度,以像素为单位
. f# E5 G9 i+ S+ j( Q) |WORD biPlanes; //目标设备的级别,必须为1* H6 X- \% ?$ M% E
WORD biBitCount; //每个像素所需的位数,必须是1(双色)、" W- T3 F% l7 I
//4(16色)、8(256色)或24(真彩色)之一
# m, D7 W C" @4 g7 YDWORD biCompression; //位图压缩类型,必须是 0(不压缩)、
* z) e9 E* {: f+ }//1(BI_RLE8压缩类型)或2(BI_RLE压缩类型)之一
: F% @9 e- ~, ^' lDWORD biSizeImage; //位图的大小,以字节为单位
' g' p- J8 }" C! \, B3 ]LONG biXPelsPerMeter; //位图水平分辨率,每米像素数* d5 N; V4 r7 Y$ T
LONG biYPelsPerMeter; //位图垂直分辨率,每米像素数
2 Y M9 y" G: ^- Q! [! t7 eDWORD biClrUsed; //位图实际使用的颜色表中的颜色数
) E7 ]- N% M; j6 b, V3 P0 UDWORD biClrImportant; //位图显示过程中重要的颜色数} BITMAPINFOHEADER;+ m5 i9 |" t. x! @/ a# Z
3. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,且定义一种颜色,定义如下:
- V9 n4 D' v, w- Qtypedef struct tagRGBQUAD' ]+ \$ j% K4 s
{BYTE rgbBlue; //蓝色的亮度(值范围为0~255), {2 i1 _( N& u6 E! T
BYTE rgbGreen; //绿色的亮度(值范围为0~255)
' H0 |$ r' T0 ~* V' ?/ {BYTE rgbRed; //红色的亮度(值范围为0~255)# T- f1 ]# w' D' D9 b% h3 w
BYTE rgbReserved; //保留,必须为0} RGBQUAD;
4 C. I$ I0 n- r; |' H8 U8 e位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
( q1 O V. y# E y3 \/ W6 ytypedef struct tagBITMAPINFO* f1 @& U! M2 \; r
{BITMAPINFOHEADER bmiHeader;
4 m C7 O4 s2 Y* c9 e) ]RGBQUAD bmiColors;} BITMAPINFO;
- m0 Z. } b, d* \( V1 ^颜色表中RGBQUAD结构数据的个数由biBitCount来确定,当biBitCount=1、4、8时,分别有2、16、256个表项;当biBitCount=24时,没有颜色表项。
+ \& r$ ]. Q& c4 \) K位图数据记录了位图的每一个像素值,记录顺序是在扫描行内从左到右、扫描行之间从下到上。位图的一个像素值所占的字节数如下:) j) G* [: d$ M' S2 }
l 当biBitCount=1时,8个像素占1个字节。
1 |2 r( I3 H r2 S3 Q. ]: z% S( N. fl 当biBitCount=4时,2个像素占1个字节。2 t& }6 t% K/ @. M. ?+ b
l 当biBitCount=8时,1个像素占1个字节。
# J: ^, `, `- x6 Jl 当biBitCount=24时,1个像素占3个字节。# t0 J4 e2 A6 {: O7 Z3 k$ k
Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法如下:, t9 ^5 z5 U8 x' x$ y* H6 F
DataSizePerLine=(biWidth×biBitCount+31)/8
0 \4 F t5 c3 L* f- \. d这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的4字节对齐。
. y. C- K! h- d( I" u$ h% j除了上述的Windows BMP以外,还有一种与其结构相似,但不完全相同的另一种BMP图像,即OS/2采用的BMP。其与Windows BMP的主要区别是位图信息结构(信息头结构和颜色表结构)不同。而它们的图像位数据的存储方式是完全一样的。本设计只讨论Windows系统下的BMP图像,故对OS/2使用的BMP不进行详细分析。) {; Z7 G% p7 [0 M) L- s' g
(4)、彩色深度(色彩位数)
/ c4 y( `. P8 z- Q反映对色彩的识别能力和成像的色彩表现能力,实际就是A/D转换器的量化精度,是指将信号分成多少个等级。常用色彩位数(bit)表示。彩色深度越高,获得的影像色彩就越艳丽动人。现在市场上的摄像头均已达到24位,有的甚至是32位$ }% N$ M6 X! X2 v* M
(5)、图像噪音
! ]( \, A4 w* Q' \( `指的是图像中的杂点干挠。表现为图像中有固定的彩色杂点。( g3 o% [/ c9 U) p+ P: }
(6)、视角6 o: m/ E" O; H$ m4 N @: G
与人的眼睛成像是相成原理,简单说就是成像范围。7 t6 y$ M5 j8 L8 X
(7)、输出/输入接口" l7 U& C. K1 }; q
串行接口(RS232/422):传输速率慢,为115kbit/s
W# G+ ^2 w0 s+ r( |4 v: d 并行接口(PP):速率可以达到1Mbit/s* O" P5 T9 A5 r) w, m8 e
红外接口(IrDA):速率也是115kbit/s,一般笔记本电脑有此接口1 W [+ `1 @; O1 o) h! h2 x: Q' C
通用串行总线USB:即插即用的接口标准,支持热插拔。USB1.1速率可达12Mbit/s,USB2.0可达480Mbit/s1 m P; O9 Z4 e7 T4 p/ d$ {, a
IEEE1394(火线)接口(亦称ilink):其传输速率可达100M~400Mbit/s
8 \* `: q7 o+ a4 |, U