王院生,余 娟,路桂英,张永权
(中国地质大学(武汉) 机械与电子信息学院,湖北武汉430074)
视频图像采集、光电跟踪系统是许多动态目标跟踪控制系统的前端系统和重要组成部分,基于光电跟踪技术的两轴转台在航天、军事、交通等领域应用广泛。近年来,数字图像处理技术、集成电路和微处理技术的发展,为视频图像采集系统中的动态目标跟踪提供了解决问题的新思路和新方法[1]。如何利用人工智能、图像识别、先进微电子技术实现对目标的采集和精确跟踪是目前的研究重点。如今,在跟踪伺服系统中已广泛采用滤波技术等提高图像精度,集成电路和微处理机等现代先进技术也逐渐被应用在光电经纬仪等产品中。本文将基于FPGA的图像采集处理系统运用于两轴测试转台中,动态配置灵活;并进行滤波等图像预处理,满足转台的图像处理、光点跟踪使用要求,提取图像光点中心坐标。
本系统主要实现的功能是两轴转台中光点目标跟踪的视频图像采集、显示与光点中心坐标的提取。所设计的图像光点跟踪系统主要用于两轴测试转台的惯性导航测试、视频跟踪等,能进行视频采集,捕捉光点位置,显示光标。
基于FPGA的图像光点中心坐标提取系统电路部分以FPGA为核心,以CMOS摄像头、数字存储器、LCD显示组件等作为FPGA外设,最终实现对实时图像的采集、存储、显示与光点中心坐标的提取。采用Altera CycloneⅡ的EP2C8Q208C8N作为主控制芯片,选用EPCS4SI8为FPGA的配置芯片,CMOS数字图像传感器OV7670作为图像信息采集设备,在LCD显示终端显示实时图像。系统结构框图如图1所示。
电路采用模块化设计,分为视频采集模块、PLL锁相环时钟管理模块、I2C总线模块、SDRAM视频数据处理模块和LCD显示驱动控制模块。图1中的数字摄像头模块中含有OV7670图像传感器,它是标准的SCCB接口,并兼容I2C接口,本系统中选择I2C接口协议对OV7670进行寄存器初始化配置。摄像头把接收到的光信号输出成模拟视频信号,然后经过OV7670图像传感器进行A/D转换,得到RGB565格式的数字信号。随后,这些数字信号被输送给FPGA处理,FPGA进行场、行扫描,一帧一帧地采集图像数据;利用写SDRAM异步FIFO将数据输送给SDRAM控制器,然后,又通过读SDRAM异步FIFO将SDRAM控制器缓存的数据输送给LCD显示驱动控制模块[2-3]。最后,LCD显示驱动控制模块按照LCD时序要求将视频图像数据和控制信号通过转换,不断地读出新的实时图像,并且驱动320×240的真彩液晶屏工作。
图1 系统结构框图
FPGA硬件电路在QuartusⅡ9.1开发环境中使用Verilog HDL硬件描述语言设计。按照层次化设计的思想,建立了一个工程项目,在项目的顶层设计文件中,对内部各功能模块的连接关系和对外接口进行例化描述,然后分别对各个功能模块进行细化设计。
I2C总线模块设计有2个子模块,一个用来产生I2C总线规范的时序,另一个用来产生需要配置的寄存器地址和配置参数。用I2C接口配置OV7670图像传感器时,过快的系统时钟频率可能会导致传感器来不及响应,所以要控制其时钟频率来获得合理的响应时间,本文设计了一段式状态机进行通信,如图2所示。首先,在状态变迁中进行一个状态监测,判断是否发出一个读或写I2C指令,没有发出则一直保持DIDLE闲置状态,否则进入DSTAR开始状态。此外,DWRDB为写数据状态,DRDDB为读数据状态。随后依次检测是否处于所需时序变化点,并进行相应的状态变迁转换。
图2 I2 C时序控制状态机
LCD显示驱动控制模块的内部逻辑功能部分如图3所示,FPGA与LCD接口的信号包含LCD驱动时钟(lcd_clk)、LCD复位信号(lcd_rst_n)、场行同步信号(vsync、hsync),FPGA通过这些信号来产生能和LCD操作时序匹配的控制信号,并通过从SDRAM中读出显示数据(vga_rgb)进行显示。系统选用RGB565彩色模式,所以总共会产生16位视频数据流。
图3 LCD显示驱动控制框图
由于系统时钟为50 MHz,而LCD时钟通常为6.25 MHz左右,因此采用时钟分频计数单元产生LCD时钟。X,Y坐标计数器(x_cnt,y_cnt)一方面通过计算LCD液晶屏的显示计数范围,从而产生数据的有效显示标志位信号,以及相对应的场、行同步信号,另一方面还控制FIFO读请求信号的生成。外部的SDRAM控制器在每一个场信号的开始都会初始化清空FIFO,然后保持FIFO中有数据(但不溢出)可供当前显示。当每次FIFO读请求信号被拉高即有效后,该模块就会锁存相应的FIFO输出显示数据[4]。最后视频数据从SDRAM读出,转变成RGB模式供图像显示。
为实现光点跟踪,首先要对光点中心坐标进行提取。由于本系统中光点相比视场背景较亮,所以,可以利用对比跟踪算法中的峰值跟踪法提取光点,其依据是在目标图像中找出最亮点。但由于有噪声等干扰的存在,为了能更准确地提取光点坐标,应先对图像进行滤波预处理。
由于本系统主要针对光点的干扰进行滤波处理,所以可以选择处理速度较快的邻域平均法滤波。如图4所示,邻域平均法就是把相邻像素的相应分量值的平均值作为中心点像素相应分量值[5-6]。即以f(x,y)像素点为中心,取N×N(N=1,3,5,…)窗口的像素点组成点集合A,经邻域值加权平均后求取的分量值作为该中心点f(x,y)的分量值。系统采用图像的灰度值提取光点坐标,因此分量值只有灰度值。
图4 图像4邻域像素点示意图
为减小此方法图像处理的模糊程度,可合理选取邻域窗口,具体做法是先找任意像素点有重叠的邻域窗口,并把其中灰度变化最小的窗口作为均匀窗口,用其平均灰度值作为该像素邻域平均灰度值[7]。
以单位距离为半径选取邻域,采用如图4所示的4点邻域平均法,所取的邻域点为
在此设定f(x,y)中心点的灰度权重为2,邻域点权重值为1,则可取3×3高斯模板为
然后,构造以f(x,y)为中心点的图像块为
则f(x,y)的邻域平均灰度值为
对所检测帧的图像逐点求取其邻域平均灰度值,就可得到一帧完整的滤波后的灰度图。
峰值跟踪法能跟踪任意大小的目标图像,且更适合跟踪小目标。在这个系统中,通过对滤波处理后的图像进行逐点比较,寻找灰度值最大点为最亮点,即为光点坐标。首先用波门限定光点目标存在区域,然后在该区域内寻找灰度值最大点[8]。用数学式表示为
但实际上具有最大灰度值的像素点往往不止一个,即P(x,y)是一个集合,是一个图像块,因此在找到灰度值最大的图像块之后,还需求取坐标的平均值才近似为光点的中心坐标
式中:n为具有最大灰度值像素点的个数;Pi(x,y)为图像块中的第i个像素点。
通过以上处理方法,可以将光点中心坐标提取出来。部分Verilog HDL程序如下所示:
在QuartusⅡ9.1开发环境下将所设计的电路下载配置到FPGA中,复位后电路正常工作,液晶显示器上显示出清晰的画面。当视场中没有明显的光点时,十字光标处于不停的跳动状态;当用激光灯在摄像头前晃动时,十字光标跟随光点的中心位置移动,如图5所示。
图5 结果显示实物图
本文针对两轴转台的工作原理及需求设计了基于FPGA图像采集、处理、显示及目标光点中心坐标提取的子系统。系统中FPGA的应用,使得各个模块能并行运行,处理速度块,实时性好。在提取光点中心坐标前,利用4邻域平均法对图像进行滤波,以及基于峰值跟踪法的光点中心坐标提取增加了目标提取的准确性。最后的实验结果表明,该设计能够准确提取光点的中心坐标并进行十字光标跟踪,符合两轴转台的使用要求。
[1]王德胜,康令州.基于FPGA的实时图像采集与预处理[J].电视技术,2011,35(3):33-35.
[2]刘松,付扬,郭培源.基于FPGA的数字视频监控系统设计[J].电视技术,2010,34(3):92-94.
[3] HU J S.The research into the key problem of multi-channel video acquisition and display system based on FPGA[J].Materials Science and Information Technology,2012(433/440):5611-5615.
[4] 吴厚航.爱上FPGA开发——特权和你一起学NIOSⅡ[M].北京:北京航空航天大学出版社,2011.
[5]曹振华.嵌入式实时系统图像滤波算法研究[J].苏州大学学报:工科版,2010,30(1):37-41.
[6]滕召荣,蒋天发.邻域平均法对矢量图平滑处理[J].现代电子技术,2009,32(14):75-77.
[7]韩殿元.简单邻域平均图像去噪算法的改进研究[J].潍坊学院学报,2006,6(6):12-14.
[8]杨烜,裴继红,杨万海.实时光点检测与跟踪方法研究[J].红外与毫米波学报,2001,20(4):279-282.