一种基于FPGA的结构光算法优化加速方法与流程

文档序号:33181372发布日期:2023-02-04 05:04阅读:67来源:国知局
一种基于FPGA的结构光算法优化加速方法与流程
一种基于fpga的结构光算法优化加速方法
技术领域
1.本发明涉及fpga硬件算法加速领域,更具体的,涉及一种基于fpga的结构光算法优化加速方法。


背景技术:

2.3d结构光是一种基于结构光测量法的非接触测量方式。通过投影设备对被测物体投射带有编码信息的结构光,用摄像装置记录下结构光图像序列,利用特定的算法,得出被测物体的三维数据。3d结构光具有检测速度快、精度高等特性,在消费电子行业的在线检测,汽车行业零部件的三维扫描、曲面特征获取、复杂结构研究具有广泛的应用。但是结构光算法通常采集和运算的数据量较大,单一使用处理器的方案需要的运算时间较长,无法满足快速实时在线测量的要求。


技术实现要素:

3.为了解决上述至少一个技术问题,本发明提出了一种基于fpga的结构光算法优化加速方法。
4.本发明第一方面提供了一种基于fpga的结构光算法优化加速方法,包括如下步骤:
5.s1,处理器接收相机采集的图像数据,并将图像数据下发至fpga;
6.s2,基于格雷码投影的结构光成像技术,利用格雷码对每个相机像素在光机上的位置进行粗定位,再利用移动条纹技术对每个格雷码周期内的像素在光机上的位置进行精定位,重建三维形貌信息;
7.s3,fpga端依次完成图像预处理、多种曝光图片的hdr融合、格雷码解码、移动条纹解码、相位合成,在pc端完成点云的重建;
8.s4,通过利用fpga并行处理、流水线的方式,在pc端下发数据的同时,实时完成图像预处理、hdr融合、格雷码生成、移动边沿条纹做差;
9.s5,取出格雷码解码,同时对移动条纹解码,两者合成得到最终的相位数据;
10.s6,将相位数据上传至上位机。
11.本发明一个较佳实施例中,步骤s4与步骤s5中fpga端算法实现步骤如下:
12.在fpga中对原图先进行降噪操作,通过在fpga端缓存5行图像,并滤出图像中的个别毛刺数据;
13.通过采集低曝光和高曝光的图像,而后进行合成;
14.fpga通过缓存奇数帧号的图片,在偶数帧号的图片输入时,同步读出奇数帧号的图片,并与之作差,得到一组差值数据;
15.读取差值数据,对移动条纹的边沿亚像素进行定位;
16.获得相同位置的条纹差值数据,计算亚像素位置,得到中间结果数据;从内存中读出格雷码数据,实时进行格雷码的解码,将中间结果数据和格雷码解码数据进行计算合并
得到最终的相位数据。
17.本发明一个较佳实施例中,fpga端算法中采用8级格雷码,共9张图片,其中1张是1级格雷码的反色图,由1级格雷码和其反色图生成阈值图和格雷码图,并存入fpga内存中;
18.随着格雷码投影图的数据流入,同步读出阈值图t和生成的格雷码图g,并更新格雷码图g写入内存;
19.在9张格雷码投影图输入结束后,格雷码图g生成完毕,并保存在fpga的内存当中。
20.本发明一个较佳实施例中,相位数据通过pcie接口上传至上位机,进行高吞吐的数据交互,并将运算的结果数据快速上传至处理器。
21.本发明的上述技术方案相比现有技术具有以下优点:
22.本技术提出了一种基于fpga的结构光算法优化加速办法,通过将部分运算实现在fpga端进行硬件加速,而后再由上位机获取fpga运算之后的结果进行最终计算,通过流水线的办法大大提升了算法的运算速度,满足了工业领域在线快速检测的需求。
附图说明
23.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的一些附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是本发明实施例基于fpga的结构光算法优化加速方法流程图。
具体实施方式
25.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
26.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
27.实施例一
28.参见图1所示,本发明提出了一种基于fpga的结构光算法优化加速方法,包括如下步骤:
29.s1,处理器接收相机采集的图像数据,并将图像数据下发至fpga;
30.s2,基于格雷码投影的结构光成像技术,利用格雷码对每个相机像素在光机上的位置进行粗定位,再利用移动条纹技术对每个格雷码周期内的像素在光机上的位置进行精定位,重建三维形貌信息;
31.s3,fpga端依次完成图像预处理、多种曝光图片的hdr融合、格雷码解码、移动条纹解码、相位合成,在pc端完成点云的重建;
32.s4,通过利用fpga并行处理、流水线的方式,在pc端下发数据的同时,实时完成图像预处理、hdr融合、格雷码生成、移动边沿条纹做差;
33.s5,取出格雷码解码,同时对移动条纹解码,两者合成得到最终的相位数据;
34.s6,将相位数据上传至上位机。
35.具体的,在fpga上进行核心算法处理,算法流程如下:结构光相机由cmos相机和光机两部分组成,光机将光栅条纹投影在被测物体上,光栅条纹由于物体外形高低起伏而扭曲变形。相机拍下变形后的光栅照片,利用拍摄条纹受物体调制的弯曲程度,解调该弯曲条纹得到相位,再将相位转化为全场的高度,得到计算物体的位置和深度信息,进而复原整个三维空间,
36.进一步的,采用基于格雷码投影的结构光成像技术,基于格雷码投影的三维成像技术具有较好的鲁棒性,而且其计算速度快,便于在工业领域中的应用。但是格雷码只有边沿像素可以携带物体信息,而高级别的格雷码周期很小,难以被准确的探测定位,故实际采用格雷码辅助条纹边沿移动技术,该方法利用格雷码对每个相机像素在光机上的位置进行粗定位,再利用移动条纹技术对每个格雷码周期内的像素在光机上的位置进行精定位,该方法能够快速而又精确的重建三维形貌信息。
37.根据本发明实施例,步骤s4与步骤s5中fpga端算法实现步骤如下:
38.在fpga中对原图先进行降噪操作,通过在fpga端缓存5行图像,并滤出图像中的个别毛刺数据;
39.通过采集低曝光和高曝光的图像,而后进行合成;
40.fpga通过缓存奇数帧号的图片,在偶数帧号的图片输入时,同步读出奇数帧号的图片,并与之作差,得到一组差值数据;
41.读取差值数据,对移动条纹的边沿亚像素进行定位;
42.获得相同位置的条纹差值数据,计算亚像素位置,得到中间结果数据;从内存中读出格雷码数据,实时进行格雷码的解码,将中间结果数据和格雷码解码数据进行计算合并得到最终的相位数据。
43.根据本发明实施例,fpga端算法中采用8级格雷码,共9张图片,其中1张是1级格雷码的反色图,由1级格雷码和其反色图生成阈值图和格雷码图,并存入fpga内存中;
44.随着格雷码投影图的数据流入,同步读出阈值图t和生成的格雷码图g,并更新格雷码图g写入内存;
45.在9张格雷码投影图输入结束后,格雷码图g生成完毕,并保存在fpga的内存当中。
46.具体的,fpga端算法实现步骤如下:fpga端完成图像预处理、多种曝光图片的hdr融合、格雷码解码、移动条纹解码、相位合成,在pc端完成点云的重建。通过利用fpga并行处理、流水线的方式,在pc端下发数据的同时,可以实时完成图像预处理、hdr融合、格雷码生成、移动边沿条纹做差,而后再取出格雷码解码,同时对移动条纹解码,两者合成即可得到最终的相位。具体流程如下:
47.(1)将xdma的axi-mm写接口转为通用的并口数据,xdma为8lane,速度配置为5gt/s,axi的端口数据位宽为128bit,频率为250m,为降低算法系统整体的运行频率,将数据为宽增大至256bit,频率降至125m,此时的数据并行度为32,即每一个时钟处理32个像素。
48.(2)对原图进行预处理操作,在结构光技术的测量过程中,环境和硬件等因素的干扰会引入一定的噪声,对求解相位会产生一定的误差,故在fpga中对原图先进行降噪操作,通过在fpga端用block ram缓存5行的图像,可用3x3或5x5的窗口,滤出图像中的个别毛刺数据。
49.(3)为了提高条纹图的图像质量,分别通过采集低曝光和高曝光的图像,而后进行合成,在这一模式下,xdma下发的第一组曝光图片数据需先进入ddr中缓存,待第二组曝光图下发时,同步将第一组的曝光数据g1从fpga的ddr中读出,并实时与第2组曝光图片g2相同位置的像素进行合成,产生一组hdr图片m,数据流直接流入下一个算法步骤。
50.(4)在本算法中采用8级格雷码,共9张图片,其中1张是1级格雷码的反色图,首先由1级格雷码和其反色图生成阈值图和格雷码图,并存入fpga内存中,而后随着其他级数的格雷码投影图的数据流入,同步读出阈值图t和生成的格雷码图g,并更新格雷码图g写入内存,在9张格雷码投影图输入结束后,格雷码图g也生成完毕,并保存在fpga的内存当中。
51.(5)移动条纹求取差值,此步骤共有20帧图片输入,随着正反移动条纹投影图的输入,fpga通过缓存奇数帧号的图片,在偶数帧号的图片输入时,同步读出奇数帧号的图片,并与之作差,可得到一组差值的数据,共10帧,记作f1-f10,并顺序存入内存当中。
52.(6)此前步骤通过fpga实时流水线的处理方式,在上位机数据下发完成时,也同时完成了相应的处理,得到部分中间数据,并保存在内存当中。此步骤开始进行非实时的处理,通过读取前面条纹图的差值数据,首先对移动条纹的边沿亚像素进行定位。该过程需要从fpga内存中读取f1-f10相同位置的数据进行求解,为提高数据的吞吐效率,通过设计axi dma,每次从内存中突发读取一行完整的数据,10帧图片共计10行,存入block ram当中,每存满10行则进入计算,通过乒乓操作,使数据可以连续不间断从内存输出,通过同时获得相同位置的条纹差值数据,计算亚像素位置,得到第一结果,同时从内存中读出格雷码数据,实时进行格雷码的解码,将第一结果和格雷码解码数据d进行计算合并得到最终的相位数据。
53.(7)为避免点云的边缘出现毛刺,对上一步骤得到的相位数据s2进行3x3高斯平滑,并将平滑后的数据s3写回内存,供xdma读取。
54.根据本发明实施例,相位数据通过pcie接口上传至上位机,进行高吞吐的数据交互,并将运算的结果数据快速上传至处理器。
55.具体的,在相位数据计算结束写入ps的内存后,通过发送中断信号给xdma,xdma发送pcie中断消息给上位机,使其获知fpga端的相位数据计算已经完成,通过pcie读操作,从fpga的内存中读取相位数据,回传到上位机内存,进行下一步的点云生成运算。
56.进一步的,在处理器接收到相机采集的图片数据之后,需要将图像数据下发至fpga,选用pcie作为传输接口,主要基于pcie的以下优点:
57.(1)pcie属于高速串行点对点传输,在内部集成高速收发器,传输带宽大,可靠性高。
58.(2)pcie的延迟较小,pcie设备和pcie总线直接相连,和主处理器共享内存,不占用cpu的总线资源,减少了协议的开销。
59.(3)升级方便,从pcie1.0的单lane传输速率2.5gt/s,到pcie4.0的16gt/s,协议速度大幅提升,其对用户的接口仍然保持一致。
60.在本技术中,fpga作为pcie的endpoint与上位机的root complex进行通信。在xilinx fpga中,有多种基于pcie的ip核,其中xdma ip核同时集成了dma的功能,开放axi-lite和axi-mm作为用户端的访问接口,使得用户的数据交互过程更为简化,而且其性能突出,统一采用axi总线可以更好的兼容不同芯片不同速度的pcie端口设计。在本设计中,用
axi-mm接口进行图像数据的读写,用axi-lite接口进行fpga端设备寄存器的配置。同时考虑到吞吐的图像数据量较大,将xdma的axi-mm读写信号进行分离,上位机数据下发,也就是axi-mm的写访问在逻辑转换后,一路直接接到算法的输入模块,一路则接到axi interconnect,将第一组曝光的图像数据写入内存,第二组曝光图片进入的时候,则同步从内存读出第一组图片,合成hdr,进入算法模块,降低了ddr的使用带宽,提高了整体运算速度。
61.综上,本技术提出了一种基于fpga的结构光算法优化加速办法,通过将部分运算实现在fpga端进行硬件加速,而后再由上位机获取fpga运算之后的结果进行最终计算,通过流水线的办法大大提升了算法的运算速度,满足了工业领域在线快速检测的需求,通过利用fpga流水线处理的特点使整个算法的速度大幅度提升,fpga端数据传输和计算的时间为t1,pc端点云计算的时间为t2,在第一帧点云计算时,需要消耗t1+t2时间,当数据连续输入时,消耗的时间为max(t1,t2),对于1080p的图像,实际的处理时间可以控制在300ms以内,极大缩减了该算法的处理速度,本算法在fpga端的处理速度主要限制在xdma的传输接口速率和fpga端内存的交互带宽,在采用xdma2.0的ip的情况下,pcie的下发速度达到2.4gb/s,回传达到2.1gb/s,fpga的ddr3整体带宽则在9gb/s,如果升级fpga芯片使其支持xdma3.0和ddr4,则可以使解相位操作在fpga的速度进一步提升。
62.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
63.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对上述实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的上述实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
64.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1