01| 现 状
数字城市三维模型是个劳心劳力的体力活,前期需要外业飞行人员投入繁琐细致的准备工作,讲究一个天地人和,才能抓住少有的时间窗口,在截止期限的压力前,内业的催促下,采集整个测区的有效数据。当几十上百G新鲜出炉的影像被送进机房,内业工作人员带着十二万分的紧张和期待,调配所有的计算资源,安装调试好软硬件环境。从此内业处理的征程开始了!
02| 关 键
倾斜空三可以说是三维建模的关键步骤,是重中之重的环节。倾斜影像空三是指解算相机参数、影像位置和姿态,以及加密点三维坐标的过程。倾斜影像空三整体流程主要分为影像特征点提取与匹配、构建自由网以及带控制数据的倾斜影像光束法区域网平差的三个步骤,空三处理的效果决定我们后期处理效果。
然而,当我们在实际生产过程中,往往会遇到软件空三运行完成后,空三结果出现断裂、分层、弯曲等等现象,即使最后通过人工干预,也是耗费大量的心力!
对于空三结果的“测不准原理”。首先我们先了解一下常见的倾斜空三算法SFM(structure-from-motion)原理,从原理找到现象的本质。
SFM(structure-from-motion)算法是一种基于各种收集到的无序图片进行稀疏三维重建的离线算法。首先从图片中提取焦距信息,然后利用SIFT等特征提取算法去提取图像特征,用kd-tree模型去计算两张图片特征点之间的欧式距离进行特征点的匹配,从而找到特征点匹配个数达到要求的图像对。对于每一个图像匹配对,计算对极几何,估计F矩阵并通过ransac算法优化改善匹配对。这样如果有特征点可以在这样的匹配对中链式地传递下去,一直被检测到,那么就可以形成空三连接点。
为了识别和描述图像中的目标,需要从图像中提取出与目标相联系的特征。利用这些特征可以从众多背景目标中识别出所需目标。为了确保准确无误地识别出目标,要求在各种视角、光照、距离以及噪声条件下仍然可以准确地进行匹配。在SFM部分,关键的第一步就是选择好的图像对去初始化整个自由网构建过程。首先对初始化选择的两幅图片进行第一次(Bundle Adjustment,平差),然后循环添加新的图片进行新的BA,最后直到没有可以继续添加的合适的图片,BA结束。得到相机估计参数和场景几何信息,即稀疏的3D点云。SFM流程如下:
03| 原 因
不同的三维软件采用的算法往往不太一样,但是大多数算法都会参考一些比较经典的算法或者是在其基础上进行创新的。从算法原理角度分析,可以推测出软件空三结果出错或是无法成功的原因可能来自如下方面:
1、三维软件空三算法对光照变化比较敏感。同一个测区,不同时段拍摄的影像,因天气、光照变化导致影像色彩存在一定差异时,会导致空三匹配不稳定,从而导致空三失败。这样会导致空三结果出现断裂的情况,如下图所示:
2、倾斜影像数据量往往比一般正射数据量大很多倍,我们常用的三维空三软件处理海量的大数据时,为了提高生产的效率,采用对数据进行分块、逐块空三、最后合并的策略,但是其空三合并功能仍有待提高稳定度,并且往往进行并行空三时,只对特征点提取和匹配两个步骤进行了并行化处理,对于耗时大的自由网构建步骤并未有效并行化;所以导致合并后的空三结果出现问题。
同时,有些软件的区域网平差未有效利用航带信息。航空摄影时,GPS位置往往存在按航带分布的系统误差,称为航带误差。在经典的GPS辅助平差时,往往需要对航带误差进行改正,如果软件没有进行此处理,故往往无法获得高精度平差结果。另外,进行航带改正的另一个优势是当控制点的坐标系和GPS的坐标系不相同时(如分别为2000和WGS84时),可通过航带误差改正的方式使二者在平差中高精度对应,进而获得高精度平差结果。缺少了利用有效的航带信息,有时候就会导致平差后的结果杂乱无章。如下图所示:
04| 解 决
三维模型从数据采集到生产,涉及多部门、多人员协作,使用软件进行数据处理时已经走到了整个链路的尾部,同时也是理论上风险最可控成本最小的一环。从现实角度出发,我们无法要求外业人员保证在特定光照、天气、时段来进行数据采集,又或者按照软件处理的最理想方式进行测区分块和航带设计,外业数据采集总是会有一定的不确定性,这些漏洞的弥补,就压在内业处理上,因此,数据处理软件的选择往往就会决定了我们作业的效率以及效果了。
目前国内三维数据生产中,比较有代表性的技术软件有ContextCapure、Photoscan、Pix4DMapper、街景工厂等。那么,当我们在这些常用的软件处理海量倾斜数据时,遇到了空三结果断裂、分层、弯曲等问题时,我们一般都是怎么处理的呢?
我们往往会选择这样做:
(1)首先会根据高度不同而分开空三,另外也要考虑拍摄时间过长导致拍照时有阴天晴天等差别,如果这种光线的差别较明显也有必要区分开来,比如定义到不同的组别里。空三的运算的第一步就是解算同名点,即匹配多张照片中同一物体的位置信息。像田地、海水等等纹理不明显的物体来说,解算同名点比较困难,需要在边界处人为多定义一些控制点。另外如果结果显示的模型大小形状基本匹配,而只是方向倾斜的话,可以在空三前另外定义几个一些连接点来控制方向。
(2)选择多次进行空三,借助多次失败积累的经验反复调整参数,或者常需反复人工干预,比如手工添加连接点之类的,从而得到比较合适的结果。
(3)可以先使用相关软件进行初始空三结果,将空三结果作为初值导入三维软件中,再次空三计算,提高空三的成功率。
通过以上的操作。我们一定程度提高空三成功率,减少失败的次数,但是治标不治本,本质还是无法解决倾斜空三的问题,并且会消耗掉我们大量的时间,可以说是“无可奈何数据多,似曾相识效果差”。
俗话说的好,数据千千万,却是各有各的不同啊。在处理倾斜空三时,我们的确会遇到各种各有的数据问题,使用单一的软件或许可以完成我们的生产任务,但是会耗费大量的精力和时间。随着倾斜摄影的发展,处理倾斜影像的相关软件也是越来越多。但是,想要让我们的数据生产更加的优化,到达更好更快的效果的话,往往会需要多种类型软件进行搭配使用了,立足找到一套最优的生产技术路线。
在经过广大用户的实战测试和对比后,我们提出了一套Mirauge3D自己的空三解决方案,能有效地解决倾斜海量数据空三的痛点。
05| 优 势
Mirauge3D特点在于:
支持多相机数据,相机数量无限制;
支持从手机、卡片机、单反至专业亿级像素大幅面航摄仪的高精度空三;
无需IMU姿态信息。小数据量(如<5000张影像)时无GPS数据即可进行空三,在仅需要GPS数据的情况下,可在128G内存的机器上进行10万张级影像的高精度空三;
支持并行分布式空三,将空三的整个作业流程完全并行化,充分利用多节点计算机算力,极大提高空三效率;
支持高精度POS辅助区域网平差。可根据影像航带信息,在区域网平差中对GPS航带误差进行改正,在仅使用稀疏地面控制点(四角+中心)的情况下即可获得高精度平差结果;
空三结果稳定,不存在多次空三结果不一致的情况;
对于海量数据,采用并行空三和融合的策略,极大地提高了空三效率,采用独创的空三融合算法,使最终得到的每个相机、每张影像仅有唯一的参数,避免了接边问题;
有强大的自检校功能。只需用户输入初始的焦距值,在平差过程中自动检校计算其他相机参数。将用户从繁琐的相机畸变参数转换工作中彻底解放出来,完美处理存在较大畸变的各类相机采集到的照片。
06| 实 例
我们给客户提供两种方式的解决方案,具体如下:
(1)用户可以直接在Mirauge3D中完成整个空三和建模的全流程,从原始数据的准备到空三的处理以及后期三维模型的建立及成果输出;
(2)用户可以在Mirauge3D完成倾斜空三的处理,包括量测控制点,进行带控制点的平差,然后将Mirauge3D空三结果导入其他建模软件中(如:ContextCapure、Pix4DMapper等);相机参数、影像外方位元素、控制点信息等都可以无损导入过去,直接使用Mirauge3D的结果进行建模,不需要再一次进行空三。
案例一:海量倾斜影像分布式空三
数据难点:数据量相对较大,测区采用不同航高飞行,各架次之间色彩差异比较大;
数据类型:SONY ILCE-5100,像幅6000*4000, 五镜头,91700张,GSD=3.6cm;
硬件:6节点:CPU I7 8700K; 16G 内存;GTX1070/GTX1060/GTX1080;机械硬盘7200转;千兆交换机;
效率:共处理3天16小时。
案例展示二:带状倾斜影像空三
数据难点:测区形状不规则,属于S型带状
数据类型:SONY ILCE-5100,像幅6000*4000, 五镜头,6370张,GSD=3.2cm;
硬件:3节点:CPU I7 8700K; 16G 内存;GTX1070/GTX1060/GTX1080;机械硬盘7200转;千兆交换机;
效率:共处理4小时35分钟。
案例展示三:沙塘地形倾斜影像空三
数据难点:测区包含大量的水域地形
数据类型:SONY ILCE-5100,像幅6000*4000, 五镜头,12500张,GSD=3.6cm;
硬件:4节点:CPU I7 8700K; 16G 内存;GTX1070/GTX1060/GTX1080;机械硬盘7200转;千兆交换机;
效率:共处理7小时45分钟。
文章转自福建三维前沿航空科技有限公司