相关文章推荐
骑白马的领带  ·  DataTable.Load 方法 ...·  11 月前    · 
热心的移动电源  ·  JS ...·  1 年前    · 
犯傻的水桶  ·  c++ - 如何将 std::string ...·  1 年前    · 
不拘小节的金针菇  ·  python - ERROR: ...·  1 年前    · 

转载自https://zhuanlan.zhihu.com/p/25052509

一、三维重建整个过程的框架

导师常常对我说,研究某个东西要参与到其全过程之中,我们研究一个全新的领域,也应该首先对其有一个宏观上的认识,知道其中的大模块,在总体上对其有一些感性认识。这里大家可以参考《基于多幅图像的三维重建理论及算法研究》(戴嘉境)的论文框架,同时我根据自己的理解,进了一些调整与修改,注意以下内容均为概要,详细的内容将在第二章开始介绍,主要如下:

(一)图像预处理

由于我是基于无人机的三维重建,所获得的航拍图像往往有不少的问题,如畸变、噪音等,因此图像预处理阶段主要是对图像进行筛选、去噪、校正的一个过程。这里需要提到的是基于倾斜图像的三维重建技术,主要是通过一个五轴的立体相机来进行航拍,再利用所得到的倾斜图像来进行三维重建,一般都用于建筑群、城市等户外的场景,而这也是我在后续需要继续研究的内容。

(二)稀疏点云重建

在三维重建领域,基于点云数据的重建方式是相当成熟的,本文也是基于此技术进行研究。通过下图(实物为笔芯盒)就可以对点云有一个大致感性认识了,即将三维实体使用一系列的三维空间点来表示,现在对于这种点云数据的获取,主要通过激光扫描以及通过相关算法对图像进行分析得到,我所研究的是后者。 所谓稀疏点云,其来源即为特征点,而特征点即为图像中一些特征明显、便于检测、匹配的点,如建筑物的角、边缘点等。特征点的检测是整个三维重建过程中最为基础、根本的一步,其检测效果的好坏对最后的结果有很大的影响,现在常用的检测算法有SIFT、SURF等。

放大后可以看得更加明显:

在检测出每张图片所有的特征点后,就需要对对应的特征点进行匹配,在这个匹配的过程中,需要完成相机的标定,完成这一步的意义在于在后面能够通过标定的结果,将图像中二维数据点反推出其三维位置,由此就能将所有的二维特征点反推至三维空间,形成稀疏点云。这一步所使用的技术主要为 SFM(Structure from motion)。

(三)稠密点云重建

首先看下图,体会一下稀疏点云和稠密点云之间的区别:


稀疏点云:

同一物体的稠密点云:

稠密点云的生成主要使用到了 PMVS(Patch-Based Multi-View Stereo Software ,基于面片的三维立体重建算法) 这一技术。形成稠密点云后,实物的轮廓、特征等都有了明显的改善,基本可识别。

(四)表面(曲面)重建(Surface Reconstruction)

稠密点云虽然能够更加形象地还原出实物面貌,但是其仍只是大量孤立的三维空间的集合而已,要想实现真正的实物三维化,那就必须要对其进行表面重建,这里首先需要去了解Delaunay三角化的相关概念和原理,然后学习 Power Crust 算法(http://web.cs.ucdavis.edu/~amenta/powercrust.html),这个算法较为复杂,需要多花点时间去学习。

(五)纹理映射

在对点云数据进行表面重建之后,实物的轮廓、形状已经清晰可见,但是还需最后一步,即纹理映射,纹理映射的作用是使得重建的3D模型更接近实物,具有实物的颜色、纹理以及细节特点。