[论文阅读]Structure-from-Motion Revisited

CVPR 2016 文章链接

1 速读

1.1 论文试图解决什么问题?这是否是一个新的问题?
试图解决Incremental Structure-from-Motion(从下称Incremental SfM)这个领域里没有一个鲁棒的、准确的、完整且可拓展的框架这一问题,是这一领域一直以来的问题,文章提出了一套优秀的框架。

1.2 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
SfM可分为:incremental, hierarchical, and global approaches三种,文章做的是研究最多的incremental SfM。
涉及到Correspondence Search+Incremental Reconstruction两部分研究,简言之找到关系+用关系恢复结构。

在实验部分对比的两个incremetal SfM框架:BundlerVisualSFM;两个global SfM 框架:DISCOTheia

1.3 文章的贡献是什么?
提出了一个当时“近乎理想”的incremental SfM并开源了代码COLMAP
①提出了一个关于场景信息的几何方法(geometric verification strategy),增强初始化和三角化的鲁棒性;
②提出了更好的如何选择下一帧的策略,提高了重构的鲁棒性和准确性;
🌂提出了一个鲁棒的三角化方法,在降低计算量的情况下恢复更完整的场景结构;
④将BA+re-triangulation+filter迭代进行,减小了drift的影响;
⑤针对密集图片集,通过合并冗余的视角实现更高效的BA

1.4 文章解决方案的关键是什么?
对给出的数据抽象提炼出更高维的信息(帧的状态、相机的聚类)加以使用,提升速度和鲁棒性 ①⑤
对直观上的可行方法做出数学抽象(点分布更均匀如何描述,更好的三角化如何描述)②③
理清SfM中各个部分的作用和效果,设计更合理的执行步骤④

1.5 实验如何设计?实验结果足够论证其效果吗?
效果很好

1.6 数据集是什么?
共17个数据集
请添加图片描述


以下是精读部分

2 基本概念

Structure-from-Motion (SfM):从无序的图片集之中恢复3D结构
①incremental:with an iterative reconstruction component,即序列processing中有迭代重构部分,如下图所示:
请添加图片描述
②hierarchical:没说
🌂global:没说

以下是各个模块的基本功能描述,有SLAM基础的应该都基本了解
匹配搜索 Correspondence Search:输入照片 I = { I i ∣ i = 1 。。。 N I } \mathcal{I} = \{I_i | i=1。。。N_I\} I={Iii=1。。。NI}
Feature Extraction:特征提取
output: F i = { ( x j , f j ) , ∣ j = 1... N } \mathcal{F}_i = \{(x_j, f_j), | j=1...N\} Fi={(xj,fj),j=1...N} x j x_j xj 表示特征在图像中的位置, f j f_j fj 表示对应的描述子

Matching:寻找看见相同场景(即特征 F i \mathcal{F}_i Fi)的图片,这里似乎在所有图片间寻找,类似SLAM中LoopClosing的部分而不是Tracking的部分,最常用的方法就是所有图片间两两检测,但是非常耗时。
output:可能的匹配图片对 C = { { I a , I b } ∣ I a , I b ∈ I , a < b } \mathcal{C} = \{\{I_a, I_b\} | I_a, I_b\in \mathcal{I}, a<b\} C={{Ia,Ib}Ia,IbI,a<b}和特征匹配结果 M a b ∈ F a × F b \mathcal{M}_{ab}\in \mathcal{F}_a\times\mathcal{F_b} MabFa×Fb

Geometric Verification:用几何方法检验匹配图片对 C \mathcal{C} C。①单应矩阵homography H描述在一个平面上的匹配点对之间的变化;②本质矩阵essential matrix E和基础矩阵fundamental matrix F描述由对极几何描述的匹配点间的关系;🌂RANSAC:鲁棒估计方法,减小离群点的影响。
output:经过验证的照片对 C ‾ \mathcal{\overline{C}} C,通过的匹配结果 M ‾ a b \mathcal{\overline{M}}_{ab} Mab,匹配结果的相关性 G a b G_{ab} Gab

递增式重构 Incremental Reconstruction
Initialization:寻找可以构建高质量初始化的两个初始关键帧

Image Registration:求解PnP问题得到帧间运动。PnP使用2D-3的匹配点计算相机位姿 P c P_c Pc和相机内参 K K K(如果为校准的话),通常使用RANSAC求解

Triangulation:新的相机观察到之前没有的点,用三角化重构点来扩展场景

Bundle Adjustment:BA是优化相机位姿 P c P_c Pc和路标点 X k X_k Xk的非线性方法,能够削减重构部分的Image Registration和Triangulation的开环连接导致的结果偏移。其优化的重投影误差为:
E = ∑ j ρ j ( ∣ ∣ π ( P c , X k ) − x j ∣ ∣ 2 2 ) E = \sum_j \rho_j \left(||\pi(P_c, X_k)-x_j||_2^2\right) E=jρj(∣∣π(Pc,Xk)xj22)表示路标点通过位姿变换并经过投影后和其匹配点的误差,具体意义可以看我关于Ceres的文章
提到了①Exact methods:通过求解一个稠密或稀疏的矩阵解决问题;②Inexact methods:使用迭代求解器求解。

3 各部分

3.1 Scene Graph Augmentation

对应:src/estimators/two_view_geometry.cc中的EstimateCalibrated函数
本质上就是计算一些关于帧的信息作为重建过程中的粗略筛选指标,换言之对场景图做了增强。区分了the model type:纯旋转、平面、正常、是否为错帧

计算基础矩阵F、单应矩阵H、本质矩阵E下的inliners数目 N F , N H , N E N_F, N_H,N_E NF,NH,NE
另外还计算了在图像边缘的inliners数目 N S N_S NS,用于检测来自网络的图片是否可用WTFs(含有水印、时间戳、镶边)

三个判断:
N H / N F < ϵ H F N_H/N_F<\epsilon_{HF} NH/NF<ϵHF,表示画面是否大多在一个平面上
N E / N F > ϵ E F N_E/N_F>\epsilon_{EF} NE/NF>ϵEF,表示内参校准是否有效
①and②的情况下对内点进行三角化;计算三角化角度中位值 α m \alpha_m αm用于区分纯旋转pure rotation (panoramic)和平面planar scenes情况
N S / N F > ϵ S F   o r   N S / N E > ϵ S E N_S/N_F>\epsilon_{SF} \ or \ N_S/N_E > \epsilon_{SE} NS/NF>ϵSF or NS/NE>ϵSE,此时检测当前匹配是否符合纯平移,若符合表示当前帧是WTFs(论文中是和 N F N_F NF做比较,实际是和inliners)

处理:
①WTFs不加入Scene graph;
②不是WTFs的标记the model type
🌂 N F , N H , N E N_F, N_H,N_E NF,NH,NE中最大的那个记为inliners;
④只将校准有效的且不是纯旋转的用于重构
④不对纯旋转三角化

3.2 Next Best View Selection

对应:src/base/images中的IncrementCorrespondenceHasPoint3D函数
如何选择下最好的下一帧很重要,但是难点在于原数据几乎没什么先验信息,只能参考外观、两帧间关系、已重建的场景
重点是在描述帧好坏的指标上,传统方法文章采用具有最多共视三角化点的帧(sees most triangulated points), 列举了一篇文章说明PnP的求解位姿结果的准确性还和观测点的分布有关。因此文章提了一个综合两者的方法,如图所示:请添加图片描述
总得分 S \mathcal{S} S,层数 L L L,所在层 l l l,分辨率 K l K_l Kl,权重 w l w_l wl

本质上是一个 L L L层的4叉树,树的第 l = 1... L l=1...L l=1...L层表示按照分辨率 K l = 2 l = K l − 1 ∗ 2 K_l=2^l=K_{l-1}*2 Kl=2l=Kl12的分辨率分割图像,或者表示对 l − 1 l-1 l1层的每个节点再分为四份,每个节点的权重为 w l = K l w_l=K_l wl=Kl(文章中写的是 w l = K l 2 w_l=K_l^2 wl=Kl2但是按照图片数据计算一下应该不对)。节点中有特征点时节点有效,所有层有效节点的权重和为最终的得分 S \mathcal{S} S

3.3 Robust and Efficient Triangulation

对应:src/estimators/triangulation.cc中的Estimate和Residuals函数
存在一个问题,即大多近似匹配技术找到的匹配是:相似外表(similar in appearance)+较小基线距离(a small baseline),但是三角化需要的基线距离不能太小,故可以考虑建立两视角联通(concatenating two-view correspondences),通过传递性得到具有较大基线距离的匹配。
①对于离群点的影响,作者通过RANSAC解决。对联通图进行RANSAC计算,做多次较为均匀的采样,对采样的部分做迭代优化计算,并保存最好的结果,高效+鲁棒;
②对于错误的相机位姿的影响,作者确保在三角化之前寻找一致的跟踪;
③对于联通图中可能存在的多个可三角化点,通过递归不断寻找;

对于一组特征轨迹 T = { T n ∣ n = 1... N T } \mathcal{T} = \{T_n | n=1...N_T\} T={Tnn=1...NT},其中 T n T_n Tn包含归一化的像素点坐标 x ‾ n ∈ R 2 \overline{x}_n\in\mathbb{R}^2 xnR2+相机位姿 P w 2 c − n = [ R T , − R T t ] ∈ S E ( 3 ) P_{w2c-n}=[R^T, -R^Tt]\in SE(3) Pw2cn=[RT,RTt]SE(3)目标为在两张图中选恢复最好的三角结果: X a b ∼ τ ( x ‾ a , x ‾ b , P a , P b )   w i t h   a ≠ b X_{ab}\sim\tau(\overline{x}_a, \overline{x}_b, P_a, P_b)\ with\ a\neq b Xabτ(xa,xb,Pa,Pb) with a=b,其中 τ \tau τ为选定的三角化方法, X a b X_{ab} Xab为三角化的点。

三个指标
①角度足够大; α = a r c c o s ( t a − X a b ∣ ∣ t a − X a b ∣ ∣ 2 ⋅ t b − X a b ∣ ∣ t b − X a b ∣ ∣ 2 ) \alpha=arccos(\frac{t_a-X_{ab}}{||t_a-X_{ab}||_2}\cdot \frac{t_b-X_{ab}}{||t_b-X_{ab}||_2}) α=arccos(∣∣taXab2taXab∣∣tbXab2tbXab)
②在两帧上恢复的 d a d_a da d b d_b db深度大于0 d = P r o w 3 ⋅ [ X a b , 1 ] T d=P_{row_3}\cdot[X_{ab}, 1]^T d=Prow3[Xab,1]T
🌂重投影误差小于阈值 t t t; e n = ∣ ∣ x ‾ n − [ x ′ z ′ y ′ z ′ ] ∣ ∣ 2   w i t h [ x ′ y ′ z ′ ] = P n [ X a b 1 ] e_n=\left|\left|\overline{x}_n-\begin{bmatrix} \frac{x'}{z'} \\ \frac{y'}{z'} \\ \end{bmatrix}\right|\right|_2\ with\begin{bmatrix} x' \\ y' \\ z' \\ \end{bmatrix} = P_n\begin{bmatrix} X_{ab} \\ 1 \\ \end{bmatrix} en= xn[zxzy] 2 with xyz =Pn[Xab1]

3.4 Bundle Adjustment

对应:src/controllers/incremental_mapper.cc中的IterativeGlobalRefinement函数
BA减小累计误差,在每帧对“most-connected images”做局部BA,在处理一定比例的数据后做全局BA(提高效率)
四个部分:
①参数化Parameterization:柯西函数作为鲁棒核函数;相机数量多的情况使用稀疏直接求解器;大规模问题使用PCG;可使图像间共享相机模型;未知相机模型用一个带径向畸变参数的相机模型;
②过滤Filtering:全局BA之后,滤除高投影误差的+三角化角度不够的观测;还需要检查相机退化,没有3D点的图片和有异常参数的图片会被删除;
🌂重三角化Re-Triangulation:在BA之后,对没有成功三角化但是投影误差在阈值之下的点做重三角化;
④迭代优化Iterative Refinement:迭代(BA+Re-Triangulation+Filtering)(但从代码上看重三角化时没有放在循环里面的),直到没有被滤除的点和重三角化的点才停止。因为BA之后会滤除对BA有严重影响的离群点,再次BA会得到更好的结果,通过迭代直到结果无法再优化为止;

3.5 Redundant View Mining

利用SfM的内部特征和密集照片集对将高重叠场景聚合分组来加速BA
有提到前人这方面的工作,作者是在一篇论文的基础上在三个方面提升:
①是利用SfM的内部特征实现,更高效;
②将场景分为多个重叠相机组成的groups,而非分将很多相机聚集到一个submap中,区别在于一个组中的所有相机用一个相机去替代了;
🌂eliminate了原作者的一个什么策略(不懂)

共视程度的描述:
一个image对一组点 N x N_x Nx的观测为一个观测向量 v i ∈ { 0 , 1 } N x v_i\in\{0,1\}^{N_x} vi{0,1}Nx,向量第n位表示点 N x N_x Nx是否被image观测到,则image a和image b之间的共视程度 V a b = ∣ ∣ v a ∧ v b ∣ ∣ ∣ ∣ v a ∨ v b ∣ ∣ V_{ab} = \frac{||v_a \wedge v_b||}{||v_a \vee v_b||} Vab=∣∣vavb∣∣∣∣vavb∣∣

将image和points分为unaffected和affected两部分
unaffected G = { G r ∣ r = 1... N G } \mathcal{G}=\{G_r | r=1...N_G\} G={Grr=1...NG} N G N_G NG组高度重叠的image,每个组共享一个相机
一个组的构建:
 ①对图片按照观测数排序 I ‾ = { I i ∣   ∣ ∣ v i ∣ ∣ ≥ ∣ ∣ v i + 1 ∣ ∣ } \mathcal{\overline{I}}=\{I_i |\ ||v_i||\geq||v_{i+1}||\} I={Ii ∣∣vi∣∣∣∣vi+1∣∣}
 ②取第一个image   I a \ I_a  Ia新建一个 G r G_r Gr,在后续image   I b \ I_b  Ib中寻找同组image,如果 V a b > V V_{ab}>V Vab>V ∣ G r ∣ < S |G_r|<S Gr<S则加入组 G r G_r Gr,否则新建一个组 G G G。为了加速匹配,只遍历 I a I_a Ia观测角 ± β \pm\beta ±β内的前 K r K_r Kr个image;
 🌂一个组的BA cost为 E g = ∑ j   ρ j ( ∣ ∣ π g ( G r , P c , X k ) − x j ∣ ∣ 2 2 ) E_g = \sum_j\ \rho_j\left(\left ||\pi_g(G_r, P_c, X_k)-x_j|\right|_2^2 \right) Eg=j ρj(πg(Gr,Pc,Xk)xj22)具体的意义没看明白,到时候对着代码看吧
affected新加入的image或重投影误差> r r r观测点比例大于阈值 ϵ r \epsilon_r ϵr的image为affected,独立分组以优化其参数

问题

对错帧的相似变换是什么?
SFM和SLAM的区别是什么?
选取最好的第二帧是在做什么?从所有图片里选?
track elements是啥?
相机退化degenerate cameras是什么?

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Bayesian Color Constancy is a computational framework that attempts to solve the problem of color constancy in computer vision. Color constancy refers to the ability of the human visual system to perceive the colors of objects as relatively constant, despite changes in the spectral composition of the illuminating light. The Bayesian Color Constancy framework is based on the idea that the visual system should use prior knowledge about the statistical properties of the colors in the scene, as well as the statistical properties of the illuminant, to infer the true colors of the objects in the scene. This is done by formulating a probabilistic model of the relationship between the colors of the objects and the illuminant, and then using Bayesian inference to estimate the most likely illuminant given the observed colors. The paper "Bayesian Color Constancy Revisited" presents a review of the Bayesian Color Constancy framework, and proposes several improvements to the original model. One of the main contributions of the paper is the development of a new method for estimating the prior distribution of illuminants, based on a statistical analysis of the colors in a large set of natural images. The authors also propose several modifications to the likelihood function used in the model, in order to better capture the properties of real-world images. Overall, the paper provides a comprehensive overview of the Bayesian Color Constancy framework, and presents several important improvements and extensions to the original model. These developments have the potential to improve the accuracy and robustness of color constancy algorithms in computer vision applications.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值