无人机图像处理技术之三维还原重建技术简介

军用/航空电子

370人已加入

描述

先简单介绍一下三维重建(Structure from Motion,SfM)的流程。

1. 照片拍摄

如果想与地图对齐,需要采集的图像文件exif字段有gps信息或者添加对应的地面控制点(Ground Control Point)

2. 提取特征点

从照片中提取具有一定不变性的特征点,在多张照片中都能找到的特征点将被用于后续图像匹配和全局模型生成。

常用的特征点提取算法有SIFT,SURF,ORB等。

3. 特征匹配

可以进行两两匹配,这样会导致 N2的时间复杂度。

也可以基于时序信息或GPS位置进行匹配,这样在照片很多的时候会显著减少用时,但可能导致误差积累。

成功匹配到足够多特征点的照片将被认为有相邻关系。每对成功匹配图像之间将可以计算一组相对位置关系,用于表示相机从一张图的拍摄位置到另一张图的相对位置需要经过怎样的运动。这样的运动通常可以表示为一个三维旋转矩阵R和一个位移向量t。旋转矩阵也可以用单位四元数紧凑表示。

4. 最优化过程

理论上如果匹配关系是一条链,可以直接计算每个点的位置。但如果照片之间的匹配是一张“网”(数据结构中的连通无向图),则每张照片对应的相机位置解算结果不是唯一的。虽然真实的相机位置是唯一的,但由于对同一个相机位置进行了多次观测,一定会产生误差。一般地,假设未知分布的误差项服从高斯分布(同方差下高斯分布信息熵最大),因此构造的三维点还原不重叠损失函数都是关于距离的平方的。此时最优化类似于弹簧网(能量正比于误差平方)的结构。如果有外部位置信息,可以理解成弹簧网固连在建筑物上,因此最优位置是确定的;如果没有则只有“弹簧”之间的位置是有最优解的,这张“弹簧网”在哪里则是可以任意解释的,与最优化过程无关。

解这种优化问题的方法是建立优化图,构造对应的雅克比矩阵J和海森矩阵H。进行Gauss-Newton或Levenberg–Marquardt下降。这里有一些把有冗余的旋转阵(李群)变成无冗余的向量(李代数)之类的数学技巧,就不过多介绍了。

经过多次下降,一般会得到一个较接近最优解的结果。

5. 点云生成

经过最优化,每张照片相机的位置和特征点对应的空间位置已经确定(这里注意,如果照片的exif信息没有GPS位置,也没有提供GCP的话,图像中物体的大小是不知道的。此时SE(3)变换退化成Sim(3)变换)。可以重建较为稀疏的点云,将特征点的位置通过三角计算还原到3d空间中。

6. 点云稠密化及过滤

通过上一步的粗匹配和粗点云,逐步求精的细化局部,提取更多的特征(不一定是特征点,也可能是区域块),进行匹配,得到较为稠密的点云。

一般的,一张图像的SIFT/SURF特征点只有几十个到几百个。这种匹配是很鲁棒的,但显然即使这些点全部匹配上也不足以恢复任何有价值的图形。这就需要稠密化点云,利用之前的相机位置姿态信息(后简称位姿)逐步求精的恢复出更稠密的点云。

由于是局部匹配,即使不使用SIFT,SURF等特别鲁棒的算法,产生误匹配的影响也不大。一般采用Patch Matching的方法一次匹一块区域。经过这步处理,模型的表面会产生许多三维顶点(Vertex)。这些顶点将出现在最终的三维模型中。

在特征点匹配和点云稠密化的过程中,一定会产生很多和模型本地没关系的杂点。这些点分布在三维空间的各个位置,如不去除,将严重影响后面面片的生成(会产生很多很大的,形状诡异的面,使模型无法观看)。因此需要使用一些滤波算法,过滤掉明显是错误的点。(如离主体建筑很远,孤立在空中的一个或几个点,在一个大凸包体内的离其他点群较远的点)

7. 三角剖分生成面片与面片精修

经过上面的操作,我们已经获得了数目在几万个到几千万个之间的三维顶点(取决于图像的数量和分辨率,场景的大小和纹理是否多变等)。此时通过Delaunay三角剖分,即可获得一组均匀三角形,这组三角形将包含三维图中的每一个顶点。这时场景的表面结构将清晰可见,只是这些面片(Face)还没有颜色,仅有顶点有颜色。

这时生成的面片可能较为粗糙,且包含较多杂散的不属于物体的部分。可以使用一些精修算法精修这些面片,获得更合理的模型。

8. 填充纹理

每个剖分得到的三角形将会对应原图像中一个部分。将这些部分裁剪下来,贴入对应的小三角形,即可获取颜色,纹理都较为逼真的三维模型。至此,三维还原重建的整个流程已经走完。

责任编辑:lq6

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分