本发明涉及图像处理,特别是涉及一种基于fpga的计算三维点云坐标的装置和方法。
背景技术:
1、随着机器人朝着智能化和自动化的方向深入发展,人们对机器人的感知能力、导航精度、避障性能和物体识别准确率的要求也不断提高。其中,如何快速精确地获取三维点云坐标成为了备受关注的问题。
2、目前,三维点云坐标主要通过3d结构光相机的相机参数和立体匹配的数据计算得到。3d结构光相机包含两个摄像头,分别对应左图和右图的拍摄,3d结构光相机首先通过向物体表面投射特定的光模式,然后捕捉物体表面反射的光模式图像,经过立体匹配得到同名点数据。其中,左图和右图是从稍微不同的角度拍摄的同一物体的图像,通过立体匹配技术,可以找出左图和右图中对应的像素点,即同名点。根据相机本身的内参(如焦距、主点坐标等)以及同名点数据,即可用公式计算三维点云坐标,具体公式如下:
3、
4、
5、
6、其中,x、y、z分别表示三维点云坐标的x轴、y轴、z轴方向上的坐标。ul表示图像经过立体匹配后同名点在左图的横坐标;vl表示图像经过立体匹配后同名点在左图的纵坐标;ur表示图像经过立体匹配后同名点在右图的横坐标;u0表示左相机主点的x轴方向上的坐标;v0表示左相机主点的y轴方向上的坐标、b表示相机基线长度;fx表示x轴方向上的相机内参;fy表示y轴方向上的相机内参。其中,fy=bax;ax表示相机x轴方向的焦距投影,ay表示相机y轴方向的焦距投影。
7、现有的三维点云坐标计算装置包括存储器和处理器,基于该装置计算三维点云坐标的方法步骤是将公式逐条分解为多个子公式,处理器再依次计算x、y、z对应的数值,计算次序为:分解为(ul-u0)、(ul-ur)、b(ul-u0)、(vl-v0)、fx(vl-v0),得到对应的数值。在这个过程中,ul、vl、ur、u0、v0、b、fx、fy这些初始数据存储在存储器中,处理器每计算一个子公式就从存储器中读取需要的初始数据,子公式的计算结果也存储在存储器中,然后处理器又从存储器中读取其他初始数据来计算下一子公式,如此反复,直至计算完成。
8、然而,现有技术在计算时是对分解后的子公式进行逐条的串行计算的,不支持并行计算和硬件加速,导致计算速度较慢。另外,在现有技术的计算过程中,数据需要频繁地在存储器和处理器之间传输数据,因此存在计算效率较低的问题。
技术实现思路
1、基于此,本发明的目的在于,提供一种基于fpga的计算三维点云坐标的装置,其特征在于,包括:减法计算单元、乘法计算单元、除法计算单元、第一延时单元和第二延时单元;
2、减法计算单元获取ul、vl、ur、u0、v0的数据,并行计算三维点云坐标公式中的(ul-ur)、(ul-u0)、(vl-v0);
3、第一延时单元与减法计算单元同步获取b、fx、fy的数据,并对数据做延时处理,其中,延时的时间等于并行计算(ul-ur)、(ul-u0)、(vl-v0)所需的时间;
4、乘法计算单元获取b、fx、(ul-u0)、(vl-v0)的数据,并行计算三维点云坐标公式中的b(ul-u0)、fx(vl-v0);
5、第二延时单元与乘法计算单元同步获取(ul-ur)、fy的数据,并对数据做延时处理,其中,延时的时间等于并行计算b(ul-u0)、fx(vl-v0)所需的时间;
6、除法计算单元获取b(ul-u0)、fx(vl-v0)、(ul-ur)、fy的数据,并行计算下列三维点云坐标公式:
7、
8、
9、
10、其中,x、y、z分别表示三维点云坐标的x轴、y轴、z轴方向上的坐标;ul表示图像经过立体匹配后同名点在左图的横坐标;vl表示图像经过立体匹配后同名点在左图的纵坐标;ur表示图像经过立体匹配后同名点在右图的横坐标;u0表示左相机主点的x轴方向上的坐标;v0表示左相机主点的y轴方向上的坐标、b表示相机基线长度;fx表示x轴方向上的由相机内参计算得到的常量;fy表示y轴方向上的由相机内参计算得到的常量;其中,fy=bax;ax表示相机x轴方向的焦距投影,ay表示相机y轴方向的焦距投影。
11、本发明所述的基于fpga的计算三维点云坐标的装置,实现数据的并行运算,提高了计算效率;还用延时处理确保数据的同步计算,避免时序混乱,确保了计算结果的正确性。
12、进一步地,还包括截位处理器;ul、vl、ur、u0、v0、b、fx、fy的数据格式设置为n位的定点数,其中,n取8、16、32、64、128中的一个数;
13、乘法计算单元经过计算得到格式为2n位定点数的乘法计算结果;
14、截位处理器对格式为2n位定点数的乘法计算结果进行截位拼接处理,得到格式为n位定点数的乘法计算结果。
15、进一步地,除法计算单元经过计算得到格式为位定点数的除法计算结果;
16、截位处理器对格式为位定点数的除法计算结果进行截位拼接处理,得到格式为n位定点数的除法计算结果。
17、进一步地,格式为位定点数的除法计算结果包括n位的整数部分和位的小数部分,其中整数部分包括1位整数符号位和(n-1)位的整数位,小数部分包括1位小数符号位和位小数位;截位处理器通过截除位的整数位以及小数符号位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的除法计算结果。
18、进一步地,还包括判断器和格式处理器;判断器判断格式为位定点数的除法计算结果是否为负数。若是,则判断器判断格式为位定点数的除法计算结果的数据类型是否为-0.n;若否,则截位处理器对数据进行截位拼接处理,得到格式为n位定点数的除法计算结果。
19、判断器判断格式为位定点数的除法计算结果的数据类型是否为-0.n。若否,则判断器判断格式为位定点数的除法计算结果的数据类型是否为-n.n;若是,则格式处理器将整数部分的整数位及其符号位取反,然后截位处理器对数据进行截位拼接处理,得到格式为n位定点数的除法计算结果。
20、判断器判断格式为位定点数的除法计算结果的数据类型是否为-n.n。若否,则截位处理器对数据进行截位拼接处理,得到格式为n位定点数的除法计算结果;若是,则格式处理器将格式为位定点数的除法计算结果的整数部分和小数部分分别转化回原码格式,然后截位处理器对数据进行截位拼接处理,得到格式为n位定点数的除法计算结果,格式处理器将格式为n位定点数的除法计算结果转换成补码的格式。
21、进一步地,格式为2n位定点数的乘法计算结果包括1位符号位、(n-1)位整数位和n位小数位;截位处理器通过截除位的整数位和位的小数位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的乘法计算结果。
22、进一步地,提供一种基于fpga的计算三维点云坐标的方法,包括以下步骤:步骤s11:获取ul、vl、ur、u0、v0的数据,并行计算三维点云坐标公式中的(ul-ur)、(ul-u0)、(vl-v0);
23、与步骤s11同步执行的步骤s12:获取b、fx、fy的数据,并对数据做延时处理,其中,延时的时间等于并行计算(ul-ur)、(ul-u0)、(vl-v0)所需的时间;
24、步骤s21:获取b、fx、(ul-u0)、(vl-v0)的数据,并行计算三维点云坐标公式中的b(ul-u0)、fx(vl-v0);
25、与步骤s21同步执行的步骤s23:获取(ul-ur)、fy的数据,并对数据做延时处理,其中,延时的时间等于并行计算b(ul-u0)、fx(vl-v0)所需的时间;
26、步骤s30:获取b(ul-u0)、fx(vl-v0)、(ul-ur)、fy的数据,并行计算下列三维点云坐标公式,得到三维点云坐标的计算结果:
27、
28、
29、
30、其中,x、y、z分别表示三维点云坐标的x轴、y轴、z轴方向上的坐标;ul表示图像经过立体匹配后同名点在左图的横坐标;vl表示图像经过立体匹配后同名点在左图的纵坐标;ur表示图像经过立体匹配后同名点在右图的横坐标;u0表示左相机主点的x轴方向上的坐标;v0表示左相机主点的y轴方向上的坐标、b表示相机基线长度;fx表示x轴方向上的相机内参;fy表示y轴方向上的相机内参;其中,fy=bax;ax表示相机x轴方向的焦距投影,ay表示相机y轴方向的焦距投影。
31、进一步地,ul、vl、ur、u0、v0、b、fx、fy的数据格式设置为n位的定点数,其中,n取8、16、32、64、128中的一个数;
32、经过步骤s11得到格式为2n位定点数的乘法计算结果;在步骤s11之后还包括步骤s22:对格式为2n位定点数的乘法计算结果进行截位拼接处理,得到格式为n位定点数的乘法计算结果;
33、经过步骤s30得到格式为位定点数的除法计算结果;在步骤s30之后还包括步骤s40:对格式为位定点数的除法计算结果进行截位拼接处理,得到格式为n位定点数的除法计算结果。
34、进一步地,格式为位定点数的除法计算结果包括n位的整数部分和位的小数部分,其中整数部分包括1位整数符号位和(n-1)位的整数位,小数部分包括1位小数符号位和位小数位;步骤s40具体包括:截除位的整数位以及小数符号位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的除法计算结果;
35、格式为2n位定点数的乘法计算结果包括1位符号位、(n-1)位整数位和n位小数位;步骤s22具体包括:截除位的整数位和位的小数位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的乘法计算结果。
36、进一步地,在步骤s30之后,还包括以下步骤:
37、步骤s31:判断格式为位定点数的除法计算结果是否为负数。若是,则执行步骤s32;若否,则执行步骤s40。
38、步骤s32:判断格式为位定点数的除法计算结果的数据类型是否为-0.n。若否,则执行步骤s33;若是,则执行步骤s34a。
39、步骤s33:判断格式为位定点数的除法计算结果的数据类型是否为-n.n。若否,则执行步骤s40;若是,则执行步骤s34b。
40、步骤s34a:将整数部分的整数位及其符号位取反,然后执行步骤s40。
41、步骤s34b:将格式为位定点数的除法计算结果的整数部分和小数部分分别转化回原码格式,然后执行步骤s40~s41。
42、步骤s41:将格式为n位定点数的除法计算结果转换成补码的格式。
43、为了更好地理解和实施,下面结合附图详细说明本发明。
1.一种基于fpga的计算三维点云坐标的装置,其特征在于,包括:减法计算单元、乘法计算单元、除法计算单元、第一延时单元和第二延时单元;
2.根据权利要求1所述的基于fpga的计算三维点云坐标的装置,其特征在于:还包括截位处理器;
3.根据权利要求2所述的基于fpga的计算三维点云坐标的装置,其特征在于:除法计算单元经过计算得到格式为位定点数的除法计算结果;
4.根据权利要求3所述的基于fpga的计算三维点云坐标的装置,其特征在于:格式为位定点数的除法计算结果包括n位的整数部分和位的小数部分,其中整数部分包括1位整数符号位和(n-1)位的整数位,小数部分包括1位小数符号位和位小数位;截位处理器通过截除位的整数位以及小数符号位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的除法计算结果。
5.根据权利要求4所述的基于fpga的计算三维点云坐标的装置,其特征在于:还包括判断器和格式处理器;
6.根据权利要求2所述的基于fpga的计算三维点云坐标的装置,其特征在于:格式为2n位定点数的乘法计算结果包括1位符号位、(n-1)位整数位和n位小数位;截位处理器通过截除位的整数位和位的小数位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的乘法计算结果。
7.一种基于fpga的计算三维点云坐标的方法,其特征在于,包括以下步骤:
8.根据权利要求7所述的基于fpga的计算三维点云坐标的方法,其特征在于:ul、vl、ur、u0、v0、b、fx、fy的数据格式设置为n位的定点数,其中,n取8、16、32、64、128中的一个数;
9.根据权利要求8所述的基于fpga的计算三维点云坐标的方法,其特征在于:格式为位定点数的除法计算结果包括n位的整数部分和位的小数部分,其中整数部分包括1位整数符号位和(n-1)位的整数位,小数部分包括1位小数符号位和位小数位;步骤s40具体包括:截除位的整数位以及小数符号位,再将剩余的数据按截除前的排序依次拼接,获得格式为n位定点数的除法计算结果;
10.根据权利要求9所述的基于fpga的计算三维点云坐标的方法,其特征在于,在步骤s30之后,还包括以下步骤:
