视觉地图定位方法及系统
技术领域
本发明属于视觉地图技术领域,涉及一种定位方法,尤其涉及一种视觉地图定位方法及系统。
背景技术
把照片和视觉地图匹配后,可以得到拍摄这张照片的相机的位置和朝向。常用的视觉定位地图的形式是带描述符的3d点的集合。这种视觉定位地图中存储有很多3d点的信息,信息包括3d点的位置以及多个描述符。描述符是一段数据,比如32个byte或者32个float。描述符代表了这个3d点在照片中对应的特征点的特征。
视觉描述符的计算,可参阅图1,右图中每个箭头可以用一个向量表示,所有箭头代表的向量组合在一起就是一个特征点的描述符。
基于视觉地图的定位是指计算一张照片相对地图的位置和朝向。对于一张照片,可以提取一些角点,每个角点还可以提取描述符;这些描述符存储了这个角点附近的图案特征。同时这些描述符可以和地图中的3d点的描述符进行匹配。也就是通过描述符的差异找到哪些地图中的3d点和照片中的2d点是相同的点。
通过描述符的匹配,就能建立很多图像的2d点到定位地图的3d点的对应关系。使用这种对应关系,可以计算每张照片的拍摄位置和朝向。
但是这种3d到2d的匹配一般运算量比较大,因为地图中的3d点数量远远大于一张2d点的特征点的数量。所以通过3d到2d的匹配来计算相机位置和朝向的方法不能以太高频率进行。另外某些区域没有地图覆盖,这些区域也不能通过这种方法进行定位。
这种情况的解决办法是使用视觉里程计,视觉里程计可以计算连续图片中,后一张图片相对上一张图片的位置和朝向。并且视觉里程计只需要进行图片之间的匹配,速度会比做3d到2d点的匹配快。假设矩阵T_w_i代表了前一张照片的位置和朝向。t_i_j是通过视觉里程计计算得到的后一张照片相对前一张图片的位置。那么通过t_w_j=T_w_i*t_i_j就能得到后一张图片相对地图的位置;即在没有进行3d到2d点的匹配任务,也能得到后一张照片相对地图的位置。
图2中每个三角形代表不同时刻相机的位置和朝向,在t4时刻成功和地图进行了一次匹配得到了一个位置,但这个位置和使用视觉里程计递推得到的位置有差异。所以在t4时刻,通过3d到2d的匹配对视觉里程计的累计误差做了一次修正。
但这样做的缺点是,计算下一张图片位置时,必须要得到上一张图片相对地图的位置。如果3d到2d的匹配的时间很长的话,比如需要花费1秒钟才能得到结果,那么整个定位系统会产生很长的延迟。
现有视觉地图定位方式主要基于卡尔曼滤波方法,现有定位方式存在如下缺点:
(1)没有使用图像序列之间的信息,在没有地图覆盖的区域定位质量很差。但本方法把通过视觉里程计得到的图像序列之间的信息和图像和地图的匹配信息融合在一起,在地图质量不好的区域,还可以通过里程计的信息得到高精度的定位结果。
(2)一般图片和地图的匹配很费时间,所以不是每一张图片都会进行和地图的匹配。基于卡尔曼滤波的方法中不和地图匹配的图片位置可以通过滤波器的预测快速得到。但对于需要进行地图匹配的定位结果就会有较大延迟。比如图片和地图的匹配时间为1s,那么这一张图片的定位延迟就是1s。
有鉴于此,如今迫切需要设计一种视觉地图定位方式,以便克服现有视觉地图定位方式存在的上述缺陷。
发明内容
本发明提供一种视觉地图定位方法及系统,,可以以很低的延迟得到当前相机位置的估计值,等运算时间较长的3d到2d的匹配结束后再来更新相机的位置得到更精确的位置,从而降低的定位的延迟。
为解决上述技术问题,根据本发明的一个方面,采用如下技术方案:
一种视觉地图定位方法,所述视觉地图定位方法包括:
通过局部地图3d点和全局地图3d点的描述符匹配,计算局部地图相对全局地图的变换矩阵;
获取设定照片相对参考照片的位置和朝向;
利用所述变换矩阵把获取的设定照片相对参考照片的位置和朝向变换到全局地图中。
作为本发明的一种实施方式,计算局部地图相对全局地图的变换矩阵的过程包括:
步骤S1、获取参考照片、待匹配照片,提取参考照片和待匹配照片的特征点及描述符;
步骤S2、计算待匹配照片的特征点相对参考照片特征点的位置和朝向;已知位置的3d点构成局部地图;
步骤S3、通过局部地图3d点到全局地图3d点的描述符匹配,找到局部地图和全局地图的匹配关系;
步骤S4、计算从局部地图点到全局地图的变换矩阵。
作为本发明的一种实施方式,步骤S4中,全局变换由旋转量R和平移量t构成;列出如下线性方程:p2=R*p1+t;
根据(p1,p2)的对数列出对应数量的线性方程;通过求解线性方程组的解,得到未知量R和t。
作为本发明的一种实施方式,获取设定照片相对参考照片的位置和朝向过程包括步骤S5:使用视觉里程计计算对应图片相对参考照片的位置和朝向。
作为本发明的一种实施方式,把获取的设定照片相对参考照片的位置和朝向变换到全局地图中的过程包括:
步骤S6、使用变换矩阵得到对应图片相对地图的位置;
步骤S7、当接收到后续的图片后,通过视觉里程计得到当前相机相对于参考照片的位置,而后得到当前相机相对地图的位置。
作为本发明的一种实施方式,把获取的设定照片相对参考照片的位置和朝向变换到全局地图中的过程还包括步骤S8、后续的图片和现有的图片一起建立更多的局部地图的3d点;所述局部地图的3d点和全局地图匹配后能够得到更精确的变换矩阵。
作为本发明的一种实施方式,步骤S1中,对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的设定个匹配。
作为本发明的一种实施方式,步骤S1中,特征点为图片中明暗变化剧烈的地方,使用FAST角点作为特征点,描述符代表特征点周围的视觉特征,使用ORB描述符。
作为本发明的一种实施方式,步骤S2中,计算3d点位置的流程包括:
步骤S21、使用五点法得到待匹配照片相对于参考照片的变换矩阵;
步骤S22、使用三角化方法得到3d点相对于参考照片的位置。
作为本发明的一种实施方式,步骤S3中,匹配方法包括:
步骤S31、描述符匹配:对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的M个匹配对;
步骤S32、使用RANSAC算法筛出这些配对中错误的配对,得到最终的配对。
作为本发明的一种实施方式,步骤S5中,使用视觉里程计计算第三图片相对第一图片的位置t_1_3和朝向R_1_3;
局部地图相对全局地图的变换矩阵记为T_w_1;步骤S6中,使用变换矩阵T_w_1得到第三图片相对地图的位置t_w_3=T_w_1*t_1_3。
作为本发明的一种实施方式,步骤S7中,当接收到后续的照片后,立即通过视觉里程计得到当前相机相对于参考照片的位置t_1_n;再通过t_w_n=T_w_1*t_1_n得到当前相机相对地图的位置。
根据本发明的另一个方面,采用如下技术方案:一种视觉地图定位系统,所述视觉地图定位系统包括:
变换矩阵获取模块,用以通过局部地图3d点和全局地图3d点的描述符匹配,计算局部地图相对全局地图的变换矩阵;
相对位置及朝向获取模块,用以获取设定照片相对参考照片的位置和朝向;
数据变换模块,用以利用所述变换矩阵把视觉里程计得到的位置和朝向变换到全局地图中。
作为本发明的一种实施方式,所述变换矩阵获取模块包括:
-特征及描述提取单元,用以获取参考照片、待匹配照片,提取参考照片和待匹配照片的特征点及描述符;
-位置及朝向获取单元,用以计算待匹配照片的特征点相对参考照片特征点的位置和朝向;已知位置的3d点构成局部地图;
-匹配关系获取单元,用以通过局部地图3d点到全局地图3d点的描述符匹配,找到局部地图和全局地图的匹配关系;
-变换矩阵计算单元,用以计算从局部地图点到全局地图的变换矩阵。
作为本发明的一种实施方式,所述变换矩阵计算单元的计算方式如下:
全局变换由旋转量R和平移量t构成;列出如下线性方程:p2=R*p1+t;
根据(p1,p2)的对数列出对应数量的线性方程;通过求解线性方程组的解,得到未知量R和t。
作为本发明的一种实施方式,所述相对位置及朝向获取模块包括视觉里程计;所述数据变换模块包括:
-相对地图位置获取单元,用以使用变换矩阵得到对应图片相对地图的位置;
-相机相对位置获取单元,用以在接收到后续的图片后,通过视觉里程计得到当前相机相对于参考照片的位置,而后得到当前相机相对地图的位置。
作为本发明的一种实施方式,对于参考照片的每个描述符,所述特征及描述提取单元在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的设定个匹配。
作为本发明的一种实施方式,所述位置及朝向获取单元使用五点法得到待匹配照片相对于参考照片的变换矩阵,使用三角化方法得到3d点相对于参考照片的位置。
作为本发明的一种实施方式,所述匹配关系获取单元包括:
-描述符匹配子单元,用以对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的M个匹配对;
-配对子单元,使用RANSAC算法筛出这些配对中错误的配对,得到最终的配对。
作为本发明的一种实施方式,所述相对位置及朝向获取模块计算第三图片相对第一图片的位置t_1_3和朝向R_1_3;局部地图相对全局地图的变换矩阵记为T_w_1;
所述相对地图位置获取单元使用变换矩阵T_w_1得到第三图片相对地图的位置t_w_3=T_w_1*t_1_3。
作为本发明的一种实施方式,所述相机相对位置获取单元获取当前相机相对地图的位置t_w_n=T_w_1*t_1_n。
本发明的有益效果在于:本发明提出的视觉地图定位方法及系统,可以以很低的延迟得到当前相机位置的估计值,等运算时间较长的3d到2d的匹配结束后再来更新相机的位置得到更精确的位置,从而降低的定位的延迟。
本发明中,视觉里程计并不依赖于地图匹配的结果,所以通过视觉里程计可以快速得到所有图片的位置。当并行进行的地图匹配的结束后,再使用地图匹配的结果更新最新图片的位置。本发明相比于基于卡尔曼滤波的方法,具有更好的并行性。本发明也为未来使用性能更好、但是速度较慢的地图匹配方法提供了可能。
附图说明
图1为现有视觉定位地图中3d信息表示示意图。
图2为现有视觉定位方式中利用视觉里程计进行定位的示意图。
图3为本发明一实施例中视觉地图定位方法的流程图。
图4为本发明一实施例中视觉地图定位方法的流程图。
图5为本发明一实施例中视觉地图定位方法的流程图。
图6为本发明一实施例中获取局部地图的示意图。
图7为本发明一实施例中计算从局部地图点到全局地图的变换矩阵的示意图。
图8为本发明一实施例中局部地图与全局地图配对的示意图。
图9为本发明一实施例中视觉地图定位系统的组成示意图。
图10为本发明一实施例中视觉地图定位系统的组成示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
该部分的描述只针对几个典型的实施例,本发明并不仅局限于实施例描述的范围。相同或相近的现有技术手段与实施例中的一些技术特征进行相互替换也在本发明描述和保护的范围内。
本发明揭示了一种视觉地图定位方法,所述视觉地图定位方法包括:通过局部地图3d点和全局地图3d点的描述符匹配,计算局部地图相对全局地图的变换矩阵;获取设定照片相对参考照片的位置和朝向;利用所述变换矩阵把获取的设定照片相对参考照片的位置和朝向变换到全局地图中。
图3为本发明一实施例中视觉地图定位方法的流程图;请参阅图3,在本发明的一实施例中,所述视觉地图定位方法包括:
步骤一、通过局部地图3d点和全局地图3d点的描述符匹配,计算局部地图相对全局地图的变换矩阵;
步骤二、获取设定照片相对参考照片的位置和朝向;
步骤三、利用所述变换矩阵把获取的设定照片相对参考照片的位置和朝向变换到全局地图中。
其中,步骤一、步骤二没有先后次序的要求,相互之间没有直接影响。
图4为本发明一实施例中视觉地图定位方法的流程图;请参阅图4,在本发明的一实施例中,所述步骤一包括:
步骤S1、获取参考照片、待匹配照片,提取参考照片和待匹配照片的特征点及描述符;
步骤S2、计算待匹配照片的特征点相对参考照片特征点的位置和朝向;已知位置的3d点构成局部地图;
步骤S3、通过局部地图3d点到全局地图3d点的描述符匹配,找到局部地图和全局地图的匹配关系;
步骤S4、计算从局部地图点到全局地图的变换矩阵。
在本发明的一实施例中,步骤S4中,设定全局变换由旋转量R和平移量t构成(在本发明的一实施例中,全局变换还包括其他);列出如下线性方程:p2=R*p1+t;由于有很多对(p1,p2),根据(p1,p2)的对数列出对应数量的线性方程;通过求解线性方程组的解,得到未知量R和t。
请继续参阅图4,在本发明的一实施例中,所述步骤二包括步骤S5、使用视觉里程计计算对应图片相对参考照片的位置和朝向。
请继续参阅图4,在本发明的一实施例中,所述步骤二包括:
步骤S6、使用变换矩阵得到对应图片相对地图的位置;
步骤S7、当接收到后续的图片后,通过视觉里程计得到当前相机相对于参考照片的位置,而后得到当前相机相对地图的位置。
在本发明的一实施例中,所述步骤二还包括步骤S8、后续的图片和现有的图片一起建立更多的局部地图的3d点;所述局部地图的3d点和全局地图匹配后能够得到更精确的变换矩阵。
本发明提出的视觉定位方法,可以让视觉里程计和3d到2d的匹配同时进行;也就是即使前一张图像相对地图的位置还没被计算出来,本发明也可以只基于低延迟的视觉里程计的结果得到下一个相机相对地图的位置。
3d到2d的匹配也叫做局部地图和全局地图的匹配。由连续图片之间的匹配得到的已知3d位置的特征点组成的地图叫做局部地图。定位地图也叫做全局地图。
本发明原理是先计算局部地图相对全局地图的变换矩阵,然后用这个矩阵把视觉里程计得到的位置和朝向变换到全局地图中。现有的方法是基于3d到2d的匹配计算某一张照片的位置,本发明提出的方法是通过局部地图3d点和全局地图3d点的匹配,计算局部地图相对全局地图的变换。因为不依赖于前一张图片相对于地图的位置和朝向,所以视觉里程计可以实时的计算当前相机的位置。
在本发明的一实施例中,步骤S1中,对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的设定个匹配。特征点为图片中明暗变化剧烈的地方,使用FAST角点作为特征点,描述符代表特征点周围的视觉特征,使用ORB描述符。
在本发明的一实施例中,步骤S2中,计算3d点位置的流程包括:
-步骤S21、使用五点法得到待匹配照片相对于参考照片的变换矩阵;
-步骤S22、使用三角化方法得到3d点相对于参考照片的位置。
在本发明的一实施例中,步骤S3中,匹配方法包括:
-步骤S31、描述符匹配:对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的M个匹配对;
-步骤S32、使用RANSAC算法筛出这些配对中错误的配对,得到最终的配对。
在本发明的一实施例中,步骤S5中,使用视觉里程计计算第三图片相对第一图片的位置t_1_3和朝向R_1_3。局部地图相对全局地图的变换矩阵记为T_w_1;步骤S6中,使用变换矩阵T_w_1得到第三图片相对地图的位置t_w_3=T_w_1*t_1_3。
在本发明的一实施例中,步骤S7中,当接收到后续的照片后,立即通过视觉里程计得到当前相机相对于参考照片的位置t_1_n;再通过t_w_n=T_w_1*t_1_n得到当前相机相对地图的位置。
图5为本发明一实施例中视觉地图定位方法的流程图;请参阅图5,在本发明的一实施例中,所述视觉地图定位方法包括如下步骤:
步骤1、假设有连续两张照片:第一照片t1和第二照片t2。先提取t1和t2的特征点和描述符。然后对于每个t1的描述符,在t2中找到最相似的一个描述符。假设t1中提取出N个描述符,那么此时就的到了N对特征点的匹配。最后按照描述符的差异(使用汉明距离计算差异)排序,保留差异最小的前200个匹配。
特征点为图片中明暗变化剧烈的地方,这里使用FAST角点作为特征点,描述符代表的这个特征点周围的视觉特征,这里使用ORB描述符。
步骤2、计算这些特征点相对第一图片的位置和朝向。这些已知位置的3d点就构成了局部地图,如图6所述。计算3d点位置的流程包括:
(1)使用五点法得到t2相对于t1的变换矩阵;输入为上一步得到特征点配对。
(2)使用三角化方法得到3d点相对于t1的位置;输入为上一步得到的t2相对t1的变换矩阵。
步骤3、通3d到3d的描述符匹配,找到局部地图和全局地图(定位地图)的匹配关系。
匹配方法包括:
(1)描述符匹配:方法同之前t1和t2之间的描述符匹配;得到M个3d点的匹配对。
(2)使用RANSAC筛出这些配对中错误的配对,得到最终的配对。
步骤4、计算从局部地图点到全局地图的变换矩阵T_w_1,如图7所示。输入为上一步的得到的局部和全局地图3d点之间的配对,如图8所示。
步骤5、使用视觉里程计计算第三图片相对第一图片的位置(t_1_3)和朝向(R_1_3)。
步骤6、使用变换矩阵T_w_1得到第三图片相对地图的位置:t_w_3=T_w_1*t_1_3。
步骤7、当接收到后续的图片后,可以立即通过视觉里程计得到当前相机相对于第一张图像的位置:t_1_n;再通过t_w_n=T_w_1*t_1_n得到当前相机相对地图的位置。
步骤8、同时后续的图片还会和之前的图片一起建立更多的局部地图的3d点。这些3d点和全局地图匹配后能够得到更精确的T_w_1。
本发明还揭示一种视觉地图定位系统,图9为本发明一实施例中视觉地图定位系统的组成示意图;请参阅图9,在本发明的一实施例中,所述视觉地图定位系统包括:变换矩阵获取模块1、相对位置及朝向获取模块3、数据变换模块5。变换矩阵获取模块1用以通过局部地图3d点和全局地图3d点的描述符匹配,计算局部地图相对全局地图的变换矩阵;相对位置及朝向获取模块3用以获取设定照片相对参考照片的位置和朝向;数据变换模块5用以利用所述变换矩阵把视觉里程计得到的位置和朝向变换到全局地图中。
图10为本发明一实施例中视觉地图定位系统的组成示意图;请参阅图10,在本发明的一实施例中,所述变换矩阵获取模块1包括:特征及描述提取单元11、位置及朝向获取单元13、匹配关系获取单元15、变换矩阵计算单元17。特征及描述提取单元11用以获取参考照片、待匹配照片,提取参考照片和待匹配照片的特征点及描述符。位置及朝向获取单元13用以计算待匹配照片的特征点相对参考照片特征点的位置和朝向;已知位置的3d点构成局部地图。匹配关系获取单元15用以通过局部地图3d点到全局地图3d点的描述符匹配,找到局部地图和全局地图的匹配关系。变换矩阵计算单元17用以计算从局部地图点到全局地图的变换矩阵。
在本发明的一实施例中,所述变换矩阵计算单元的计算方式如下:设定全局变换由旋转量R和平移量t构成(在本发明的一实施例中,全局变换还包括其他);列出如下线性方程:p2=R*p1+t;根据(p1,p2)的对数列出对应数量的线性方程;由于有很多对(p1,p2),通过求解线性方程组的解,得到未知量R和t。
请继续参阅图10,在本发明的一实施例中,所述数据变换模块5包括:相对地图位置获取单元51、相机相对位置获取单元53。相对地图位置获取单元51用以使用变换矩阵得到对应图片相对地图的位置;相机相对位置获取单元53用以在接收到后续的图片后,通过视觉里程计得到当前相机相对于参考照片的位置,而后得到当前相机相对地图的位置。
在本发明的一实施例中,对于参考照片的每个描述符,所述特征及描述提取单元11在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的设定个匹配。所述位置及朝向获取单元13使用五点法得到待匹配照片相对于参考照片的变换矩阵,使用三角化方法得到3d点相对于参考照片的位置。
在本发明的一实施例中,所述匹配关系获取单元15包括:描述符匹配子单元、配对子单元。描述符匹配子单元用以对于参考照片的每个描述符,在待匹配照片中找到最相似的一个描述符;参考照片中提取出N个描述符,得到N对特征点的匹配;按照描述符的差异排序,保留差异最小的M个匹配对。配对子单元使用RANSAC算法筛出这些配对中错误的配对,得到最终的配对。
在本发明的一实施例中,相对位置及朝向获取模块3包括视觉里程计;所述视觉里程计计算第三图片相对第一图片的位置t_1_3和朝向R_1_3;局部地图相对全局地图的变换矩阵记为T_w_1。所述相对地图位置获取单元51使用变换矩阵T_w_1得到第三图片相对地图的位置t_w_3=T_w_1*t_1_3。所述相机相对位置获取单元53获取当前相机相对地图的位置t_w_n=T_w_1*t_1_n。
综上所述,本发明提出的视觉地图定位方法及系统,可以以很低的延迟得到当前相机位置的估计值,等运算时间较长的3d到2d的匹配结束后再来更新相机的位置得到更精确的位置,从而降低的定位的延迟。
本发明中,视觉里程计并不依赖于地图匹配的结果,所以通过视觉里程计可以快速得到所有图片的位置。当并行进行的地图匹配的结束后,再使用地图匹配的结果更新最新图片的位置。本发明相比于基于卡尔曼滤波的方法,具有更好的并行性。本发明也为未来使用性能更好、但是速度较慢的地图匹配方法提供了可能。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。