问题描述
1.建模效果差
在上一篇文章中说到了航测三维建模中有关于模型空洞的形成原因和解决办法,那么今天,我们再介绍另一个“老问题”——树木建模。
事实上不仅仅是树木,其他的例如灌木丛、草地、花坛等地物,在航测模型中的效果均不尽人意,通常表现为粘连、模糊、拉花和缺失等,分不清楚树叶、树枝。
树叶粘连、模糊
树干缺失
2.建模速度慢
除了以上问题之外,由于树木模型面数多,树木模型的生产还存在建模速度慢的特点。即使在建模时分配了相同的块大小和RAM值,树木较多的模型块建模速度也会较慢。
同一模型上选择大小相同的房屋块和树木块
该数据为M10Pro环绕飞行,航高220米,平均地面分辨率1.8cm,建模为平面规则网格切块,Tile Size为50米,房屋块(左)面数为276137,建模时间约25min,树木块(右)面数为1216896,建模时间约48min,树木块相对于房屋块总面数是4.4倍,建模时间是1.9倍。
问题成因
1.复杂的自然环境
树木处于复杂的自然环境中,加之其本身的不规则性,结构复杂且特殊[1],本身的采集难度较大。而对于一般倾斜相机而言,由于其光学组件部分采用摄影通用组件,并未针对航测作业特点研发设计,拍摄的航片特征点提取更加困难,数量不够,建模效果也就较差。
一般航测相机采集的航片在进行大范围数据处理的时候,遇到大面积的树林、草地,在建模过程中会出现部分照片无法参与匹配的情况,如下图。
树木未参与空三匹配
2.匹配算法原因、
树叶或多或少会随风晃动,即使连续两个曝光点之间拍摄到的相同树木,其状态也可能不同,导致匹配错误。
业内常用的空三建模软件如Context Capture等,空三过程中特征点匹配采用的为SIFT算法[2],该算法是基于特征的匹配算法,所选择的特征点大部分为物体的角点、边缘、零点等部位,并计算特征点之间的相似性程度,根据相关值的大小确定模板在图像中的匹配位置。但SIFT算法的实现过程以及特征描述的结构相对复杂,计算量大,效率也就相对较低,难以应用到复杂的图像匹配问题中,并且该算法提取的特征点数目较少,对于太薄或边缘光滑的目标而言,无法实现准确的特征点提取[3]。
基于以上算法特性,密集树叶的特征点匹配是其短板,匹配效果较差,但在倾斜摄影作业的过程中,相机仍能从多个视角拍摄到树木的照片,算法也可以在树木的轮廓或角点处提取到特征点,所以模型中树木呈现的是模糊,融化的现象,而不是完全没有树木的模型。河流等水域处则不同,算法无法从其中提取到特征点,则空三结果几乎显示为无点云,模型也就都是空洞了,如下图:
房屋点,树木点与河流点对比
解决方法
对于某些特殊项目的要求,需要解决树木建模效果差的问题,我们可以从两个方面去应对。
1.使用特征点获取更好的相机。
航片可特征点数量的增多可有效提升模型效果,减少模型缺失、空洞等问题。
2.内业模型修饰。
例如使用SVS MeshEditor软件可以从现有的实景模型或网络中收集各式各样的树木模型,创建树木模型种植库,最后在三维OBJ模型中实现批量种植树木模型。
这种方法不仅仅针对树木模型,草地、水面等各种小品都可以使用,可以从A数据提取出来进模型库,复制重复用到B数据、C数据等等。
SVS MeshEditor创建树木模型库并实现批量种植
3.独立建模
这是种更加复杂的做法,如在外景拍摄测区内的树木照片后,导入Blender或Maya软件里制作真实的树木模型和场景,再导入倾斜模型相应位置种植,最终获得极为真实的三维模型场景。
UE4制作真实的树木场景【图片来自bilibili视频】
视频链接: