我们开门见山,先讲其最主要的不同点。我们都知道,OV7670和OV7620都是彩色摄像头,其感光像素为640*480的数字摄像头。他们之间有很多相似的参数,但是最大的不同就是,OV7670的像素输出格式为RGB565,而OV7620的像素输出格式为YUV422,这个不同点直接决定了其在智能车摄像头中的地位。在继续进行分析之前,我们先了解一点摄像头的小知识。
///---------------------------------------华丽丽的分割线-------------------------------------------///
【摄像头小知识】RGB565与YUV422的区别
1.什么是RGB565
众所周知,RGB是组成彩色的三基色,要想显示一个像素的颜色,每个像素都需要3个BYTE数据的R、G、B来表示,那一副320*240的彩色图像,就需要320*240*3=230400B=225KB的数据来存储,这样看来,存储图像的空间开销是极大的。而在一个像素RGB中,G分量的比重是最大的,R和B的比重相对小一些,因此人们又想出了用R:G:B=5:6:5的比例关系,来表示一个像素,这样一来,一个像素仅仅需要2个BYTE就可以表示其彩色信息(这个2个BYTE中,R占5bit,G占6bit,B占5bit),320*240的彩色图像的存储空间也由225KB减小到150KB。
2.RGB565是怎么存储的
摄像头的数据是在每一个PCLK的上升沿去读取的。若摄像头默认输出的格式为RGB565,那么摄像头在上电之后,每触发2个PCLK,读取2个字节,才是一个像素。在这个像素中,RGB的分布如下图所示:在第一个字节(First BYTE)中,Y[7..3]为R[4..0],Y[2..0]为G[5..3];在第二个字节(Second BYTE)中,Y[7..5]为G[2..0],Y[4..0]为B[4..0]
2.什么是YUV4:2:2
人的眼睛对低频信号比对高频信号具有更高的敏感度,事实上,人的眼睛对明视度的改变比对色彩的改变要敏感的多。因此,人们将RGB三色信号改为YUV来表示,其中Y为灰度,UV为色差。如果是表示一副彩色图像,同样的道理,YUV444是无损的存储方式,但是需要3个字节,存储空间开销很大。由于Y分量比UV分量重要的多,因此人们用YUV422来表示。这样一来图像被压缩了很多,一个字节就可以表示其彩色的信息。
///-----------------------------------------分割线完毕------------------------------------------------///
回归到OV7670 和OV7620 的对比中来。
刚才从小知识中,了解到OV7670 是RGB 输出,而OV7620 是YUV 输出,虽
然理论上明白了,但是大家可能还不知道实际对应摄像头是怎么输出的。
对于OV7670,由于它只有一组并行的数据口Y[7:0],所有的像素数据都从
这个数据口出,因此每次读取一次数据口,可以读一个字节(BYTE)。下图给出
了k 个像素(2K 个字节)输出的格式。
对于OV7620,它有2 组并行的数据口Y[7..0]和UV[7..0],其中对于数据口
Y[7..0],输出的是灰度值Y,对于UV[7..0]输出的色度信号UV。下图给出了k 个
像素(K 个字节)输出的格式。
对于智能车竞赛,赛道是白底黑线,因此我们只关心图像的灰度值,并不是
需要他们的彩色值。由此看来,对于OV7670,它只有一组数据口,默认输出
RGB 彩色图像,对我们来说并不是想要的;而对于OV7620,它有两组数据口,
一组数据口输出的正是灰度值Y,我们无需去管UV 引脚输出的信号,只采集Y
口的数据,就能完美地体现出赛道的信息来。对于全白的赛道背景,采集回来的
数据是255,对于黑色的赛道,采集回来的数据是0,这样就能很好的区别开赛
道与背景。
由此可以总结,OV7620 更适合做智能车摄像头。
1 什么是P制,什么是N制
当前在智能车竞赛中,我们用到的摄像头,基本只有2种制式P(PAL)制和N(NTSC)制。PAL制式和NTSC制式有很多区别,其中最主要的两个区别就是P制标准的摄像头,每秒输出25帧图像;N制标准的摄像头,每秒输出30帧图像。
智能车摄像头中的例子:
PAL制式摄像头:OV6620、sonyCCD、LG CCD OV5116等
NTSC制式摄像头:OV7620、OV7640等
2 视频是如何形成的
由于人眼看到的图像大于等于 24Hz 时人才不会觉得图像闪烁,所以 PAL 制式输出的图像是25Hz,每秒钟有 25 幅画面,即每秒25 帧;NTSC制式的图像是30Hz,每秒钟有30副画面,即每秒30帧。不同制式的摄像头,在这种规范下输出,人眼看到的图像也就形成了视频。
3逐行扫描与隔行扫描
所谓逐行扫描,即摄像头的像素自左向右、自上而下,一行紧接一行扫描输出(点击查看动态图);而隔行扫描,就是在每行扫描点数不变的前提下,将图像分成2场进行传送,这两场分别称为奇场和偶场。奇数场传送1、3、l 5、…奇数行;偶数场传送2、4、6、…偶数行(点击查看动态图)。
智能车摄像头中的例子:
逐行扫描:OV6620、OV7640等
隔行扫描:OV7620等
4 什么是消隐信号
消隐区的出现,在电视机原理上,是因为电子束结束一行扫描,从一行尾换到另一行头,期间的空闲期,这叫做行消隐信号;同理,从一场尾换到另一场尾,期间也会有空闲期,这叫做场消隐信号。
OV7620数字摄像头是一款非常适合用在智能车寻迹的一款摄像头,经过这么多届的历练,OV7620越发显得稳定和成熟。OV7620之所以为这么多人所采纳,原因是有几大优点:
第一,OV7620的电平兼容3.3V和5V。目前智能车用户用到的处理器基本上可以分为XS128和K60两种控制器,而这两种控制器的工作电平分别是5V和3.3V。OV7620可以完全适应这两种电平,XS128和K60可以随性切换,无需做电平匹配。
第二,OV7620的帧率是60帧/s。新手学习摄像头的时候,误以为摄像头帧率越快越好,其实不然。就拿OV7620来说,其PCLK(像素中断)的周期是73ns,该频率下的PCLK很容易被K60的IO捕捉,如果帧率更快的摄像头,其PCLK的周期就会更小,该频率下PCLK不易被K60的IO捕捉到。
第三:OV7620的分辨率也是非常合适的,在第三篇也提到OV7620是隔行扫描,采集VSYN的话,其输出分辨率是640*240。如果改为QVGA格式,默认输出分辨率是320*120,该分辨率下非常适合采集赛道,数据容量有限又不会失真图像。
在分析了OV7620的几大优势以后,下面开始本篇重点:OV7620时序分析。
对于OV7620,我们只关心场中断信号VSYN、行中断信号HREF、像素中断信号PCLK的波形。用示波器去监控这三个波形,可以看到一下关系。
VSYN 的周期是16.64ms,高电平时间为换场时间,约80us;低电平时间内像素输出。我们在采集VSYN脉冲时,既可以采集上升沿,也可以采集下降沿,采集下降沿更准确些,这也是一场的开始。从VSYN的周期可以算出,1s/16.64ms=60帧,OV7620的帧率是60帧/s。
HREF的周期63.6us,高电平时间为像素输出时间,约47us;低电平时间为换行时间,因此采集HREF一定要采集其上升沿,下降沿后的数据是无效的。从HREF的周期可以算出,16.64ms/63.6us≈261,除去期间的间隙时间,可以算出每场图像有240行。
PCLK的周期是73ns,高电平输出像素,低电平像素无效。PCLK是一直输出的,因此一定要在触发VSYN并且触发HREF以后,再去捕捉PCLK才能捕捉到像素数据。从PCLK的周期可以算出,47us/73ns≈640,可以算出每行图像中有640个像素点。
其实数字摄像头的时序非常简单,我们分析的目的也是为了从时序中得出摄像头的一些参数,至此,大家是不是对OV7620的时序以及OV7620的一些特点更加了解了呢。