首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决倾斜三维建模的“起跑配速”,让倾斜空三不“跑崩”

现状

数字城市三维模型是个劳心劳力的体力活,前期需要外业飞行人员投入繁琐细致的准备工作,讲究一个天地人和,才能抓住少有的时间窗口,在截止期限的压力前,内业的催促下,采集整个测区的有效数据。当几十上百G新鲜出炉的影像被送进机房,内业工作人员带着十二万分的紧张和期待,调配所有的计算资源,安装调试好软硬件环境。从此内业处理的征程开始了!

关键

倾斜空三可以说是三维建模的关键步骤,是重中之重的环节。倾斜影像空三是指解算相机参数、影像位置和姿态,以及加密点三维坐标的过程。倾斜影像空三整体流程主要分为影像特征点提取与匹配、构建自由网以及带控制数据的倾斜影像光束法区域网平差的三个步骤,空三处理的效果决定我们后期处理效果。

然而,当我们在实际生产过程中,往往会遇到软件空三运行完成后,空三结果出现断裂、分层、弯曲等等现象,即使最后通过人工干预,也是耗费大量的心力!

对于空三结果的“测不准原理”。首先我们先了解一下常见的倾斜空三算法SFM(structure-from-motion)原理,从原理找到现象的本质。

SFM(structure-from-motion)算法是一种基于各种收集到的无序图片进行稀疏三维重建的离线算法。首先从图片中提取焦距信息,然后利用SIFT等特征提取算法去提取图像特征,用kd-tree模型去计算两张图片特征点之间的欧式距离进行特征点的匹配,从而找到特征点匹配个数达到要求的图像对。对于每一个图像匹配对,计算对极几何,估计F矩阵并通过ransac算法优化改善匹配对。这样如果有特征点可以在这样的匹配对中链式地传递下去,一直被检测到,那么就可以形成空三连接点。

为了识别和描述图像中的目标,需要从图像中提取出与目标相联系的特征。利用这些特征可以从众多背景目标中识别出所需目标。为了确保准确无误地识别出目标,要求在各种视角、光照、距离以及噪声条件下仍然可以准确地进行匹配。在SFM部分,关键的第一步就是选择好的图像对去初始化整个自由网构建过程。首先对初始化选择的两幅图片进行第一次(Bundle Adjustment,平差),然后循环添加新的图片进行新的BA,最后直到没有可以继续添加的合适的图片,BA结束。得到相机估计参数和场景几何信息,即稀疏的3D点云。SFM流程如下:

原因

不同的三维软件采用的算法往往不太一样,但是大多数算法都会参考一些比较经典的算法或者是在其基础上进行创新的。从算法原理角度分析,可以推测出软件空三结果出错或是无法成功的原因可能来自如下方面:

1、三维软件空三算法对光照变化比较敏感。同一个测区,不同时段拍摄的影像,因天气、光照变化导致影像色彩存在一定差异时,会导致空三匹配不稳定,从而导致空三失败。这样会导致空三结果出现断裂的情况,如下图所示:

2、倾斜影像数据量往往比一般正射数据量大很多倍,我们常用的三维空三软件处理海量的大数据时,为了提高生产的效率,采用对数据进行分块、逐块空三、最后合并的策略,但是其空三合并功能仍有待提高稳定度,并且往往进行并行空三时,只对特征点提取和匹配两个步骤进行了并行化处理,对于耗时大的自由网构建步骤并未有效并行化;所以导致合并后的空三结果出现问题。

同时,有些软件的区域网平差未有效利用航带信息。航空摄影时,GPS位置往往存在按航带分布的系统误差,称为航带误差。在经典的GPS辅助平差时,往往需要对航带误差进行改正,如果软件没有进行此处理,故往往无法获得高精度平差结果。另外,进行航带改正的另一个优势是当控制点的坐标系和GPS的坐标系不相同时(如分别为2000和WGS84时),可通过航带误差改正的方式使二者在平差中高精度对应,进而获得高精度平差结果。缺少了利用有效的航带信息,有时候就会导致平差后的结果杂乱无章。如下图所示:

解决

三维模型从数据采集到生产,涉及多部门、多人员协作,使用软件进行数据处理时已经走到了整个链路的尾部,同时也是理论上风险最可控成本最小的一环。从现实角度出发,我们无法要求外业人员保证在特定光照、天气、时段来进行数据采集,又或者按照软件处理的最理想方式进行测区分块和航带设计,外业数据采集总是会有一定的不确定性,这些漏洞的弥补,就压在内业处理上,因此,数据处理软件的选择往往就会决定了我们作业的效率以及效果了。

目前国内三维数据生产中,比较有代表性的技术软件有Smart 3D、ContextCapure、Photoscan、Pix4DMapper、街景工厂等。那么,当我们在这些常用的软件处理海量倾斜数据时,遇到了空三结果断裂、分层、弯曲等问题时,我们一般都是怎么处理的呢?

我们往往会选择这样做:

(1)首先会根据高度不同而分开空三,另外也要考虑拍摄时间过长导致拍照时有阴天晴天等差别,如果这种光线的差别较明显也有必要区分开来,比如定义到不同的组别里。空三的运算的第一步就是解算同名点,即匹配多张照片中同一物体的位置信息。像田地、海水等等纹理不明显的物体来说,解算同名点比较困难,需要在边界处人为多定义一些控制点。另外如果结果显示的模型大小形状基本匹配,而只是方向倾斜的话,可以在空三前另外定义几个一些连接点来控制方向。

(2)选择多次进行空三,借助多次失败积累的经验反复调整参数,或者常需反复人工干预,比如手工添加连接点之类的,从而得到比较合适的结果。

(3)可以先使用相关软件进行初始空三结果,将空三结果作为初值导入三维软件中,再次空三计算,提高空三的成功率。

通过以上的操作。我们一定程度提高空三成功率,减少失败的次数,但是治标不治本,本质还是无法解决倾斜空三的问题,并且会消耗掉我们大量的时间,可以说是“无可奈何数据多,似曾相识效果差”。

俗话说的好,数据千千万,却是各有各的不同啊。在处理倾斜空三时,我们的确会遇到各种各有的数据问题,使用单一的软件或许可以完成我们的生产任务,但是会耗费大量的精力和时间。随着倾斜摄影的发展,处理倾斜影像的相关软件也是越来越多。但是,想要让我们的数据生产更加的优化,到达更好更快的效果的话,往往会需要多种类型软件进行搭配使用了,立足找到一套最优的生产技术路线。

版权归原作者所有,如有侵权请立即联系小编删除

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191217A0NN1Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券