基于FPGA并行处理的实时图像相关速度计

   2024-01-18 互联网1230
核心提示:  摘 要:研究制作了一种采用高速线阵CCD的实时相关速度计,其测量数据的输出速率可达每秒一万次。针对以往光学相关测速方法的

  摘 要:研究制作了一种采用高速线阵CCD的实时相关速度计,其测量数据的输出速率可达每秒一万次。针对以往光学相关测速方法的问题进行了讨论,探讨了适合FPGA并行处理的算法,制作了高速线阵CCD摄像机及其处理装置。通过实验验证了系统的可行性和可实现性。

  1 引 言

  采用光学传感器和信号相关处理器对运动物体进行非接触测速的技术已经在许多领域得到了实际应用,然而在诸如高速发动机偏芯检测、高速流体测量、高速传送带加减速过程测量等应用场合,需要在时间轴上得到更为精细的速度数据。在现有技术中,常见的方法只利用了两个光学传感器的信号进行相关,由于信息获取量不足,不能得到精细的速度变化过程[1];采用面阵CCD对采集到的图像进行相关匹配的做法虽然可以提高空间的采样率[2],但相关处理运算量大,难以实现实时在线检测;其他诸如过零相关法[3]、半极性相关法[4]、利用透镜阵列对照片上多点同时进行变换的并行光学处理方法[5],在一定程度上提高了系统的实时性,但仍然不能同时满足高精度和高速度的需求。

  本文正是根据这种需求,以高速线阵CCD和大规模逻辑电路FPGA作为信息采集手段和相关处理手段,研究了硬件并行处理所适合的相关算法,实现了测速频率高达每秒一万次的实时测速。

  2 系统构成原理

  图1是本系统使用激光照明,利用激光在运动物体表面造成的散斑来获取灰度起伏明显的图像信号。由于物体在运动方向上的位移,在线阵CCD上面,前后两帧之间的光强分布波形非常相似并有相应的空间位移(图2)。

  前后两帧信号的互相关函数定义如下

  式中。为做相关运算;Pk(i)为第k帧的光强分布;P(i,k)为第k帧图像中第i个像素的灰度值;n为CCD的n个像素;m为最大位移对应的像素个数。相关函数Rk,k-1(r)意味着在第k帧和前一帧相对有r个像素的位移时,两帧信号之间的相似性大小。由相关函数的性质可知当r等于两帧信号的实际位移时,相关函数将会达到其最大值。

  在实际应用中,系统的设计还需要综合考虑光学系统的缩放率β以及CCD的像素尺寸σ′等参数。若设物方的相对移动量在像面上对应的移动量为Δs′,则下述关系成立

  根据相关函数的性质,当r = r0时Rk,k-1(r)将会达到其最大值,所以,在光学系统缩放率β不变的前提下,物体的运动速度v和r0呈线性正比关系。因此,测速系统的主要目的就归结为求出这个r0,也即求出相关函数最大值的位置。

  3 测速系统的实现

  为了实现瞬时速度的测量,需要采用高帧频的CCD以尽量缩小两帧的时间间隔Δt;同时为了保证测速精度,降低噪声的影响,需要大量的样本参与相关运算,CCD的像素数不能太少。本系统采用帧速为10000fps、n=2048像素的线阵CCD作为图像传感器。

  考虑尽可能提高可测物体速度,CCD上两帧之间的最大移动距离选为m=128像素。距离过短时将会降低最大可测速度,反之过长时,由于图像中可能出现小的相似区域,相关函数将会出现多个峰值。在n=2048像素、m=128像素的条件下,用公式(1)计算相关函数时需要在10-4s内完成n×m=26万次乘加运算和128次除法运算,即要求运算速度至少达到每秒2·6G次,显然这个速度要求不仅对CPU来说是难以实现的,存储器的速度也是难以达到的。

  近年来FPGA的急速发展带来了并行处理的可能性,如何针对FPGA的特点对式(1)进行变形找出最适合FPGA并行处理的算法就是本文的一个关键点。

  3.1 并行算法设计

  参见图3,选取CCD中间的N=1792个有效像素作为参与相关运算的原始数据。

  设ai= P(l+ i,k),bj= P(l+j,k-1),(i=1,2,…N),将式(1)简化为式(5),去掉了除法运算,这样并不影响求出位移偏移量。

  参见式(7),首先把相关函数计算公式写成矩阵形式,将矩阵分块处理,按时间流程将矩阵分为N块,然后在FPGA内部准备m=128个累加器对应128个相关函数的向量。在处理CCD输入数据的流程中,每当一个新的样本ai进入时,就和前一帧的样本向量相乘,128个累加器同时进行并行累加动作,对R0到Rm-1各个分量同时进行一次数据更新。这样在一帧结束后,即可在累加器中得到128个相关函数。这种做法省去了存储器操作,只在FPGA内部占用128个累加器,消费资源大为减少。同时,由于128个累加器并行工作,相当于128个专用CPU并行处理,大大地提高了系统的实时性。

  3.2 二值化相关运算

  对于速度测量而言,我们关心的是相关函数Rr的最大值的位置,而并不关心相关函数本身的数值大小,在实用中可以将第k帧中的数据和第(k-1)帧对应的数据进行二值化,以获得更简洁的处理方式,进一步降低逻辑规模。

  本文采用移动平均法将灰度值P(i,k)二值化为P′(i,k)。

  这样ai和对应bj的乘法就转化为“同或”运算,而前述累加运算变为用计数器来统计“1”的个数,整个相关运算只需要m个同或门和m个计数器即可。

  具体做法如图4所示。前后两帧的样本在同步时钟驱动下,送入相关模块的端口A和B,其中前一帧数据bj被128个移位寄存器展开。随着一帧数据的进入,相关处理器在N个时钟周期后,将同时得到m个R(r)值。

  3.3 峰值坐标细分

  前面讨论了基本相关运算的算法和逻辑结构,得到的位置测量精度为1个像素,其测速误差为

  在本系统中,像素大小ds=14μm,t=10-4s,dt和硬件设计中晶振的时间精度有关,通常在皮秒级,可以忽略不计,所以测速精度主要取决于像素大小ds。最大位移量为m时,每移动一个像素,对应得到一个R(r)(r∈Z,0≤r≤m)。测出的速度只有m=128档。

  为了进一步提高测量精度,采用求重心法对相关函数最大值附近的数据进行了8细分运算,这样在CCD像面上的测速精度可达到

  4 系统制作和实验结果

  按照以上方案制作了线阵摄像机和相关处理器,测速系统原理框图见图5。

  使用这套测速系统进行了评价实验,采用一个滚筒作为观测对象,实验结果见图6。其中,横坐标T代表帧序号,纵坐标r代表Δt内移动的像素数(8细分以后的值)。r=128时,对应速度为零。r<128时,对应的速度为与线阵CCD扫描反方向的速度。图6(a)显示了一个滚筒的速度下降过程的实验结果。最初滚筒运动在100μs内造成的像面上移动像素数约为(150-128)/8=2·75像素,速度下降至零大约经过了500×100μs=50ms,实现了对整个降速过程的速度实时跟踪。图6(b)捕捉了摄像机受到轻微冲击后的瞬间速度变化过程,可以看出,速度剧烈变化后便以接近正弦波的形式衰减至零,受冲击影响的时间约为(61-15)×100μs=4·6ms。

  5 结 论

  探讨了采用线阵CCD和FPGA的实时相关测速方法,研究了适合硬件并行处理的算法,制作成功了一套实时测速系统。该系统的测量速度可达每秒10000帧,最大可测物体的运动速度可达每帧128像素;在处理上参与相关运算的像素数多达1792个,保证了相关函数的计算精度;另外,在输出机构上采用8细分的重心运算,进一步提高了测量的分辨率。经初步实验结果表明,本文所提出的方案和具体实现方法是可行的,可以对速度变化剧烈的物体进行精细测速和过程跟踪。

  参考文献:

  [1]沈熊,张松,董鹏,等.激光测速数字相关信号处理器的研制[J].实验力学,1998,13(3):294—301.

  [2]陆耀军,董守平.二维粒子图像测速系统的研制[J].实验力学.2001,16(3):338—346.

  [3]陆金铭.过零极性相关法在单相流体流速测量中的应用[J].华东船舶工业学院学报,1994,8(1):31—35.

  [4]陈长缨,郑莹娜,刘强.激光相关测速中的半极性相关方法[J].中国激光,1999,(8):749—754.

  [5]罗罡,何振江,陈卫,等.并行激光散斑测速技术中光学参数之间的制约关系[J].光学技术,1997,(5):47—50.

  作者简介:周瑛(1981-),女,重庆市人,北京理工大学硕士研究生,从事实时图像采集处理研究。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅