Camera sensor 基本知识(1)
https://www.ccm99.com/thread-115494-1-1.html
(出处: 摄像头模组论坛技术研发网-camera摄像头ccm论坛)

一、Camera 工作原理介绍
1. 结构 .
一般来说,camera 主要是由 lens 和 sensor IC 两部分组成,其中有的 sensor IC 集成 了 DSP,有的没有集成,但也需要外部 DSP 处理。细分的来讲,camera 设备由下边几部 分构成:   b$ w6 [# i& q% p* E
1) lens(镜头) 一般 camera 的镜头结构是有几片透镜组成,分有塑胶透镜(Plastic)和玻璃透 镜(Glass) ,通常镜头结构有:1P,2P,1G1P,1G3P,2G2P,4G 等。
2) sensor(图像传感器) Senor 是一种半导体芯片,有两种类型:CCD 和 CMOS。Sensor 将从 lens 上传导过来的光线转换为电信号, 再通过内部的 AD 转换为数字信号。 由于 Sensor 的每个 pixel 只能感光 R 光或者 B 光或者 G 光, 因此每个像素此时存贮的是单色的, 我们称之为 RAW DATA 数据。 要想将每个像素的 RAW DATA 数据还原成三基色,就需要 ISP 来处理。
3)ISP(图像信号处理) 主要完成数字图像的处理工作,把 sensor 采集到的原始数据转换为显示支持 的格式。 2 {4 w# {. R- z% Y
4)CAMIF(camera 控制器) 芯片上的 camera 接口电路,对设备进行控制,接收 sensor 采集的数据交给 CPU,并送入 LCD 进行显示。

2. 工作原理 . & W* e" B3 D6 O) |4 k
外部光线穿过 lens 后, 经过 color filter 滤波后照射到 Sensor 面上, Sensor 将从 lens 上传导过来的光线转换为电信号,再通过内部的 AD 转换为数字信号。如果 Sensor 没有集 成 DSP,则通过 DVP 的方式传输到 baseband,此时的数据格式是 RAW DATA。如果集成 了 DSP, RAW DATA 数据经过 AWB、 则 color matrix、 lens shading、 gamma、 sharpness、 AE 和 de-noise 处理,后输出 YUV 或者 RGB 格式的数据。 ; D$ o% H5 z1 f* T% Q1 Y2 O
最后会由 CPU 送到 framebuffer 中进行显示,这样我们就看到 camera 拍摄到的景象 了。

3. YUV 与 YCbCr .
YUV 和 RGB 一样,是色彩空间中常用的色彩模型之一,两者可以相互转换。YUV 中 得 Y 表示亮度,U 和 V 表示色度。与 RGB 相比,它的优点在于占用更少的空间。 YCbCr 则是在世界数字组织视频标准研制过程中作为 ITU - R BT601 建议的一部分, 其实是 YUV 经过缩放和偏移的翻版。 其中 Y 与 YUV 中的 Y 含义一致, Cb , Cr 同样都指色 彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在计算机系统中应用最多的成 员, 其应用领域很广泛,JPEG、 MPEG 均采用此格式。 一般人们所讲的 YUV 大多是指 YCbCr。 YCbCr 有许多取样格式, 如 4∶4∶4 , 4∶2∶2 , 4∶1∶1 和 4∶2∶0。

二、Camera 硬件
1. CAMIF .
如下是 S5PV210 的 camera 系统的结构图:

S5PV210 的 camera 接口控制器叫 FIMC4.3,它支持 ITU R BT-601/656、AXI 和 MIPI(CSI)三种接口方式,最大输入像素是 8192*8192。S5PV210 有三组 camera 接口。

主要特性: 支持多种输入接口类型:

ITU-R BT 601/656 模式 DMA(AXI 64 位)模式 MIPI(CSI)模式 Direct FIFO 模式 支持多种输出接口:DMA 模式/Direct FIFO 模式 支持数码调焦(DZI) 最大输入像素 8192*8192 支持图像翻转、旋转等处理效果 生成多种图片格式 支持采集帧控制

2. 接口信号 . 7 ^  ?5 u2 s) y1 e! F; d; |
FIMC 信号定义如下所示(YCbCr 模式)
Signal
VSYNC HREF PCLK DATA[7:0] FIELD CAM_MCLK I I I I

I/O
帧同步信号 行同步信号 像素时钟 像素数据 FIELD 信号

Description

Type

Muxed

O O

系统时钟信号

通过 CAM_MCLK 给摄像头提供时钟,RST 是复位线,PWDN 在摄像头工作时应该始终 为低。HREF 是行参考信号,PCLK 是像素时钟,VSYNC 是场同步信号。一旦给摄像头提供了 时钟,并且复位摄像头,摄像头就开始工作了,通过 HREF,PCLK 和 VSYNC 同步传输数字图 像信号。数据是通过 DATA0~DATA7 这八根数据线并行送出的。

3. 工作时序 .
FIMC43 支持如下两种视频数据:

ITU-R BT 601 输入时序图 这种方式下行和帧同步信号独立于视频数据,因此需要同步信号。

ITU-R BT 656 输入时序图

这种方式下同步信号已经内嵌到视频数据中了,因此不需要额外的行和帧同步信号。

(ITU-R BT 601: 16 位数据传输;21 芯;Y、U、V 信号同时传输。 ITU-R BT 656: 9 芯,不需要同步信号;8 位数据传输;串行视频传输;传输速率是 601 的 2 倍;先传 Y, 后传 UV。 )

同步信号的时延参数 t1:表示 VSYNC 前、后插入周期 t2:表示 HREF 前插入周期 t3:表示 HREF 宽度 t4:表示 HREF 后插入周期

4. 外部接口 . 外部接口 8 `- }$ I8 `/ _* K
硬件原理图的 CAM A 部分:

CAM B 部分

5. Camera 内部结构图 . 9 k) c; ?& t, h* b! f9 M' o9 E
下图是 camera 内部结构框图,以 OV sensor 为例:

一、摄像头模组(CCM)介绍:1、camera特写

摄像头模组,全称Camera Compact Module,以下简写为CCM,是影像捕捉至关重要的电子器件。先来张特写,各种样子的都有。

2、摄像头工作原理、camera的组成各组件的作用想完全的去理解,还得去深入,如果是代码我们就逐步分析,模组的话我们就把它分解开来,看他到底是怎么工作的。看下它是有那些部分构成的,如下图所示:( s9 Y1 U  W2 V5 F

(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芯片的好坏,直接影响画面品质(比如色彩饱和度,清晰度等)。

图像处理(isp)——(Image Signal Processor)——影视处理        无论数码相机、摄像机或者摄像手机,其影像数据从前端感应后,皆须经过ASP(Analog Signal Processing)、ADC(Analog-Digital Converter)、前期影像处理(Pre-ISP)与后端影像处理(Post-ISP)四个阶段后,影像数据才能最终呈现于终端设备上
/ ^9 ~( K  P& _( U3 A0 x2 }

FPC柔性电路板(柔性PCB): 简称"软板", 又称"柔性线路板",连接芯片和手机。起到电信号传输作用。

3、camera模组的装配方式

(1)、定焦模组装配图

CCM分为定焦模组和自动变焦模组,其中定焦模组主要由镜头、镜座、感光集成电路、软性线路板、补强和钢片装配而成,其装配图如下:

% R2 j# |# \# h9 |

(2)、自动变焦模组装配图$ O5 u1 s  U. w, o

以前我不知道手机上的光学变焦是怎么会事,以为那些都是忽悠人的,看这个图这下明白了,如果你也不知道,看下这个图,原来里面有个音圈马达,这个只有高像素的模组才有,这个我们不用管,知道怎么光学变焦就可以了。

自动变焦模组由镜头、音圈马达、底座支架、感光集成电路、驱动集成电路和连接器组成,其装配图如下:

' |  c. b* L* d2 ~

3、摄像头的一些技术指标

1)、图像格式(imageFormat/Colorspace)" B( a6 E  u6 p" V' v
RGB24,420是目前最常用的两种图像格式。

说道RGB24,不得不提一下RGB。

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,

RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。3 W1 u+ M1 Q9 q% S; d

RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216(256 * 256 * 256)种颜色。/ s7 a& a4 T: J6 I

RGB555RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:7 h# Z8 D" k$ q7 ?' J
高字节 低字节
X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31
G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31# j& p, K. G6 H6 Z4 v
RGB565RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:' j1 E0 g0 j8 \  h& R# R1 {) Z
高字节 低字节
R R R R R G G G G G G B B B B B) {( e  a1 G! S4 `
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB565_MASK_RED 0xF8005 _( t0 s7 {- @  f" }; l. W
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F2 u$ q- p- W. N* D' g, y3 y# Z0 {
R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31# z5 h. H2 r$ [* i# e8 A
G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31
#define RGB(r,g,b) (unsigned int)( (r|0x08 << 11) | (g|0x08 << 6) | b|0x08 )1 D# C7 b" Z1 \( R7 \) w$ |+ k
#define RGB(r,g,b) (unsigned int)( (r|0x08 << 10) | (g|0x08 << 5) | b|0x08 )
该代码可以解决24位与16位相互转换的问题
RGB24(RGB888)RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:0 J, H3 M% c- ~
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 蓝色分量
BYTE rgbtGreen; // 绿色分量2 v6 X1 X' E: q- i
BYTE rgbtRed; // 红色分量: \& Q) w* d  y0 a7 z
} RGBTRIPLE;$ q* M1 ]0 u7 [# ~! Y
RGB32(RGB8888)RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的RGB24。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:
typedef struct tagRGBQUAD {
BYTE rgbBlue; // 蓝色分量0 i( {) g; _9 R3 m4 d
BYTE rgbGreen; // 绿色分量  ~5 {. K- \" _) |* a
BYTE rgbRed; // 红色分量; A' E. K) ]3 Q4 n5 \/ j
BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略)+ M! m5 a, C& M
} RGBQUAD。1 ^- P+ J# i6 @  {( f% r

. _1 l! c- G0 m  G: p

(2)、自动白平衡调整(AWB)
定义:要求在不同色温环境下,照白色的物体,屏幕中的图像应也是白色的。色温表示光谱成份,光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色(红、绿、蓝)的比例会发生变化,需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。: P2 d. t! D' {# M6 P5 P6 W/ W
(3)、图像压缩方式

JPEG格式

JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。
JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。) E( D1 L0 R& y  {& t. x: p+ @
JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。+ @$ f# C. _8 ?. A8 v& J
JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持所谓的"感兴趣区域" 特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。  h6 J% h# k; l" [1 x
JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式。JPEG2000即可应用于传统的JPEG市场,如扫描仪、数码相机等,又可应用于新兴领域,如网路传输、无线通讯等等。% V: T+ k) c: c0 M7 b
JPEG的全称是“联合图片专家组(Joint Photographic Experts Group)”,是由该专家组制订的用于连续色调(包括灰度和彩色)静止图像的压缩编码标准。JPEG标准的压缩编码算法是“多灰度静止图像的数字压缩编码”。
JPEG标准包括3部分,即编码器、译码器和交换格式。' ~# n; ?# U' h0 R2 ?
l 编码器将原始图像的编码压缩成压缩数据。
l译码器将压缩的图像数据还原成原始图像数据。
l图像压缩数据以一定的交换格式存储,格式中包括编码过程中采用的码表等。
JPEG标准包括以下4种运行模式。
l 基本系统(Baseline System):基于离散余弦变换DCT(Discrete Cosine Transform)进行从左到右、从上到下的顺序扫描编码和重建图像,实现信息有丢失的图像压缩,但重建图像的质量要达到难以观察出图像损伤的要求。它采用8×8像素自适应DCT算法量化以及哈夫曼(Huffman)型的熵编码器。  H" i; {8 q# v( W6 D. z. g
l 扩展系统(Extended System):选用基于离散余弦变换DCT的递增工作方式,编码过程采用具有自适应能力的算术编码。+ ^" _4 D7 l, X: B# ^
l 无失真的预测编码:采用帧内预测编码及哈夫曼编码(或算术编码),可保证重建图像与原始图像完全一样(即均方误差为零)。
l 分层编码:以多种分辨率对图像进行编码,按不同的应用要求可以获得不同分辨率或质量的图像。
JPEG标准定义了两种基本的压缩算法,即基于空间线性预测技术差分脉冲码调制DPCM(Differential Pulse Code Modulation)的无失真压缩算法和基于离散余弦DCT(Discrete Cosine Transform)的有失真压缩算法。0 E7 z; ^. p$ K: s) J3 b1 u
JPEG压缩标准的压缩比是通过量化因子(Q因子)来控制的。Q因子用来确定原始图像的采样精度,并产生一个JPEG量化矩阵,即:5 H+ ?/ s$ Z# e) R. V9 {6 z4 H; |& }
式中QM[i,j]为量化矩阵,Q是量化因子,V[i,j]是图像缺省清晰度表。: P5 e. w% U0 P9 h* M* A; k: ~
量化矩阵用来量化DCT变换产生的频率系数,量化后的系数值减少,0值的数目大大增加。Q因子越大,量化后的0值越多,压缩比越大,因此Q因子决定着JPEG的压缩比。
JPEG的无失真压缩率为4:1,有失真压缩率为10:1~100:1。在压缩率小于40:1时,人眼基本上分辨不出图像的效果变化,可认为是“主观无失真压缩”。
JPEG标准较复杂,但有许多公司和组织提供大量的操作JPEG的开放源码可以利用。本设计就使用了Independent JPEG Group的Thomas G. Lane编写的JPEGLIB2。

4 A0 H5 s0 ^5 R' M% k+ z# r$ A

BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。( b( b7 ]. u1 k# b) B4 Y0 l; D$ Q
由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。
典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。
BMP图像,即通常所说的位图(Bitmap),是Windows系统中最为常见的图像格式。Windows 3.0以前的版本只支持与设备相关位图DDB(Device Dependent Bitmap)。DDB是一种内部位图格式,它显示的图像依计算机显示系统的设置不同而不同,因此一般不存储为文件,与通常所说的BMP图像不同。在Windows.h中,结构体BITMAP定义了DDB位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:typedef struct tagBITMAP, c( V) p" K* I4 Z9 ?
{int bmType; //位图类型,必须设为0
int bmWidth; //位图宽度
int bmHeight; //位图高度
int bmWidthBytes; //位图中每一扫描行中的字节数, G8 i* i8 ?2 |7 j8 c8 @, p
BYTE bmPlanes; //颜色层数1 U: L" v" x) h' j5 |
BYTE bmBitsPixel; //每一像素所占的位数1 g+ D  U% R; D
void FAR* bmBits; //存放像素值内存块的地址}BITMAP;% S4 [( y/ m8 b* f, \! W
DDB中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的。Windows只能保证系统调色板的前20种颜色稳定不变,所以DDB只能保证正确显示少于20色的位图。Windows SDK提供标准的DDB位图操作函数;MFC中定义了CBitmap类来说明DDB位图,其中封装了与DDB位图操作相关的数据结构和函数。
Windows 3.1以上版本提供了对设备无关位图DIB(Device Independent Bitmap)的支持。DIB位图可以在不同的机器或系统中显示位图所固有的图像。相对于DDB而言,DIB是一种外部位图格式,经常存储为常见的以BMP为后缀的位图文件(有时也以DIB为后缀)。因此,通常所说的BMP图像,即是DIB位图。6 W1 u- F9 X2 f* y
BMP位图文件包括4部分,即位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据,BMP位图文件的结构如图1.1所示。
位图文件头结构BITMAPFILEHEADER1 |) O+ }( h  W4 J* i( n
位图信息头结构BITMAPINFOHEADER% p9 v) {* W* ^$ v  }& z
位图颜色表RGBQUAD- k* c# d! L+ c3 b; X4 {4 f. g
位图像素数据7 U  E' ~2 L# V+ P
图1.1 BMP位图文件的结构# S5 _7 ^4 d. y  O( d; H
下面介绍BMP文件头、BMP位图信息头、颜色表这3个结构体在Windows.h中的定义。
1. BMP文件头BMP文件头含有BMP文件的类型、文件的大小、位图文件的保留字、位图数据距文件头的偏移量等信息。定义如下:' x6 N! K, L1 D6 D$ R) f" a
typedef struct tagBITMAPFILEHEADER$ ]- O2 w  ^- F) l( R  H' R- g
{UINT bfType; //位图文件的类型,必须为BM4 Z% s  H1 d5 G6 c
DWORD bfSize; //位图文件的大小,以字节为单位
UINT bfReserved1; //位图文件保留字,必须为0; w6 L( C" Y/ h3 a
UINT bfReserved2; //位图文件保留字,必须为0
DWORD bfOffBits; //位图数据距文件头的偏移量,以字节为单位} BITMAPFILEHEADER;
2. BMP位图信息头BMP位图信息头用于说明位图的尺寸等信息,定义如下:
typedef struct tagBIMAPINFOHEADER
{WORD biSize; //本结构所占用字节数
LONG biWidth; //位图的宽度,以像素为单位# [8 h4 r$ F- i3 N2 A
LONG biHeight; //位图的高度,以像素为单位1 i6 F6 O+ u7 Y1 F! D7 X
WORD biPlanes; //目标设备的级别,必须为1: J! }0 A# r9 R0 }7 o: K' g1 {3 B
WORD biBitCount; //每个像素所需的位数,必须是1(双色)、* N' f! ^& _) m  K; P: E4 D
//4(16色)、8(256色)或24(真彩色)之一- ?! B! V- `& C: w0 f' s
DWORD biCompression; //位图压缩类型,必须是 0(不压缩)、
//1(BI_RLE8压缩类型)或2(BI_RLE压缩类型)之一# S4 y+ D( n7 T" y9 }0 ^) O
DWORD biSizeImage; //位图的大小,以字节为单位; X  h# X0 Z1 w, Z+ ~
LONG biXPelsPerMeter; //位图水平分辨率,每米像素数) U9 W2 I* m/ G1 z! p* A! S2 n
LONG biYPelsPerMeter; //位图垂直分辨率,每米像素数& f% [7 d) k0 W7 h% }/ ~7 s# ~
DWORD biClrUsed; //位图实际使用的颜色表中的颜色数/ ^2 E4 F" }9 D! H; j7 h2 [
DWORD biClrImportant; //位图显示过程中重要的颜色数} BITMAPINFOHEADER;& I. t: _. O# d% i4 [4 q6 Y! Z
3. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,且定义一种颜色,定义如下:
typedef struct tagRGBQUAD& K7 `# b  h8 o& ?9 \3 D
{BYTE rgbBlue; //蓝色的亮度(值范围为0~255)! I( h* B- {! B9 q" {
BYTE rgbGreen; //绿色的亮度(值范围为0~255)0 ?5 M4 c% P! u' Y+ G
BYTE rgbRed; //红色的亮度(值范围为0~255)( k$ X% G9 L' ^; h- T. }( T/ r
BYTE rgbReserved; //保留,必须为0} RGBQUAD;
位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
typedef struct tagBITMAPINFO( g8 t' T% D) c& O! {5 N
{BITMAPINFOHEADER bmiHeader;+ \$ ]- C9 S6 a5 b3 V
RGBQUAD bmiColors;} BITMAPINFO;8 {# S. i6 V+ c: O! l: L) K0 _% Z
颜色表中RGBQUAD结构数据的个数由biBitCount来确定,当biBitCount=1、4、8时,分别有2、16、256个表项;当biBitCount=24时,没有颜色表项。
位图数据记录了位图的每一个像素值,记录顺序是在扫描行内从左到右、扫描行之间从下到上。位图的一个像素值所占的字节数如下:
l 当biBitCount=1时,8个像素占1个字节。/ K( }/ M$ ?6 D* T
l 当biBitCount=4时,2个像素占1个字节。) R" h( g  t- v; W
l 当biBitCount=8时,1个像素占1个字节。
l 当biBitCount=24时,1个像素占3个字节。6 _7 P# ]& C( F
Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法如下:
DataSizePerLine=(biWidth×biBitCount+31)/8
这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的4字节对齐。
除了上述的Windows BMP以外,还有一种与其结构相似,但不完全相同的另一种BMP图像,即OS/2采用的BMP。其与Windows BMP的主要区别是位图信息结构(信息头结构和颜色表结构)不同。而它们的图像位数据的存储方式是完全一样的。本设计只讨论Windows系统下的BMP图像,故对OS/2使用的BMP不进行详细分析。
(4)、彩色深度(色彩位数)2 {1 K, g- B) G
反映对色彩的识别能力和成像的色彩表现能力,实际就是A/D转换器的量化精度,是指将信号分成多少个等级。常用色彩位数(bit)表示。彩色深度越高,获得的影像色彩就越艳丽动人。现在市场上的摄像头均已达到24位,有的甚至是32位
(5)、图像噪音* D1 ~+ t' \2 a9 ]0 y5 t, t
指的是图像中的杂点干挠。表现为图像中有固定的彩色杂点。6 B) b: Z5 h8 R0 I7 r1 j& o6 f
(6)、视角, H' z# f0 Q& u
与人的眼睛成像是相成原理,简单说就是成像范围。
(7)、输出/输入接口7 N  o8 w; [8 C6 ]$ N9 v
串行接口(RS232/422):传输速率慢,为115kbit/s
  并行接口(PP):速率可以达到1Mbit/s* u; C6 F, c  m( E& w
  红外接口(IrDA):速率也是115kbit/s,一般笔记本电脑有此接口
  通用串行总线USB:即插即用的接口标准,支持热插拔。USB1.1速率可达12Mbit/s,USB2.0可达480Mbit/s
  IEEE1394(火线)接口(亦称ilink):其传输速率可达100M~400Mbit/s

摄像头 - Camera sensor 基本知识相关推荐

  1. Camera sensor 基本知识

    一.Camera 工作原理介绍  1. 结构 .  一般来说,camera 主要是由 lens 和 sensor IC 两部分组成,其中有的 sensor IC 集成 了 DSP,有的没有集成,但也需 ...

  2. RK3288获取摄像头的Sensor ID【原创】

    平台信息: 内核:linux3.0.68  系统:android/android6.0 平台:RK3288 作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 说明:通过I ...

  3. Camera sensor 基本原理

    1 Camera 工作原理介绍 1.1 结构 . 一般来说,camera 主要是由 lens 和 sensor IC 两部分组成,其中有的 sensor IC 集成 了 DSP,有的没有集成,但也需要 ...

  4. Camera Sensor Binning skipping 模式介绍

    通常Camera Sensor 在不同的分辨率下会对应不同的帧率.想要提高帧率就要考虑是否需要缩小视野(FOV).若不希望视野缩小,又需要减少resolution, 常用的两种方式是Binning 和 ...

  5. 摄像头camera 旋转90度 解决方法

    拍照需要竖屏时的解决方法. zxing官方wiki上面的解决办法. 基本思路如下. There are 4 relative files: 1.manifest.xml, you need to ma ...

  6. Camera基础硬件知识

    目录 前言 一.sensor 1.曝光时间 2.硬同步 3.白平衡 二.ISP 1.Pipeline 2.SOF和EOF中断 3.图像数据 三.通信协议 1.I2C.SPI.UART 前言 本文主要记 ...

  7. 摄像头Camera视频源数据采集解析

    一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...

  8. Camera sensor bring up

    众所周知,camera在我们生活中应用十分广泛,在未来智能硬件社会,camera就是设备的眼睛,它的机器视觉也将扮演非常重要的角色.在我们移动设备终端中,我们知道camera模组是由镜头(lens). ...

  9. 摄像头Camera标定Calibration原理Theory

    摄像头Camera标定Calibration原理Theory cv2.cameraCalibration Pinhole camera calibration calls camera vision ...

最新文章

  1. 机器学习、深度学习所需掌握的数学知识全都在这里了!
  2. drupal常用api
  3. Thrown KeeperErrorCode = Unimplemented for /services exception
  4. iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
  5. 基于深度学习的目标检测方法综述
  6. boost::core::typeinfo的用法实例
  7. ConEmu状态栏的设置介绍
  8. 大端小端模式判断以及数据转换
  9. 2019年,ALEXA将会走向何方?
  10. 详细bugfree使用教程网址
  11. 后端架构高可用可伸缩
  12. 代码也能“杀”虫:此虫,真虫非Bug也
  13. Android8. 0 学习(33)--- msensor移植
  14. MapReduce:Simplified Data Processing on Large Clusters(中文翻译2)
  15. import package怎么用
  16. C++ 智能指针后面 . 与 -> 运算符的一点体会
  17. 【Tensor】(张量)的创建
  18. Android 手写板SDK
  19. vs code html插件_VS插件CodeRush全新发布v20.1.7|支持HTML
  20. 西门子atch指令详解_西门子plc指令中文详解

热门文章

  1. laravel实现redis队列秒杀
  2. 数字化时代-12:商品交换过程中的销售模式大盘点
  3. 超多、超新的电子图书共享网站
  4. ubuntu安装grafana_如何在Ubuntu 20.04 LTS Focal Fossa上安装Grafana
  5. 兄弟,你也不想有人知道你访问了xxHub吧?
  6. Vue.js中过滤器(filter)的使用
  7. vue过滤器filter中this指向问题
  8. 【项目日志】Java开发一个桌面应用程序——密码管家
  9. flac格式无损音乐如何转mp3格式
  10. 【无标题】.Net6开发winform程序使用依赖注入学习通http://www.bdgxy.com/