1.本发明属于视觉slam处理技术领域,涉及一种基于全景图像的相机位姿估计方法及系统。
背景技术:2.随着机器人越来越多地融入日常生活,越来越多的关注其在现实世界中的健壮性。更小、功能更强大的计算机和传感器,以及更高效的算法的结合,造就了移动机器人的兴起,如自动驾驶汽车、航空摄影无人机和搜索救援无人机。对于移动机器人而言,其自身定位是一项重要工作,现有常用于估计机器人位置的方法是gps,但需要无线通信,在许多环境中,尤其在室内是不可用的,因此,必须使用其他传感器来估计机器人的状态并绘制其周围的环境。估计机器人的姿态同时构建周围障碍物的地图被称为同步定位与地图构建(simultaneously localization and mapping,slam)。
3.视觉系统的一个重要变量是摄像机视场(fov),传统镜头的视场一般小于120度,而以鱼眼相机和全景环带相机为代表的全向相机(omnidirectional camera)拥有超过180度乃至更大的视场,大视场相机带来的超大视场感知能力,对于减少传感器数量、缩小移动机器人尺寸很有帮助。然而,广角图像存在光学畸变,使物理上的直线在图像中出现弯曲,并作为径向距离的函数从图像中心到边缘视场逐渐增加。传统的简单相机模型,例如针孔模型,无法模拟这种变形,因此传统的计算机视觉一直集中在具有最小变形的透视相机上,而没有考虑更大的fov。但是,在导航任务中使用更宽的视场具有许多潜在的好处,因为视觉slam更多依赖于跟踪相机周围的环境,直觉上希望有一个更大的视场,以便在瞬间图像中可以看到更多的环境。因此,全景相机是视觉slam的一种理想设备。
4.目前主流的特征点提取主要有fast角点、harris角点等,描述子计算方式有brief描述子等,但这些方法都针对传统的以针孔模型成像的图像。对于全景图像,目前还缺乏一种鲁棒有效的提取方式。
5.现有的slam技术主要使用传统相机,成像模型主要是利用针孔成像模型进行探测,例如,专利号为cn110197455a的专利文献公开的二维全景图像的获取方法以及专利号为cn111360780a的专利文献公开的一种基于视觉语义slam的垃圾捡拾机器人。传统的特征点提取和损失函数计算往往也基于针孔模型设计,对于存在较大畸变的全景图像,传统的特征点描述子往往会导致匹配失败。由于图像失真会导致特征匹配算法失败,以及全景相机的图像会因为匹配困难导致鲁棒性差,现在还很少有使用全景相机图像作为视觉slam输入的方法,这就导致全景环带相机无法作为一种大视场低成本的传感器应用到slam技术中。
技术实现要素:6.基于克服上述现有视觉slam技术中的缺陷,同时发挥全景环带相机的视场优势,本发明的目的是提供一种基于全景图像的相机位姿估计方法及系统,以解决全景图像的特
征点提取困难的现状,并利用所提出的损失函数,准确估计相机位姿。
7.为了实现上述发明目的,本发明采用如下技术方案:
8.一种基于全景图像的相机位姿估计方法,包括以下步骤:
9.s1、采集全景图像,并对全景图像进行图像预处理;
10.s2、对图像预处理之后的全景图像进行畸变校正,得到校正图像;
11.s3、采用orb特征提取算法对校正图像进行特征点提取并进行描述子计算;
12.s4、对相邻两帧图像进行特征点匹配,并基于匹配后的特征点分别在两个像平面上成像位置的半径以及半径之差对重投影误差附加权重以构建损失函数,通过使损失函数最小化以对相机位姿进行估计。
13.作为优选方案,所述步骤s1中,图像预处理为直方图均衡化。
14.作为优选方案,所述步骤s2中,畸变校正的过程包括:
15.设p是坐标为(x,y,z)
t
的三维空间点,u是p在像平面上的投影,坐标为(u,v)
t
,(x,y)
t
与(u,v)
t
成正比,符合如下关系:
[0016][0017]
其中,fb(ρ)=α0+α2·
ρ2+
…
+αn·
ρn;α0、α2、
…
、αn为多项式系数;
[0018]
利用反向投影函数π-1
(u),图像坐标到对应的物点三维坐标的映射关系为:
[0019]
p=π-1
(u)=λ-1
·
g(u)
[0020][0021]
相应地,投影函数为:
[0022]
u=π(p)=f
p
(θ)
·
h(p)
[0023]
其中,f
p
(θ)=β0+β2·
θ2+
…
+βn·
θn[0024][0025]
得到标定系数fb(ρ)和f
p
(θ)中的一个,即可得到投影函数或反投影函数,以实现全景图像的畸变校正。
[0026]
作为优选方案,所述步骤s3中,特征点提取的过程包括:
[0027]
设校正图像的边缘像素点的搜索半径为2,实际半径为r,两者乘积为2r;相应地,对于校正图像中其他像素点,则其搜索半径为其中,r
′
为像素点的实际半径;实际半径定义为像素点至图像中心点的距离;
[0028]
由于全景环带相机中央存在实际半径为r0的盲区,因此最小实际半径对应的搜索
半径为向下取整对应最大搜索半径为则用于比较的像素点个数为4
·
(r
max
+1);相应地,对于其他搜索半径均进行向下取整;
[0029]
若搜索半径之内用于比较的像素点个数少于4
·
(r
max
+1),则利用线性插值插入目标像素点,使得搜索半径之内用于比较的像素点个数为4
·
(r
max
+1)个;
[0030]
分别将各像素点作为中心点以与其周围的4
·
(r
max
+1)个用于比较的像素点进行比较;若连续3
·
(r
max
+1)个用于比较的像素点与中心点的像素差的绝对值均大于设定阈值,则相应的中心点提取为特征点。
[0031]
作为优选方案,所述步骤s3中,特征点提取之后,还采用灰度质心法对特征点添加尺度和旋转的描述。
[0032]
作为优选方案,所述步骤s3中,线性插值插入的目标像素点的像素值为其左、右两像素点的像素值的均值。
[0033]
作为优选方案,所述步骤s3中,特征点的描述子计算,包括:
[0034]
设特征点的实际半径为r,以特征点为中心,在搜索半径为2的圆周上分别选取上、下、左、右、左上、右上、左下、右下八个角点,从每个角点开始,以为步长,根据角点位置以及步长沿角点至图像中心点的射线方向取八个像素点进行像素值比较,以进行brief描述子计算;
[0035]
以此类推,依次在搜索半径为3、4、5时,执行上述brief描述子计算过程,则特征点对应256组二进制串,作为特征点的描述子。
[0036]
作为优选方案,所述步骤s4中,特征点匹配包括:
[0037]
对相邻两帧图像逐个特征点进行描述子的汉明距离计算,选择汉明距离小于目标阈值的特征点作为匹配特征点。
[0038]
作为优选方案,所述步骤s4中,损失函数的构建,包括:
[0039]
以灰度差值得到的原始重投影误差为其中,和为匹配的第i个特征点对分别在相邻两帧图像中的亮度值,f(
·
)表示对亮度差的函数运算,n为匹配的特征点对的数量;
[0040]
设匹配的第i个特征点对在相邻两帧图像的实际半径分别为和则权重因子为:
[0041][0042]
相应地,对原始重投影误差附加权重得到损失函数为:
[0043][0044]
本发明还提供一种基于全景图像的相机位姿估计系统,应用如上任一项方案所述的相机位姿估计方法,所述相机位姿估计系统包括:
[0045]
图像采集模块,用于采集全景图像;
[0046]
图像预处理模块,用于对全景图像进行图像预处理;
[0047]
畸变校正模块,用于对图像预处理之后的全景图像进行畸变校正,得到校正图像;
[0048]
特征点提取模块,用于采用orb特征提取算法对校正图像进行特征点提取;
[0049]
描述子计算模块,用于对提取的特征点进行描述子计算;
[0050]
特征点匹配模块,用于对相邻两帧图像进行特征点匹配;
[0051]
损失函数构建模块,用于基于匹配后的特征点分别在两个像平面上成像位置的半径以及半径之差对重投影误差附加权重以构建损失函数;
[0052]
相机位姿估计模块,用于通过使损失函数最小化以对相机位姿进行估计。
[0053]
本发明与现有技术相比,有益效果是:
[0054]
(1)本发明的特征点提取充分考虑了全景环带镜头成像模型以及由此引入的畸变,对边缘到中心不同位置采取了不同的提取半径,并对传统的brief描述子提取进行了简化,由随机提取改为了按顺序间隔提取,加速了描述子计算过程。
[0055]
(2)本发明设计的损失函数计算方法更好的利用了全景环带镜头边缘视场良好的成像质量,并尽可能利用在两幅图像上的位置差距较小的特征点,对全景相机所引入的畸变影响做了尽可能小的处理。
[0056]
(3)本发明对损失函数的构建,考虑每个匹配特征点对的权重不同,对原始重投影误差附加权重构建损失函数,能够有效提升相机位姿估计的精度。
[0057]
(4)本发明设计的方法可以有效利用全景环带相机对周围环境的强大感知能力,从而显著提升视觉slam定位的速度,增强系统的目的性,改进总体的探测效率。
附图说明
[0058]
图1是本发明实施例的基于全景图像的相机位姿估计方法的流程图;
[0059]
图2是本发明实施例的全景环带相机成像模型示意图;
[0060]
图3是本发明实施例的特征点提取的流程图;
[0061]
图4是本发明实施例的基于全景图像的相机位姿估计系统的构架图。
具体实施方式
[0062]
为了更清楚地说明本发明实施例,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0063]
如图1所示,本发明实施例的基于全景图像的相机位姿估计方法,包括以下步骤:
[0064]
s1、采集全景图像,并对全景图像进行图像预处理;
[0065]
其中,利用全景环带相机采集全景图像;
[0066]
图像预处理的过程为:输入来自全景环带相机的全景图像,进行直方图均衡化,提升图像的对比度,便于后续特征点的提取。
[0067]
s2、对图像预处理之后的全景图像进行畸变校正,得到校正图像;
[0068]
对直方图均衡化后的图像进行全景图像畸变校正,畸变校正基于scaramuzza等人
提出的泰勒模型进行。如图2所示,p是坐标为(x,y,z)
t
的三维空间点,u是p在像平面上的投影,坐标为(u,v)
t
,(x,y)
t
与(u,v)
t
成正比,符合如下关系:
[0069][0070]
其中,fb(ρ)=α0+α2·
ρ2+
…
+αn·
ρn;α0、α2、
…
、αn为多项式系数;
[0071]
如此,利用反向投影π-1
(u),可以得知图像坐标u到对应的物点三维坐标(2d到3d)映射关系,表述如下:
[0072]
p=π-1
(u)=λ-1
·
g(u)
[0073][0074]
相应的,投影函数可以表示如下:
[0075]
u=π(p)=f
p
(θ)
·
h(p)
[0076]
其中,f
p
(θ)=β0+β2·
θ2+
…
+βn·
θn[0077][0078]
这样,当通过标定得到fb(ρ)和f
p
(θ)的标定系数中的一个之后,就可以得到完整的投影和反投影模型,完成全景图像的畸变校正。
[0079]
s3、采用orb特征提取算法对校正图像进行特征点提取并进行描述子计算;
[0080]
其中,特征点提取的具体过程包括:
[0081]
对直方图均衡化并校正后的校正图像,使用本发明实施例提出的全景orb特征进行特征点提取;全景orb特征主要由全景oriented fast关键点以及改进的基于全景图像的breif(binary robust independent elementary features,二进制鲁棒独立基本特征)描述子构成。
[0082]
具体地,传统的fast特征点根据针孔模型进行提取,用于检测局部像素灰度变化明显的地方,其流程主要分为:在图像中选取像素点p,并假定亮度值(即像素值)为i
p
;然后设定阈值t(亮度值,比如可以选取i
p
的30%);然后以像素点p为中心,选取半径为3的圆上的16个像素点;假定选取的圆上有连续n个点的亮度大于i
p
+t或小于i
p-t,则认为像素p是特征点(例如,当n取12就认为是连续12个点,即fast-12);对所有像素点执行上述四步循环操作,完成整张图的fast特征点提取。
[0083]
对于本发明实施例的超大视场全景图像,其成像模型不再适用针孔模型,相应的特征点提取方法也需要进行修正。根据全景环带相机成像模型,像面上不同的u和v,对应球面上不同位置,进一步对应空间中不同的视场。在像面上同样距离的u和v,根据成像所用到的泰勒模型,越靠近像面圆心的,在空间对应的场景信息会更多。换言之,如果某时刻在远离成像面圆心的(u1,v1)观测到一个空间元素,在下一时刻由于全景相机的转动,这个元素
成像在靠近圆心的(u2,v2)处,则在(u2,v2)处的像会有一定程度的拉伸。因此,对于特征点提取,要按照成像模型做修改。根据fb(ρ)=α0+α2·
ρ2+
…
+αn·
ρn;模型可知,以成像面的半径r为参数,这里
[0084]
取两个半径位置r1和r2,则空间上的高度差为(α2·r22
+
…
+αn·r2n
)-(α2·r12
+
…
+αn·r1n
),近似满足于),近似满足于由于δr是一个比较小的量,因此可以取低阶项作为主要因子,即2α2·
r1·
δr,这里面α2是标定参数,可以忽略,因此影响空间高度差的主要因素是半径r1,因此在提取特征点时,以半径为参量,半径小的位置对应空间小的视场,在使用类似fast特征提取方法提取特征时要增大半径搜索范围,在空间增加视场以便于进行阈值比较。设计的半径搜索范围为保证对应空间相同范围,即需要搜索半径rs与当前半径的乘积为一常量。同时,考虑到大的搜索半径会对应更多的候选点,故对边缘像素点的搜索半径上的点进行金字塔缩放,这是一种类似线性插值的方法,以保证所有的特征点比较阈值时的比较次数相同。
[0085]
方法具体如下:将图像的边缘像素点的搜索半径设定为2像素,并边缘像素点实际的边缘半径为r像素,则乘积为2r;对应到半径r1的像素点,则搜索半径为保证所有像素点尺度的一致性;
[0086]
全景环带相机中央存在半径为r0的盲区,因此最小半径对应的搜索半径为如果向下取整对应最大搜索半径为则用于比较的像素点个数为4
·
(r
min
+1)个,那么对于其他搜索半径,也进行相同的向下取整,如果发现用于比较的点不足4
·
(r
min
+1)个,则利用线性插值方式在搜索半径上每条边等间隔位置(比如需要插入三个点,就将每条边四等分,在等分点处插入)插入一个像素点,其像素值为便于计算,取为其左右两像素点的均值。
[0087]
按照上述方式插值之后,所有像素点都会与周围的4
·
(r
min
+1)个用于比较的像素点进行比较,如果连续的3
·
(r
min
+1)个用于比较的像素点与中心像素的像素差的绝对值都大于设定的阈值t,则认为该点是一个全景特征点。
[0088]
同时还根据灰度质心法,计算每个图像块的特征点的方向,具体如下:
[0089]
在一个小的图像块b中,定义图像块的矩为m
pq
=∑
x,y∈b
x
pyq
i(x,y),p,q={0,1};通过矩可以找到图像块的质心连接图像块的几何中心o和质心c,得到方向向量则特征点的方向可以定义为这样,为全景特征点就添加了尺度和旋转的描述。
[0090]
其中,本发明实施例的特征点提取的流程如图3所示。
[0091]
另外,本发明实施例的描述子计算,包括:
[0092]
在提取完全景特征点之后,对每个全景特征点计算其描述子,传统的brief描述子是取特征点周围的128对随机像素p和q,如果p大于q则取1,反之取0,这样得到一个128维的
由0、1组成的向量,是一种二进制表达的用于图像匹配的描述子。在传统的针孔成像模型中,在任意位置选取的brief描述子,是采用周围相同位置的128对随机像素p和q,显然对于全景图像的畸变,这种传统的、在任何位置都采用相同位置的随机像素的方法不再适用,因此,在这里对brief描述子做修正,提出全景brief描述子。
[0093]
因为边缘像素点的搜索半径较小,在搜索时经过插值,而中心点的搜索半径较大,因此在计算全景brief描述子时,不能在像面边缘和中心采用完全相同位置的随机像素。因此,本发明实施例根据不同的像面半径r采取不同的间隔来比较,同样,记边缘半径为r,记当前特征点所在半径为r,以特征点为中心,在半径为2的圆周上分别选取上、下、左、右以及左上、右上、左下、右下八个角点,并从每个角点开始,以为步长(这里floor表示向下取整),根据角点位置以及步长沿角点至图像中心点的射线方向取八个像素点,即根据角点位置分别在横向和纵向以及45
°
方向与后面的八个点进行比较(例如,上方的点就往下与后面的八个点比较,右上的点就往左下与后面的八个点比较,右下的点就往左上与后面的八个点进行比较,步长表示比较间隔,如果步长为1就是连续取,步长为2就是间隔一个像素点取一个,依次类推);
[0094]
然后对半径3、4、5都进行一遍类似的操作,这样对每个特征点都得到256组二进制串,作为特征点的描述子。
[0095]
本发明实施例的描述子计算方法考虑到了像面中心位置实际上对应了比较大的空间视场,对描述子计算的范围进行了拉伸,对全景图像的畸变有较好的适应能力。
[0096]
s4、对相邻两帧图像进行特征点匹配,并基于匹配后的特征点分别在两个像平面上成像位置的半径以及半径之差对重投影误差附加权重以构建损失函数,通过使损失函数最小化以对相机位姿进行估计。
[0097]
在提取完特征点以及描述子计算之后,进行特征点匹配,具体而言就是对两幅图像逐个特征点进行描述子的汉明距离计算,选择汉明距离小于设定阈值的特征点作为匹配特征点。
[0098]
特征点匹配完成之后,要进行重投影误差的计算,本发明实施例对重投影误差的损失函数也做了相应设计。
[0099]
在全景环带相机成像过程中,像面上相同的径向间隔,边缘像素点占据的实际空间视场要小,但是在sensor上都占据相同的像素数,因此可以认为像面上的边缘像素点成像质量要优于中心点,因此在进行特征点匹配时,需要更倾向于相信边缘像素点,要赋予边缘像素点大的权重。同时,如果一对匹配好的特征点在两幅图上的半径位置相差较远,则倾向于认为这对特征点发生了较大位移,相对而言更不可信一些,要赋予小的权重。在特征匹配时,一般是让三维点的重投影误差最小化,重投影误差要利用匹配好的特征点进行计算。本发明实施例所设计的损失函数,对特征点依据其在两个像面上成像位置分别的半径以及半径之差附加权重,如果一个匹配好的特征在图像1上的半径为r1,在图像2上的半径为r2,并记图像边缘半径为r,最小成像半径为r0(即,中心盲区为r0)则权重因子可记为利用这个权重因子来设计损失函数,可以更好的利用边缘特征点以及在两帧图像上移动较小的特征点。
[0100]
本发明实施例的损失函数构建如下:
[0101]
以灰度差值得到的原始重投影误差为其中,和为匹配的第i个特征点对分别在相邻两帧图像中的亮度值,f(
·
)表示对亮度差的函数运算,例如,可以为一次函数关系或者二次函数关系;n为匹配的特征点对的数量;
[0102]
设匹配的第i个特征点对在相邻两帧图像的实际半径分别为和则权重因子为:
[0103][0104]
相应地,对原始重投影误差附加权重得到损失函数为:
[0105][0106]
本发明实施例对损失函数的构建,考虑每个匹配特征点对的权重不同,故对原始重投影误差附加权重构建损失函数,能够有效提升后续相机位姿估计的精度。
[0107]
对应于本发明实施例的基于全景图像的相机位姿估计方法,本发明实施例还提供基于全景图像的相机位姿估计系统,如图4所示,包括图像采集模块、图像预处理模块、畸变校正模块、特征点提取模块、描述子计算模块、特征点匹配模块、损失函数构建模块和相机位姿估计模块。
[0108]
其中,图像采集模块用于采集全景图像。例如,利用全景环带相机采集全景图像。
[0109]
图像预处理模块用于对全景图像进行图像预处理。图像预处理的过程为:输入来自全景环带相机的全景图像,进行直方图均衡化,提升图像的对比度,便于后续特征点的提取。
[0110]
畸变校正模块用于对图像预处理之后的全景图像进行畸变校正,得到校正图像。具体地,对直方图均衡化后的图像进行全景图像畸变校正,畸变校正基于scaramuzza等人提出的泰勒模型进行。如图2所示,p是坐标为(x,y,z)
t
的三维空间点,u是p在像平面上的投影,坐标为(u,v)
t
,(x,y)
t
与(u,v)
t
成正比,符合如下关系:
[0111][0112]
其中,fb(ρ)=α0+α2·
ρ2+
…
+αn·
ρn;α0、α2、
…
、αn为多项式系数;
[0113]
如此,利用反向投影π-1
(u),可以得知图像坐标u到对应的物点三维坐标(2d到3d)映射关系,表述如下:
[0114]
p=π-1
(u)=λ-1
·
g(u)
[0115][0116]
相应的,投影函数可以表示如下:
[0117]
u=π(p)=f
p
(θ)
·
h(p)
[0118]
其中,f
p
(θ)=β0+β2·
θ2+
…
+βn·
θn[0119][0120]
这样,当通过标定得到fb(ρ)和f
p
(θ)的标定系数中的一个之后,就可以得到完整的投影和反投影模型,完成全景图像的畸变校正。
[0121]
特征点提取模块用于采用orb特征提取算法对校正图像进行特征点提取。具体地,特征点提取的具体过程包括:
[0122]
对直方图均衡化并校正后的校正图像,使用本发明实施例提出的全景orb特征进行特征点提取;全景orb特征主要由全景oriented fast关键点以及改进的基于全景图像的breif(binary robust independent elementary features,二进制鲁棒独立基本特征)描述子构成。
[0123]
具体地,传统的fast特征点根据针孔模型进行提取,用于检测局部像素灰度变化明显的地方,其流程主要分为:在图像中选取像素点p,并假定亮度值(即像素值)为i
p
;然后设定阈值t(亮度值,比如可以选取i
p
的30%);然后以像素点p为中心,选取半径为3的圆上的16个像素点;假定选取的圆上有连续n个点的亮度大于i
p
+t或小于i
p-t,则认为像素p是特征点(例如,当n取12就认为是连续12个点,即fast-12);对所有像素点执行上述四步循环操作,完成整张图的fast特征点提取。
[0124]
对于本发明实施例的超大视场全景图像,其成像模型不再适用针孔模型,相应的特征点提取方法也需要进行修正。根据全景环带相机成像模型,像面上不同的u和v,对应球面上不同位置,进一步对应空间中不同的视场。在像面上同样距离的u和v,根据成像所用到的泰勒模型,越靠近像面圆心的,在空间对应的场景信息会更多。换言之,如果某时刻在远离成像面圆心的(u1,v1)观测到一个空间元素,在下一时刻由于全景相机的转动,这个元素成像在靠近圆心的(u2,v2)处,则在(u2,v2)处的像会有一定程度的拉伸。因此,对于特征点提取,要按照成像模型做修改。根据fb(ρ)=α0+α2·
ρ2+
…
+αn·
ρn;模型可知,以成像面的半径r为参数,这里
[0125]
取两个半径位置r1和r2,则空间上的高度差为(α2·r22
+
…
+αn·r2n
)-(α2·r12
+
…
+αn·r1n
),近似满足于),近似满足于由于δr是一个比较小的量,因此可以取低阶项作为主要因子,即2α2·
r1·
δr,这里面α2是标定参数,可以忽略,因此影响空间高度差的主要因素是半径r1,因此在提取特征点时,以半径为参量,半径小的位置对应空间小的视场,在使用类似fast特征提取方法提取特征时要增大半径搜索范围,在空间增加视场以便于进行阈值比较。设计的半径搜索范围为保证对应空间相同范围,即需要搜索半径rs与当前半径的乘积为一常量。同时,考虑到大的搜索半径会对应更多的候选点,故对边缘像素点的搜索半径上的点进行金字塔缩放,这是一种类似线
性插值的方法,以保证所有的特征点比较阈值时的比较次数相同。
[0126]
方法具体如下:将图像的边缘像素点的搜索半径设定为2像素,并边缘像素点实际的边缘半径为r像素,则乘积为2r;对应到半径r1的像素点,则搜索半径为保证所有像素点尺度的一致性;
[0127]
全景环带相机中央存在半径为r0的盲区,因此最小半径对应的搜索半径为如果向下取整对应最大搜索半径为则用于比较的像素点个数为4
·
(r
min
+1)个,那么对于其他搜索半径,也进行相同的向下取整,如果发现用于比较的点不足4
·
(r
min
+1)个,则利用线性插值方式在搜索半径上每条边等间隔位置(比如需要插入三个点,就将每条边四等分,在等分点处插入)插入一个像素点,其像素值为便于计算,取为其左右两像素点的均值。
[0128]
按照上述方式插值之后,所有像素点都会与周围的4
·
(r
min
+1)个用于比较的像素点进行比较,如果连续的3
·
(r
min
+1)个用于比较的像素点与中心像素的像素差的绝对值都大于设定的阈值t,则认为该点是一个全景特征点;否则,不是全景特征点,剔除掉。
[0129]
若认为是全景特征点,则根据灰度质心法,计算每个图像块的特征点的方向,具体如下:
[0130]
在一个小的图像块b中,定义图像块的矩为m
pq
=∑
x,y∈b
x
pyq
i(x,y),p,q={0,1};通过矩可以找到图像块的质心连接图像块的几何中心o和质心c,得到方向向量则特征点的方向可以定义为这样,为全景特征点就添加了尺度和旋转的描述。
[0131]
其中,本发明实施例的特征点提取的流程如图3所示。
[0132]
描述子计算模块用于对提取的特征点进行描述子计算。具体地,本发明实施例的描述子计算,包括:
[0133]
在提取完全景特征点之后,对每个全景特征点计算其描述子,传统的brief描述子是取特征点周围的128对随机像素p和q,如果p大于q则取1,反之取0,这样得到一个128维的由0、1组成的向量,是一种二进制表达的用于图像匹配的描述子。在传统的针孔成像模型中,在任意位置选取的brief描述子,是采用周围相同位置的128对随机像素p和q,显然对于全景图像的畸变,这种传统的、在任何位置都采用相同位置的随机像素的方法不再适用,因此,在这里对brief描述子做修正,提出全景brief描述子。
[0134]
因为边缘像素点的搜索半径较小,在搜索时经过插值,而中心点的搜索半径较大,因此在计算全景brief描述子时,不能在像面边缘和中心采用完全相同位置的随机像素。因此,本发明实施例根据不同的像面半径r采取不同的间隔来比较,同样,记边缘半径为r,记当前特征点所在半径为r,以特征点为中心,在半径为2的圆周上分别选取上、下、左、右以及左上、右上、左下、右下八个角点,并从每个角点开始,以为步长(这里floor表示向
下取整),根据角点位置以及步长沿角点至图像中心点的射线方向取八个像素点,即根据角点位置分别在横向和纵向以及45
°
方向与后面的八个点进行比较(例如,上方的点就往下与后面的八个点比较,右上的点就往左下与后面的八个点比较,右下的点就往左上与后面的八个点进行比较,步长表示比较间隔,如果步长为1就是连续取,步长为2就是间隔一个像素点取一个,依次类推);
[0135]
然后对半径3、4、5都进行一遍类似的操作,这样对每个特征点都得到256组二进制串,作为特征点的描述子。
[0136]
本发明实施例的描述子计算方法考虑到了像面中心位置实际上对应了比较大的空间视场,对描述子计算的范围进行了拉伸,对全景图像的畸变有较好的适应能力。
[0137]
特征点匹配模块用于对相邻两帧图像进行特征点匹配。具体而言就是对两幅图像逐个特征点进行描述子的汉明距离计算,选择汉明距离小于设定阈值的特征点作为匹配特征点。
[0138]
损失函数构建模块用于基于匹配后的特征点分别在两个像平面上成像位置的半径以及半径之差对重投影误差附加权重以构建损失函数。具体地,在全景环带相机成像过程中,像面上相同的径向间隔,边缘像素点占据的实际空间视场要小,但是在sensor上都占据相同的像素数,因此可以认为像面上的边缘像素点成像质量要优于中心点,因此在进行特征点匹配时,需要更倾向于相信边缘像素点,要赋予边缘像素点大的权重。同时,如果一对匹配好的特征点在两幅图上的半径位置相差较远,则倾向于认为这对特征点发生了较大位移,相对而言更不可信一些,要赋予小的权重。在特征匹配时,一般是让三维点的重投影误差最小化,重投影误差要利用匹配好的特征点进行计算。本发明实施例所设计的损失函数,对特征点依据其在两个像面上成像位置分别的半径以及半径之差附加权重,如果一个匹配好的特征在图像1上的半径为r1,在图像2上的半径为r2,并记图像边缘半径为r,最小成像半径为r0(即,中心盲区为r0)则权重因子可记为利用这个权重因子来设计损失函数,可以更好的利用边缘特征点以及在两帧图像上移动较小的特征点。
[0139]
本发明实施例的损失函数构建如下:
[0140]
以灰度差值得到的原始重投影误差为其中,和为匹配的第i个特征点对分别在相邻两帧图像中的亮度值,f(
·
)表示对亮度差的函数运算,例如,可以为一次函数关系或者二次函数关系;n为匹配的特征点对的数量;
[0141]
设匹配的第i个特征点对在相邻两帧图像的实际半径分别为和则权重因子为:
[0142][0143]
相应地,对原始重投影误差附加权重得到损失函数为:
[0144][0145]
本发明实施例对损失函数的构建,考虑每个匹配特征点对的权重不同,故对原始重投影误差附加权重构建损失函数,能够有效提升后续相机位姿估计的精度。
[0146]
相机位姿估计模块,用于通过使损失函数最小化以对相机位姿进行估计,实现对相机位姿的精细估计。
[0147]
以上所述仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。