一、前言
Wish3D出品的Smart3D系列教程中,前面一讲说明了小物件的照片三维重建,相信大家对建模的流程有了一定的了解。这次讲解中,我们将演示说明以一组无人机倾斜摄影照片为原始数据,通过Smart3D建模软件,重建生成三维地形的过程。与上次不同的是,这次的建模需要对导入的照片预先做一些处理,详情后面会一一说明。
二、工具材料
包括Smart3D建模软件,一组垂直拍摄而且多角度、重叠度满足重建要求的航片、航片对应的pos数据文件
三、方法步骤
关于通过无人机航拍的照片,照片进行三维重建生产模型,一些情况下照片中是自带有GPS数据信息的,而另一些情况则是会导出一组无定位信息的照片和对应的pos数据文本。前者我们直接新建区块,把照片直接导入给软件跑出结果就ok了。那么,这次我们主要来谈论研究第二种情况,即照片和pos分开的情况。
(一)区块导入表格的编辑
区别于第一种情况我们需要编辑下导入区块的表格,我们将照片的文件路径、参考坐标系、传感器的基本信息等信息嵌入到这个表格里,通过它来实现对照片和pos信息数据的导入。后面的操作处理是跟直接导入照片的方法是没有差别的。
首先,我们看到原始数据的文件夹如下图所示,包括一组照片和相应的pos文件:
可以看到,这个pos数据是以文本文档的形式存在:
而在导入区块的过程当中,我们需要导入Excel表格,那么,这时需要运用一定的办公软件的技巧将其转换为Excel表格,这个表格需要包含如下图的4个工作表:
结果如下:
Photogroups工作表中,名称列需要与照片工作表的PhotogroupName一致:
Photos工作表的编辑结果如下图:
控制点工作表中,由于无人机航拍的区域不是很大,且对于建模成果的精度没有设定范围,追求建成模型的速度,我们本次先不设控制点,很多朋友都是误把照片放到了这个工作表中,致使处理出现问题,需要注意一下。编辑结果如下:
Options工作表中,是坐标系和照片路径的信息,设置如下:
到这一步为止,区块导入的表格就算编辑完毕了。
(二)创建工程
打开Smart3D软件,输入工程名称和存储路径,这里注意不要勾选创建空区块,因为我们需要直接导入表格来导入区块,示意图如下:
此时,导入上述的Excel表格:
这里要提到前面的表格当中,各个工作表的英文名称务必要正确,这里我就是漏了一个字母,提示表格导入失败:
返回修改,重新导入,结果如下图:
可以看到,一个工作区块被顺利导入,接下来就可以开始处理工作了。
(三)空三处理
区块导入之后,首先要对照片组做个检查,查看是否有丢失的情况:
检查无误即可接着处理,否则返回照片组重新整理。
如下图可以看到,之前的区块导入的表格关于影像组的基本信息都体现出来了:
照片组的每一张影像都可以预览到其图像且可以打开其路径,空三还没开始前,每张影像的姿态是未知的,如下图所示:
3Dview中,如下图,每张影像代表一个点,可以看到它们都是按照一定规则排列的,没有飘离出去的,若有,可以直接删除。
一切检查工作正常,点击空三按钮:
输入空三名称:
选择定位方式:
设置默认当前参数:
提交后,准备空三处理:
开启Engine,空三处理开始:
空三结束后查看精度报告,发现每张照片都被识别处理,如下图:
影像组的照片全部被定位完毕:
3Dview中照片摄取范围与区域模型之间的关系图:
(四)重建生成模型
点击提交重建按钮:
在Spatial framework中调整模型生成区域的大小:
这里重点说明下模型分块生成的方法。同样在Spatial framework中,默认是不分块的(No tiling):
上图第二个红框中的Expected maximum RAM usage per job代表每项处理任务的最大期望内存值,这就要求处理该任务的计算机可用内存必须保证大于这个内存值,集群处理中,每台计算机的可用内存必须有高于期望内存的容量。而当前的处理任务中,期望内存值是14个G,对于处理它的只有4G装机内存的计算器显然是不可行的,这时,我们需要作出分块处理,使得每块处理所需的内存控制在计算器的可用内存以下。因此,我们将数据规则分块处理,将每块的边长分为200米,共23个区块,期望内存降低为2.7G,示意图如下:
分完块的数据,各瓦片可以在Reference 3D Model预览:
一切准备就绪:
提交生成模型:
输入模型名称:
选择模型种类:
生成OSGB的三维模型:
选择全部的区块生成:
指定模型的保存路径:
到这里参数设置完毕,打开Engine,开始生成模型:
模型生成后可以看到各个瓦片的生成情况:
处理中的参数选择及坐标系:
四、网络发布
对于由多个Tile组成的OSGB格式的Production数据,Acute3D viewer浏览工具是无法直接同时加载浏览整体的三维模型的。这里介绍一个简单直接的方法——通过Wish3D网络发布三维数据。
1.将成果文件夹中的data文件夹打包为ZIP压缩包:
2.在www.wish3d.com上传:
3.编辑完作品信息后,上传成功的模型效果如下图:
上图可以看到,除了加载浏览模型以外,还可以对模型添加标注(文字、图片、视频、全景),设置飞行路径,量测模型高度应用功能等。具体的操作说明可以加入QQ交流群516635556进入群文件查看相关文档。
五、小结
以上就是对于大区域地形的照片三维重建生成处理模型的这一整个流程了,如果感兴趣想试一试的朋友可以关注Wish3D微信公众号回复5即可获得文档,有疑问的朋友欢迎加入QQ交流群516635556讨论交流。接下来,我会在下周同一时间(每周三下午)Wish3D微信公众号即将推出Smart3D系列教程6之《案例实战演练3——倾斜数据正射影像的生产》,我们不见不散!
Wish3D已出品的Smart3D系列教程如下,在微信公众号的历史消息中可以查看,欢迎大家关注Wish3D。
- 《浅谈无人机倾斜摄影建模的原理和方法》
- 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
- 《论照片三维重建中Smart3D几个工作模块的功能意义》
- 《案例实战演练1——小物件的照片三维重建》
- 《案例实战演练2——大区域的地形三维重建》
Smart3D系列教程5之 《案例实战演练2——大区域的地形三维重建》的更多相关文章
-
Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
一.前言 Wish3D出品的系列教程中,前面两讲分别讲述说明了小物件的照片三维重建.大区域地形的三维重建,从照片的直接导入至软件到通过Excel表格将区块导入处理,从不同的模型类别.不同的导入方式演示 ...
-
Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》
一.前言 Wish3D出品的Smart3D系列教程已经推出3讲了,分别是关于倾斜摄影三维建模原理应用.照片采集技巧.Smart3D各个功能模块的作用,它们都是围绕Smart3D建模软件进行的讲解.那么 ...
-
Smart3D系列教程7之 《手动配置S3C索引加载全部的瓦片数据》
一.前言 迄今为止,Wish3D已经出品推出了6篇系列教程,从倾斜摄影的原理方法.采集照片的技巧.Smart3D各模块的功能应用.小物件的照片重建.大区域的地形重建到DSM及正射影像的处理生产,立足于 ...
-
Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
[摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...
-
Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
一.照片采集的实用概念 根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻.可能是模型的纹理失真,模型的法线错了,模型会生成我们各种也想不到的结果,那么,是什么导致三维重建效果这么差的?是 ...
-
Smart3D系列教程1之《浅谈无人机倾斜摄影建模的原理与方法》
一.引言 倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,以大范围.高精度.高清晰的方式全面感知复杂场景,通过高效的数据采集设备及专业的数据处理流程生成的数据成果直观反映地物的外观.位置 ...
-
Smart3D系列教程8之 《模型合并——相邻地区多次建模结果合并》
迄今为止,Wish3D已经出品推出了7篇系列教程,从倾斜摄影的原理方法.采集照片的技巧.Smart3D各模块的功能应用.小物件的照片重建.大区域的地形重建到DSM及正射影像的处理生产,立足于建模软件的 ...
-
NetworkX系列教程(10)-算法之二:最小/大生成树问题
小书匠 Graph 图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...
-
【全网最全的博客美化系列教程】08.自定义地址栏Logo
全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...
随机推荐
-
iOS让数组内对象执行同一方法
// 让数组中的所有对象都执行removeFromSuperview方法 [self.answerView.subviews makeObjectsPerformSelector:@selector( ...
-
疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
错误: java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/Strin ...
-
7 个面向Web开发者的实用CSS3教程推荐
通过CSS来创建精细.复杂的效果,成为了Web前端开发的未来趋势.世界各地的设计师认为CSS3是一项非常具有潜力的技术,未来将会创造更多不可思议的美妙设计. 本文为Web开发者带来了一些与CSS3相关 ...
-
利用谷歌 kaptcha 进行验证码生成
package main.com.smart.controller; import com.google.code.kaptcha.Producer; import main.com.smart.ut ...
-
大三小学期 Android开发的一些经验
1.同一个TextView几种颜色的设置: build=(TextView)findViewById(R.id.building); SpannableStringBuilder style = ne ...
-
[ Java面试题 ]算法篇
1.堆和栈在内存中的区别是什么? 概念: 栈(stack)是为执行线程留出的内存空间.当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块.当函数执行完毕,块就没有用了,可能在 ...
-
mybatis使用@param(";xxx";)注解传参和不使用的区别
public interface SystemParameterMapper { int deleteByPrimaryKey(Integer id); int insert(SystemParame ...
-
为什么有监听socket和连接socket,为什么产生两个socket
为什么有监听socket和连接socket,为什么产生两个socket 先看一半的socket建立连接的双方的过程: 客户端: socket()---->创建出 active_socket_fd ...
-
linux操作系统下,怎么使用kill按照PID一次杀死多个进程
1.ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9 说明:“grep firefox”的输出结果是,所有含有关 ...
-
JS原生隐藏显示图片,点击切换图片的效果
今天要说的内容,看标题就都能知道了!所有知识点一览无遗啊!咱们今天的东西,是纯纯的原生JS代码, 我先说一下要求, 1.有两个按钮,内容为显示,和换, 2.当点击显示的时候,按钮文字变成隐藏,同时图片 ...