基于OV2640/ OV5640 的图像采集显示系统系列文章目录:
(1)基于 OV5640 摄像头理论知识讲解-成像和采样原理
(2)基于 OV5640 摄像头理论知识讲解-数字接口和控制接口
(3)基于 OV5640 摄像头理论知识讲解-典型工作模式配置
(4)基于OV2640/ OV5640 的图像采集显示系统
文章目录
- 前言
- 一、OV5640 摄像头介绍
- 二、硬件电路说明
- 三、CMOS 图像传感器成像原理
前言
基于 OV5640 摄像头理论知识讲解-成像和采样原理。-
提示:以下是本篇文章正文内容,下面案例可供参考
一、OV5640 摄像头介绍
OV5640_V5( V5 是版本号,下面均以 OV5640 表示该产品)是芯路恒科技推出的一款高性能 500W 像素高清摄像头模块。该模块采用 OmniVision 公司生产的一颗 1/4 英寸CMOS QSXGA( 25921944)图像传感器 OV5640,配合高质量的光学镜头及为实现更高性能而精心设计的 PCBA,使该模块拥有了尽可能高的成像质量。OV5640 模块的特点如下:
1.4μm1.4μm 像素大小,并且使用 OmniBSI 技术以达到更高性能(高灵敏度、
低串扰和低噪声)
自动图像控制功能:自动曝光( AEC)、自动白平衡( AWB)、自动消除灯光条纹、
自动黑电平校准( ABLC)和自动带通滤波器( ABF)等。
支持图像质量控制:色饱和度调节、色调调节、 gamma 校准、锐度和镜头校准等
标准的 SCCB 接口,兼容 IIC 接口
支持 RawRGB、 RGB(RGB565/RGB555/RGB444)、 CCIR656、 YUV(422/420)、 YCbCr
( 422)和压缩图像( JPEG)输出格式
支持 QSXGA( 500W)图像尺寸输出,以及按比例缩小到其他任何尺寸
支持图像缩放、平移和窗口设置
支持图像压缩,即可输出 JPEG 图像数据
支持数字视频接口( DVP)
自带嵌入式微处理器
集成 LDO, 仅需提供 3.3V 电源即可正常工作
二、硬件电路说明
OV5640 模块对用户提供一个 20 针的排针接口,模块的 2*10 接口信号图如下所示:
下表为该接口上各个信号的功能介绍。
注意:OV5640 芯片 DVP 接口本身拥有 10 位的数据线,可以输出 10 位的 RAW 数据,但是在大多数情况下,使用高 8 位数据即可,因此模组在设计时,仅使用了 OV5640 芯片的D9-D2 高 8 位,映射到模组上的 OV_D7~OV_D0。
三、CMOS 图像传感器成像原理
OV5640 是一个典型的 CMOS 图像传感器,作为一个图像传感器,其主要作用就是将现实中的各种光线转换为数字系统能够识别的数字信号,光线中三元色各个颜色的强度本身是模拟信号,所以图像传感器的最基本的原理就是进行模数转换,将光线这个模拟量转换为数字信号。
仅仅有模数转换功能还不够,我们还得先搞清楚另一个问题——光线是一种怎样的模拟量。
光线是一种怎样的模拟量呢,这个在初中物理中已经有过详细的介绍。我们都知道,自然界中的光,实际上是三种基本单色光的组合,这三种基本单色光为红(RED)、绿(GREEN)、蓝(BLUE),我们称之为三原色。通过将这三种基本颜色按照不同的比例混合,就可以得到其他的任意颜色。例如纯黄色是由红色和绿色按照一比一的比例混合得到的,蓝色量为 0。下图为三种颜色混合得到几种常见颜色的示意图。
既然已经知道,每一束光线都可以理解为三原色按照不同比例混合得到的效果,那么我们只要想办法知道该束光线的三原色的比例,然后用颜色加比例的表示方法,就能唯一确定这束光线的最终颜色了。所以图像传感器里面所谓的模数转换,实质就是对一束光线的三原色的强度进行转换,将三原色中每一种颜色的强度转化为数字信号。再用颜色加数字的方式来表示该束光线的真实颜色。
这里,假如我们对三原色中的每一种基本颜色的强度都分为 256 级,那么每一种基本颜色的强度就可以用一个 8 位的数字来表示,0 表示该颜色强度最弱,或者说无该颜色分量,255 表示该颜色强度最强。这样一来,我就可以用一个 24 位的数字来唯一表示该光线的颜色了。下表为上图中几种颜色的对应三原色的数值。
这种表示颜色的方法就是最常见的 RGB888 格式。所谓 RGB888 就是使用 3 个 8 位的数据表
示一种颜色,其中高八位表示红色分量,中八位表示绿色分量,低八位表示蓝色分量,上述 8 种颜色用 RGB888 格式表示就如下表所示:
行转换得到数字信号,就能唯一表示该颜色了,但是接下来,另一个问题又出现了。如何才能对一束自然光中的三原色的强度分别进行模数转换呢?这就涉及到对一束光的三原色分离。
所谓对光的三原色分离就是通过某种手段,将该束光线中的三种颜色分别独立提取出来,当三种颜色都独立的提取到之后,就能使用模数转换器对该颜色的强度进行转换了。三原色分离的原理其实非常简单,就是使用单色滤光片,
如上图,通过加入滤光片,就能让对应颜色的光线通过滤光片到达感光元件,通过这种方式,只需要三个不同颜色的滤光片,就能对一束入射的复合光线进行分离,得到三原色,然后使用模数转换器对感光元件感应到的单色光的光照强度进行转换,就能得到该单色光的强度数字值了。
但是,通过上述分析我们也发现一个事实,那就是一个感光元件只能对一种颜色的光进行感应,如果要对一束光线中的三种颜色分别感应,就需要三个感光元件。如果对应到CMOS 图像传感器里面的概念来说,这每一个滤光片加感光元件都是一个像素。注意这个概念,每一个滤光片加感光元件都是一个像素,那么从反面来说就是,每个像素都只能感应一种颜色的光线。所以,下次看到某某图像传感器宣传其有多少多少万像素大小时,作为半专业人士的我们,要在心里默念,这只是物理像素个数,实际上每个像素只能感应一种颜色。
既然每个像素只能感应一种颜色,那么新一个问题又来了——如何才能得到某束光线的三种颜色分量的值呢?答案就是使用至少 3 个像素,每个像素感应该束光的一种颜色,然后三个像素就能把该束光的三种颜色分量全提取出来了。但是,实际上使用 3 个像素来提取一束光的三种颜色分量,理论上可行,但是实际上却存在 3 个像素间摆放位置的物理限制,首先是如何让该束光线能够均匀的照射到感应三种颜色分量光线的像素上的问题,其次还要知道,一个图像传感器,并不是只感应一束光,是要感应成千上万束细小的光束,每一束光线都需要有对应的像素组来提取其三种颜色分量。因此,像素和像素之间的物理摆放问题也是需要认真考虑的问题。同时,还得兼顾考虑这种摆放模式下图像传感器的可生产性问题。
正是为了解决这些问题,诞生了著名的拜尔(以下简称 Bayer)矩阵。Bayer 矩阵定义,感光像素矩阵中,奇数行间隔放置绿色和红色感应像素,偶数行间隔放置绿色和蓝色感应像素,奇数列间隔放置绿色和蓝色感应像素,偶数列间隔放置红色和绿色感应像素,其输出数据格式如下图所示。
根据这种分布规律,在 Bayer 矩阵中,以相邻的四个像素作为一组,在该组中,有两个感应绿色分量的像素呈对角分布,另外两个像素则分别对应感应红色分量和感应蓝色分量。
通过这样一种方式,我们可以发现,任取一个像素,其与相邻的 3 个像素组成的矩阵中,总符合这样的规律。不同的只是三种颜色的像素所在的位置的差异。下图为图像传感器手册中给出的像素物理分布图。
而且通过对上述 88 的矩阵进行分析发现,在整个矩阵中,像素的位置关系有且只有下面四种情况:
所以,在实际颜色提取时,需要通过数据转换,将相邻四个像素的数据通过插值算法合并为一个 RGB 像素颜色,此种转换算法名为 RAW2RGB,这里取左上角四个像素点的数据为例,具体颜色转换算法如下所示:
保留相邻四个像素中的红色和蓝色分量,而对两个绿色分量求平均,得到新的绿色分量,此三种颜色分量组成一个新的 RGB 格式的像素,新的像素色彩组成如下所示:
按照这样的思路,整个图像传感器中的每一个像素都可以以不同的角色参与 4 次运算,并最终得到 4 个 RGB 颜色值,所以理论来说,还是可以认为一个图像传感器有多少个物理像素,就能得到多少个 RGB 格式的像素值,虽然每个物理像素都只能感应一种颜色。但是进过插值运算后,其能输出 RGB 的数据格式的像素数量还是等于其物理像素个数的。有了 Bayer 像素矩阵后,只需要使用一个模数转换器,依次对每一个像素的感光元件感应到的模拟量进行转换并输出,就能得到一幅完整图像的原始像素信息了。下图为OV5640 图像传感器的功能框图。
通过该图可以看到,该图像传感有一个基本的像素矩阵,在图中名为 image array,该像素矩阵共有 25921944 个物理像素,2592*1944=5,038,848,这也就是我们常说的 500 万像素的由来。在像素矩阵外围,有一个 row select 功能模块来选择当前输出哪一行的像素,和一个 column sample/hold 电路来依次采样每行像素中的每一个像素的感光元件感应结果(模拟信号)并输出到信号放大器(AMP),经由 AMP 对该信号放大之后,送给 10 位的模数转换器(10-bit ADC)进行模数转换。
至此,关于 OV5640 的第一大基本功能——成像和采样原理,就介绍清楚了。