FIFO芯片和单片机实现的图像采集系统

数字信号采集

8人已加入

描述

  在单片机应用系统中,由于图像采集速度、程序存储器和数据存储器的寻址空间的限制,要完整存储30 fps、640×480像素大小的一幅图像是相当困难的。本文运用较高性能的16位飞思卡尔单片机在超高频的情况下直接采集图像,也只能采集到每行320个像素,丢失图像,无法获得一幅完整的图像。本文通过在图像采集过程中增加FIFO芯片AL422B较好地解决了这一问题,相对于采用昂贵的DSP而言,降低了图像采集系统的成本。

  1 单目点光源测距原理

  野外作业时,需要在运动中知道前方标杆和观察点之间的距离。本文将标杆制成等间距红外点光源标杆,满足了基于单帧静态图像的小孔成像原理测距模型要求,减少了图像处理量,提高了测量的实时性、全天候性。H为各点光源标杆的实际距离;n为点光源个数,它可以通过图像处理获得;f为摄像头焦距;标尺实际像素物理距离h由摄像头标定取得。远距离测距原理示意图如图1所示,整条点光源标杆都在摄像头视野范围内。近距离测距原理示意图如图2所示,点光源标杆只有部分在摄像头范围内。通过图1,可求出前方标杆与观察点的距离D.摄像机的成像几何关系也可用小孔成像原理来近似表示:

  

fifo

 

  

fifo

 

  

fifo

 

  2 图像采集系统硬件设计

  根据单目视觉测距的要求,需要通过一黑白摄像头实时采集前车的点光源标杆,通过标尺上点光源所在的像素距离推算出前车距离。为了能完整地读取图像,本文增加了FIFO芯片,图像采集原理示意图如图3所示。由单片机监测摄像头的行/场信号,控制FIFO读取相应的图像;读完所有行后,关闭FIFO读取图像功能,开始由单片机从FIFO中读取图像数据,并进行相应的图像处理,根据图像处理的复杂程度,决定图像处理和图像采集的时间比。由于FIFO是先入先出,其读取数据时单片机只需通过中断使能行/场信号,绝大部分时间单片机可以用来进行图像处理。本文采取的是采集一帧图像后,单片机利用两帧图像的空闲时间和下一帧FIFO采集时间,共约3帧时间进行图像处理和控制,其结果是图像由原来的30 fps,变成10fps.尽管帧率慢了,但经过分析得知,在100 km/h情况下,滞后距离2.8 m,可以满足要求。

  

fifo

 

  2.1 飞思卡尔16位单片机MC9S12DG128

  本文采用飞思卡尔1 6位单片机MC9S12DG128作为主控芯片,该芯片是Freescale公司推出的S12系列微控制器中的一款增强型、汽车级的16位微控制器,片内总线时钟频率最高可达25 MHz,集成了8 KB的RAM、128KB的Flash、2 KB的EEPROM,集成度高,资源也相当丰富。

  2.2 摄像头芯片OV7670

  OV7670是OmniVision公司推出的Camerachiptm图像传感器,体积小,工作电压低。VGA图像最高达到30fps.其主要特性为:

  ◆感光阵列(共有656×488个像素,在YUV的模式中有效像素为640×480个);

  ◆高灵敏度适合低照度应用,对红外光线敏感;

  ◆标准的SCCB接口,兼容I2C总线接口;

  ◆RawRGB、RGB(GRB4:2:2,RGB565/555/444)、YUV(4:2:2)和YCbCr(4:2:2)输出格式;

  ◆支持VGA、CIF和从CIF到40×30的各种尺寸。

  2.3 FIFO芯片AL422B

  AL422B是AverLogic公司推出的一个存储容量为393 216字节×8位的FIFO存储芯片。其所有的寻址、刷新等操作都由集成在芯片内部的控制系统完成,AL422B内部功能结构框图如图4所示。

  

fifo

 

  AL422B主要特点是:

  ◆AL422B的存储体为3 Mb(393 21 6字节×8位);

  ◆可以存储VGA、CCIR、NTSC、PAL和HDTV等制式一帧图形的信息;

  ◆独立的读写操作,可以接受不同的I/O速率;

  ◆高速异步串行存取;

  ◆读写周期为20 ns;

  ◆存取时间为15 ns;

  ◆内部DRAM自刷新。

  3 图像采集系统程序设计

  3.1 系统实现

  要想在单片机应用系统中实现数字图像的静态存储,必须解决存储速度和存储容量两大问题。对于速度问题,需要对OV7670的数据输出时序进行分析,使其满足要求。VGA时序图如图5所示。其中PCLK为像素时钟,频率与主频一致,即27 MHz,上升沿时数据输出有效;VSYNC为场信号;

  HREF为水平参考信号,当像素在窗口有效时为高电平,否则为低电平;HSYNC为行信号;D[7:0]为8位数据输出。

  

fifo

 

  AL422B写操作时序图如图6所示,WCK为AL422B的写入时钟,周期最大为1000 ns,最小为20 ns(对应主频50 MHz);其上升沿时数据写入,随着该时钟输入其内部,写指针自动增加。可见,AL422B的速度满足设计要求。具体操作时,由单片机的I/O口控制AL422B的写使能/WE,使其为低电平,使能写功能,数据端DI7~0在WCK上升沿时将数据写入。写完一副图像后,由单片机的I/O口控制写复位/WRST,使其为低电平,使能复位,数据写入地址指针将回到0地址位。

  

fifo

 

  AL422B读操作时序图如图7所示。RCK为AL422B的读出时钟,周期最大为1000 ns,最小为20 ns,当/RE和/OE有效时,在其上升沿数据有效,随着该时钟输入,其内部的读指针自动增加。当单片机的主频为25 MHz时,还不能直接给OV7670的系统时钟XCLK提供时钟,我们采用外部晶振提供27 MHz的同频信号给OV7670。

  

fifo

 

  图像采集电路原理图如图8所示。OV7670的像素时钟PCLK直接和AL422B的数据读入时钟WCK相连,具体操作时,由单片机的I/O口控制AL 422B的读使能/RE和输出数据使能/OE,使它们为低电平;使能数据读出功能,数据端DO7~0在RCK上升沿时将数据输出给单片机。读完一副图像后,由单片机的I/O口控制写复位/RRST,使其为低电平,使能复位,数据读出地址指针将回到0地址位。

  

fifo

 

  3.2 程序设计

  程序设计流程如图9所示。当单片机检测到场信号更新后,开始监测行信号到达,之后使能/WE,开始顺序读取图像。读完一帧图像后关闭/WE,单片机使能/RE,开始读取首行图像中的640个像素。本文采取边读边处理的方式,较好地解决了一帧图像多达3 MB的问题。点光源标杆发出的红外光线在图像上呈现出若干个光晕区域,找到光晕中心就可以找到点光源的图像坐标,为此在读取的同时将各像素点与阈值进行比较,小于阈值的为疑似点光源并记录对应坐标;当读取完一行像素时,得到的将是一组疑似点光源坐标的像素位置,将其进行统计求平均,得出点光源在该行的坐标,最多12个字节(正面标杆6个,某侧标杆6个),远远小于整行640个字节。

  

fifo

 

  当读取完一帧像素时,得到最多12×480个字节,单片机64 KB的容量完全可以存储,最后将行求平均,得出最终的点光源坐标。经验证,所需总时间在2.15帧图像内完成。

  结语

  文中讨论了基于FIFO芯片和单片机实现的点光源图像采集系统,描述了单目点光源测距原理、图像采集系统硬件和软件设计方法,着重介绍了FIFO芯片在图像采集中的桥梁作用。通过系统样机检验,能够满足要求,达到了预期效果。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
COLUMN 2014-10-20
0 回复 举报
如果是最简单的读取一幅图,OV7670+FIFO模块,上面说OV7670的像素时钟PCLK内部直接和AL422B的数据读入时钟WCK相连,那就不需要控制CMOS写入FIFO了,直接就可以控制读取的相关引脚用IO口读入了吗?新人求教 收起回复
飘过来的灵魂 2014-08-18
1 回复 举报
32个赞 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分