论文阅读《Camera pose voting for largescale image-based localization》

一、重点单词理解

repetitive 重复的
ill-posed 不适应
restrictive 约束 限制
tentative 假设、不确定的
equivalent 相等的
density 密度
indirect 间接
scalable 可扩展的
intersect 交叉
interval 间隔

二、Image-Based Localization

转自大佬的论文阅读,使我受益匪浅,至少能够明白图片定位和相机姿态估计的一些基础知识。参考博客链接:https://blog.csdn.net/yc461515457/article/details/51605353
首先介绍一下什么是Image-Based Localization。随着计算机视觉的发展,现在人们可以利用 SfM(structure from motion) 技术利用场景的图片集合来进行三维重建,得到场景的点云模型。这类软件有几种开源实现,比如 Bundler, VisualSfM。基于图像的定位系统就是利用已知的场景三维模型,通常是点云模型,来对新的图像进行定位,得到拍摄这副图像的相机在三维空间中的位置和朝向。

图1 Imaged-based Localization Standard Pipeline
如上图所示,右边是场景的点云模型的一部分,左上角是查询图像, 基于图像的定位就是要求得对应的相机的位置和姿态(点云中红色锥形表示了相机的位置和朝向)。

三、《Camera pose voting for largescale image-based localization》

    在该文中作者指出,随着模型尺寸的增加,在场景模型中查找查询图像特征和3D点之间的正确2D-3D匹配变得更加困难。与基于外观的滤波相比,作者研究了的空间验证的好处和局限性,并且作者提出了一种基于投票的姿态估计策略,比之前的方法能获得更多的匹配,在匹配数量方面呈现了O(n)的复杂度。
    基于图像的定位系统就是利用已知的场景三维模型,通常是点云模型,来对新的图像进行定位,建立图像的2D特征和点云模型中3D点的对应关系,可以通过在RANSAC循环内应用n点姿势求解器,最终得到拍摄这副图像的相机在三维空间中的位置和姿态朝向。但由于RANSAC的运行时间随着错误匹配的百分比呈指数增长,因此避免接受太多错误匹配至关重要。
    作者的贡献如下:①将空间验证表示为姿势参数空间中的霍夫投票问题,运行时间仅在匹配数量上呈线性增长。②证明了使用简单有效的基于局部(图像)几何形状的过滤操作,可以检测出大部分错误匹配。③结合了姿态先验知识,例如从GPS数据,惯性测量或消失点信息(如果可用)中获得有用信息。④可以在相机姿势上产生多模式的分布,而不会造成任何额外开销,因此非常适合处理重复场景。⑤研究了不同匹配策略的适用性以及允许一对多匹配的影响。

(1)基于投票的相机姿态估计

图2 基于线性过滤和位置投票过程的概述

    在本文中,我们放宽了匹配滤波器,并旨在利用几何线索。为了处理大量的异常值,需要一种快速且可扩展的异常值滤波器。图2.6所示就是本文中提出的线性异常值滤波器概述流程图,首先对查询图像image shape,得到每个特征一对多的匹配关系,然后把所有这些匹配关系通过一系列的几何滤波,滤除掉大部分错误的匹配关系,然后再构建文章中提出的投票形状 Voting Shape,因为作者还考虑位置的先验信息(比如GPS位置),如果有,就可以进一步约束投票形状。这里对每一个2D-3D匹配关系都可以构建出一个 投票形状,对区域进行一个投票,最后票数最多的区域所表示的姿态就认为是真实的相机姿态,然后得到局内点,最后对这些局内点通过RANSAC算法,求得最终的姿态。它减少了发现相机姿势的问题,该姿势最大化了几个2D投票问题的内部数量。

①将姿态估计作为注册问题

    结合公式(1):
c ( x , r ) = v ⋅ ( x + u ) , ∀ u ∈ R 2 , ∥ u ∥ = r , v ∈ R ≥ 0 (公式1) c(x,r)=v\cdot(x+u), \forall u \in R^2, \left \| u \right \| = r,v \in R \ge 0 \tag{公式1} c(x,r)=v(x+u),uR2,u=r,vR0(1)
    给定旋转矩阵R和转换后的齐次坐标系,这将姿势估计问题从6DoF减少到找到绕重力方向的旋转 R ϕ ∈ R 2 × 2 R_{\phi} \in R^{2 \times 2} RϕR2×2和平移 t ∈ R 3 t \in R^3 tR3。对于一个2D-3D匹配关系,光心、2D像点、3D点并不能同时准确地在一条直线上,考虑到一定的误差,可以认为把3D点反投影到像平面上,会和2D像点的误差在r个像素内。通过连接光心和像平面上以像点为圆心、 r为半径的圆上的点,可以得到一个圆锥,圆锥无限延伸下去,那么在三维空间中对应的3D点就应该会落入到这个圆锥体中,把这个圆锥体称为误差圆锥,也就是上一篇论文中提及的,如图3所示。

图3 误差圆锥(error cone)和误差形状(error shape)

    结合公式2,配准问题进一步限制在偏移 X z − h X_z-h Xzh,即C的圆锥部分 c x ( x , r ) = X z − h c_x(x,r)=X_z-h cx(x,r)=Xzh,因为相机的高度不确定,有一个变化的区间 [ h m i n , h m a x ] [h_{min},h_{max}] [hmin,hmax] ,那么3D点相对于光心的高度变化范围就是,这时3D点就会落在相对光心的高度为 [ h 1 , h u ] [h_1,h_u] [h1,hu]的两个平面截取error cone 所得到的立体中。如果把此时的立体和3D点都投影到水平面上,会得到上图中蓝色梯形所示区域,3D点也应该在蓝色梯形中。把蓝色区域和图3表示的四边形称为error shape。

[ R ϕ 0 0 1 ] X + [ t ′ − h ] ∈ c ( x , r ) , t = [ t ′ , − h ] T (公式2) \begin {bmatrix} R_{\phi} & 0 \\ 0 & 1 \\\end {bmatrix}X+ \begin {bmatrix} t' \\ -h \\ \end {bmatrix} \in c(x,r),t= \begin {bmatrix} t' , -h \end {bmatrix}^T \tag{公式2} [Rϕ001]X+[th]c(x,r),t=[t,h]T(2)

    因为在空间中,3D 点的位置是已经确定的,所以把 error shape 转换到相机的位置上,这样的话相机可能的位置就不再是只在一个圆的边上了,而应该是在一个圆环内。对于每一个2D-3D匹配对,都可以构建出这样一个圆环区域表示相机可能的位置,如果所有2D-3D匹配关系都考虑,得到相交最多的位置就是相机最有可能的位置了,如图4(右)所示黄色局域。
    计算每个圆环的位置,然后通过对平面进行划分,对每一个小区域投票,得到投票计数最多的区域就是相机的位置了,最后可以通过此时的内点再进行一个RACSAC+PnP的操作,得到更精确的位置和姿态。

图4 误差圆锥生成error shape(左)以及基于多次相交的相机定位(右)

②线性时间姿势投票

    作者提出从不同的角度看待问题,并将误差形状转换为全局坐标系。即,对于给定的对应关系,将投影的3D点位置设置为固定,然后将不确定性转换为相机位置,转换后的误差形状error shape(也称为Voting Shape)的位置也取决于摄像机的方向。
坐标系变换的证明如下:考虑一个2D-3D匹配关系 m = ( x , X ) m=(x,X) m=(x,X) M ‾ \overline{M} M是M的中心,通过Minkowski difference得到相机的位置的 Error Shape M c ( m ) = { 0 − p + M ‾ ∣ p ∈ M } M_c(m)=\left\{0-p+\overline{M} | p \in M \right\} Mc(m)={ 0p+MpM} t ′ = X ′ − M ‾ t'=X'-\overline{M} t=XM,其中是点X在xy平面的投影, t ′ t' t是相机坐标系到世界坐标系的平移。因此世界坐标中的Voting Shape 就是 V ( m ) = M c + t ′ V(m)=M_c+t' V(m)=Mc+t。如果考虑不同的方向,则需要考虑执行之前本地坐标系旋转的角度,公式更新为:
V ( m , ϕ ) = R ϕ M c + t ϕ ′ = { X ′ − R ϕ p ∣ p ∈ M } (公式3) V (m, \phi) =R_\phi M_c+t'_\phi= \left\{X'-R_{\phi}p|p \in M \right\} \tag{公式3} V(m,ϕ)=RϕMc+tϕ={ XRϕppM}(3)

    作者利用这一事实来设计线性时间相机姿态估计算法(如图2.6右),迭代一组固定的旋转,每个2D-3D匹配对其投票形状中包含的区域投票。在几个2D投票空间中累积这些投票,每个摄像机方向一个,这使得能够单独处理每个匹配。最终根据获得最多选票的方向和位置来定义最佳摄像机姿势,并在投票点最最集中的地方,使用RANSAC循环内的3点求解器计算最终的6DoF姿势。
    通过以下三步得到O(n)的时间复杂度。首先,给定旋转角度,对所有n个对应关系的单次迭代足以聚合2D摄像机位置的投票。第二,在判别摄像机角度时,需要对k个离散角度分别执行该过程。第三,为了相机高度的大变化以及传播的不确定性导致导致较少的判别性投票,作者还将量化的高度范围量化为1个较小的间隔,并对每个间隔进行测试。也就是说对于多个匹配对,都这样构建一个Voting Shape,所有的这些Voting Shape 重叠部分最多的就是相机最有可能的位置。

(2)高效相机投票

    作者首先计算在相机坐标系下误差形状Error Shape的表达式。这里是用一个四边形来拟合首先来计算在相机坐标系下Error Shape的表达式。这里是用一个四边形来拟合Error Shape,需要得到Error Shape距离摄像机中心的最近距离 d n d_n dn和最远距离 d f d_f df,以及xy平面上的最左和最后的射线 r r r_r rr, r l r_l rl,具体Voting Shape的构建如图5(a)和(b)所示。
此外还需要考虑重力方向的不确定度,因为重力方向是通过垂直消隐线计算出来的,会有一定的不确定性。

图5 投票形状构建(a)和先验定位约束(b)

(3)基于几何约束的滤波器

    作者提供了一组可以单独应用于每个匹配的滤波器。它们基于3D模型的属性与局部描述符之间的几何关系,旨在减少投票的总票数。分为以下四小点进行描述。
    ①相对特征方向Relative Feature Orientation:局部描述符是相对于特征方向定义的。给定已知的重力方向,那么就可以得到所有特征的方向相对于重力方向的夹角,在固定的参考系中表达查询特征方向,并将其与数据库图像的特征方向进行比较。如果查询方向与属于匹配3D点的区间中的方向相差超过固定阈值,则剔除匹配。
    ②SFM中的3D点可见性3D Point Visibility from SfM Model:局部描述符对于视点变化不是不变的。对于一个3D点,能够确定可见3D点的最小和最大旋转角度,数据库中观测到这个点的相机的位置是已知的,那么查询相机如果也能看到这个3D点,那么视角应该也保持一定的一致性。
    ③特征尺度Feature Scale:作者还利用在图像中检测到特征的尺度来推断对应的可行性。给定具有焦距 f 的数据库图像,观察属于具有尺度 SI 的 3D 点 P 的特征,使用类似三角形的概念来获得 3D 点的尺度。公式为 S 3 D = S I ∗ d / f S_{3D}=S_I*d/f S3D=SId/f,其中d是p的深度,同一个3D点 S 3 D S_{3D} S3D计算出来的的分布也应该是保持一致性。
    ④先验位置Positional Prior:即如果有GPS这种先验位置的信息,可以直接限制投票区域。作者将测量的位置和其不确定性的上限表示为投票空间中的圆形区域。对于每个匹配,只需要考虑其投票形状与此先前区域的交集,
这样能在消除一些错误的匹配。作者也指出查询相机的方向与其可能的位置之间存在强烈的关系,使用姿势先验来限制可行摄像机位置的集合也限制了落在不确定区域之外的每个匹配3D点的可行旋转集合。

(4)反思与总结

    在本文中,作者提出了一种基于Hough投票的新型相机姿态估计技术,包括一组简单的滤波操作,所有操作均采用强几何约束,方法运行时间随着匹配的数量线性增长(时间复杂度降低为 O ( n ) O(n) On),因此允许在合理的时间内处理大量的对应关系(1:N)。结果也表明,仅使用更多匹配项并不一定会带来更好的本地化性能,可以去使用额外的滤波器或者更好的描述符实现进一步的改进。
    我重点理解PNP、基于2D-3D匹配的实现原理的基础知识,明白了基于图像定位的大致过程,能够对之前看的论文有一个新的认知,但现在看这种相机姿态定位的论文还是较吃力,许多先验知识还未完全掌握,需要进一步的努力学习,反思总结。该篇文章的特点是在基于图形定位的基础上,使用相机姿态投票Voting的方法,使得在扩大图片的尺寸的基础上,反而能使得原本越来越困难的2D-3D匹配变得简单,并且还缩小了时间复杂度。

猜你喜欢

转载自blog.csdn.net/weixin_43823854/article/details/102595811
今日推荐