一段时间以来一直对三维重建中的分层重建概念理解的比较模糊,这两天特地梳理了一下,用博文记录下来。
NO0.两视图重建
基于图片序列的三维重建不管在科研还是实际应用中都有了比较成功的实现,Bundler就是一个很不错的例子,随后的VisualSFM也已经得到了很好的应用,近两年发展较快的还有SLAM等,而基于两视图实现空间点的三维重建便是构造完整图片序列三维重建的第一步。本文侧重于简单归纳实现两视图重建的理论基础,由于我们通过摄像机采集的照片中往往存在不同程度的误差或者噪声,因此如果只是简单的采用下面涉及的几何原理进行重建,得到的结果会和我们的预期有较大的差别,在实际的算法实现中还需要引入更多的技巧和方法,这里为了让重建原理更加简洁清晰,所以没有深入到算法实现的细枝末节。
根据重建结果的精确程度,可以将两视图重建分成三层,分别是:射影重构,仿射重构,度量重构(和相似重构以及大部分书里讲的欧式重构其实就是一个概念)。图2-图4显示了利用图1中两张图像在不同方法下获得的重建结果。
图1.用于重建的两张图像
图2. 通过射影重构方法获得的重建效果
图3.利用仿射重构的方法获得的重建效果
图4.利用度量重构的方法获得的重建效果
从重建的结果我们可以直观的看出,射影重建的结果只反映出了真实场景中直线之间的相交性;仿射重建结果则进一步反映出了真实场景中存在的直线平行关系;度量重构又进一步反映出了直线之间的夹角关系,实际场景中两条直线之间的夹角为多少度,重建结果中就为多少度。由此我们可以知道,射影重构,仿射重构和度量重构组成了进行三维重构由低到高的三个层次。度量重构的结果是和场景的实际三维情况最为接近的,假如我们将场景的实际三维情况称为真实的欧式重构,那么度量重构和真实的欧式重构之间其实还相差一个相似变换(所以度量重构又被称之为相似重构),但是除了不能从模型中测量出场景真实尺寸以外,度量重构的结果已经能够满足我们的大部分需求。
有了对两视图重建三个层次的初步了解,下面我就来梳理一下要实现这三个层次的重建需要的条件有哪些,涉及到的重要概念和结论有哪些,以及重建的过程是怎样的。
**********************\0o. 华丽丽的分割线 .o0/***********************
在上述假设的基础上,下面分别对射影重构,仿射重构和度量重构进行分析。
NO1.射影重构
图5.进行射影重构的反向推导图
在实际的求解过程中,首先需要利用特征点提取和匹配算法获得两个视图的匹配点对,然后基于这些匹配点对求得和这两个视图相关的基本矩阵F,根据已有的结论,在获得基本矩阵F的情况下,摄像机矩阵可以选择为,其中是满足