可编程逻辑
引言
随着测控技术及数字图像处理技术的高速发展,基于三角法线结构光的三维测量具有高精度、非接触、实时性和强主动受控性的特性,因此在现实中有广泛的应用,尤其是在计算机视觉、医疗诊断和工业检测等领域应用价值日渐增强。在结构光检测系统中,利用CCD相机以及工业相机摄取用线结构平面激光照射照在物体表面形成的光条纹中心信息,然后根据光条纹中心偏移量进行三维定标,这样可以得到物体表面的各类信息,比如表面的缺陷以及形变等。有鉴于此,线结构光条中心信息的图像处理在测量过程中就显得十分关键。虽然目前结构光中心线的提取方法有许多种,比如:阈值法、极值法、灰度重心法、方向模板法、Hessian矩阵法等,这些方法都有各自的优缺点以及一定的应用范围。基于数字图像处理的特点是处理的数据量非常大,处理非常耗时。所以本文研究了在FPGA上用硬件描述语言实现图像的中心线提取算法,采用了极值法、阈值法和重心法相结合的中心线提取方法。通过功能模块的硬件化,以便高速提取结构光中心线。结果表明,实验系统达到了基于视频速度的应用要求。
1 、系统硬件设计
图1为光条中心线提取系统的硬件设计框图。整个中心线提取系统主要有四个组成部分:
(1)视频数据编码模块:编码器采用ANALOG DEVICES公司的ADV7179芯片,该编码器能实现ITU—R BT601/BT656 YCrCb(其比例为4:2:2)格式的数字信号转为NTSC/PAL摸拟视频输出信号;
(2)DDR2 SDRAM存储器控制模块:选用两片MICRON公司的MT47H64M16 DDR2存储器来实现图像帧数的交叉缓存,为后面的中心线提取提供像素值以及坐标值;
(3)中心线提取模块:FPGA采用的是Altera公司Cyclone III系列的EP3C40F484C6芯片,该芯片价格低廉、实用性强,能充分发挥芯片的并行计算能力,实现中心线的快速提取;
(4)视频数据编解码模块:解码器采用TEXAS INSTRUMENT 公司的TVP5150芯片,该芯片低功耗,能解决视频输入输出同步问题,而且输出型号的特性可以通过I2C串行接口进行编程配置。
整个系统从CCD摄像机接收的模拟视频信号通过视频解码芯片解码后,转换成BT656(4:2:2)YCbCr SDTV(标清)格式的数字视频信号,通过一个FIFO来进行行/场消隐、解出同步信息等操作,之后提取图像信息的Y(亮度值)分量,然后在数据上传输。对于图像的传送采用两片DDR2来进行奇偶两场传送;同时对视频解码器输出的同步信号进行检测。当有效数据到来时,FPGA选择一片DDR2,使用隔行存储方式,完成一帧图像的存储,当第二帧图像有效数据到来时,FPGA选择另一片DDR2,以相同的方式完成第二帧图像的存储,依次交叉存储,然后经内部的处理模块处理后得到图像光带中心线坐标[8]。将提取的一行中心线坐标存储在RAM里面,再经过视频编码器将数字视频信号转换成模拟视频信号输出到显示终端显示。
2、 算法的FPGA实现
2.1 算法流程
我们首先以列扫描的方式读出一帧数据,并将读出的亮度值与所设定的阈值进行比较。滤除不需要的点,然后通过像素值比较得到像素值最大点,之后用最大点周边的3*3邻接点来进行灰度重心法计算出光条中心点。具体做法如下:
2.2 存储单元
对于算法的实现,还要考虑图像数据的存储结构。这其中包括:点存储器,用来存储需要运算的单个像素点;行存储器,用来缓存需要运算的图像的一行像素点;帧存储器,用来存储整帧图像。一般帧存储器都需要很大的容量,而FPGA内部实现起来比较困难,所以FPGA板都会增加外部存储器,由外部的DDR2 SDRAM 芯片实现[9];为了使进行运算的领域9个3*3的像素点能在同一时钟输出,便于进行之后的流水线算法模块,因此在3*3的滑动窗的硬件设计中,本文采用了2个RAM存储器来进行行存储。具体操作是:先用两个RAM存储器存储两行数据,等到第三行到来时,再将前两行的数据读出来,之后用9个寄存器存储这9个数据,以保证数据的同时获取[10]。存储结构见图2所示。
这样,当图像像素点串行输入时,经过这种结构的存储器系统,即可得到相应点进行灰度重心法计算所需的所有邻域点的并行输出。
2.3 运算单元
运算单元由乘法器和流水线加法树两部分构成,乘法器的作用是执行运算中的坐标值与像素相乘,流水线加法树的作用是提高运算速度以及减少运算单元占用的硬件资源,该加法数设计为4段流水线结构,第一段为6个2输入的8位乘法器和2个2输入的8位加法器以及2个延迟单元;第二段为2个2输入的15位加法器和2个2输入的9位加法器以及2个延迟单元;第三段为2个2输入的16位加法器和2个延迟单元;第四段为2个除法器,作用是将运算的像素与像素坐标值的乘积累加后除以运算的像素的累加值,输出的结果即为中心点 的坐标值。运算如图3和图4所示。
3、 FPGA实现的结果
本文FPGA采用的是Altera公司Cyclone III系列的EP3C40F484C6芯片,并在Altera公司的QUARTUS II 软件平台上,利用硬件描述语言Verilog HDL 表达实现。对于一幅大小为576行、720列的结构光条纹图像,以每秒25帧的速率到达时,利用配置为2.53GHz Intel CPU 、3GB内存的通用微型计算机通过软件编程的方式实现对一帧大小为576行、720列的图像进行提取激光中心线操作,耗时71.5 毫秒。而利用以上专用硬件实现的算法经过仿真的系统最高频率达到100MHz ,高出了系统像素点时钟频率(50MHz ),处理同样的一帧图像需耗时4.1毫秒,速度提高将近20倍,且FPGA逻辑资源占用16% 。足以在视频图像输入的同时完成计算,达到了设计目的。并将系统的采集图片与处理后的图片进行比较,处理结果图6图7所示。图6a、7a为采集图像,图6b、7b为MATLAB处理结果,图6c、7c为EP3C40F484C6处理结果。
实验结果显示可以看出:在精度上FPGA相比PC端稍好,体现在线条的细节表现及线条提取的平滑度上。而且在运行速度上,FPGA提取速度明显优于PC机提取的速度。但是不足的是由于模板所取的宽度较小,所以对于一些光带宽度较大,光强横向分布不均匀的图像,正如图7所示,则该方法提取的图形精度不高,图像较为不平滑。这些也将是下一步需要研究的内容。
4、 结束语
精度和速度是大数据量背景下中心线提取方法的核心指标,本文利用FPGA硬件电路的并行体系结构,将以FPGA为核心的实时处理系统应用结构光三维测量系统当中,以硬件形式实现图像光带中心线提取的算法,经过实验表明,对于这些宽度不大且分布均匀的结构光,该方法对中心线提取精确、快速。满足结构光三维测量的要求。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !