一、照片采集的实用概念
根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻。可能是模型的纹理失真,模型的法线错了,模型会生成我们各种也想不到的结果,那么,是什么导致三维重建效果这么差的?是建模操作中哪一步设置错了?还是航拍之前的航带准备不充分还是天气光照的影响?今天我将和大家一起好好说说建模前期都有哪些拍照要求和技巧。
首先,在这之前,我先说明几个专业词汇概念,有助于后面文章的理解。
【内方位元素】:指的是相机的内部参数,包括相机传感器的尺寸、镜头焦距、像平面主点的位置坐标、镜头畸变。
【外方位元素】:指的是相机光学中心的三维坐标位置和三个姿态角参数。
【同名点】:两个或多个不同照片的像素对应场景中同一物理位置的投影。
【影像组】:由具有相同内方位元素的影像组成。
【CCD感光元件】:电荷耦合元件是一种半导体器件,能够把光学影像转化为数字信号。
二、影像获取的注意点
照片的采集是整个三维模型重建过程中非常重要的一步,重建结果的好坏往往与照片采集有很大的关系,而不是软件操作的问题,跟采集的航拍影像关系较大,影像分辨率高、重叠度大、清晰度高,拍摄光照条件好,建成的三维模型效果自然会好。下面从几个方面对照片采集的基础知识和一些细节要求做些说明:
- 拍摄
模型重建对象的每一部分应至少3个不同的视点(但比较接近)进行拍摄。一般来说,连续影像之间的重叠部分应该超过60%。物体的同一部分的不同拍摄点间的分隔应该小于15度。
对于简单的小物件,单反或手机拍摄可以环绕式地从物体周围均匀分隔地采集至少大约30-50张影像。为了保留更多的物体细节,需要保证一定的重叠度,如下图:
为了最大程度地还原照片重建后的纹理信息,在采集拍照的时候要注意分层,可以由远至近拍三个距离,但是太多的拍照层次又会使得照片在进行空三运算时失败,这也是为啥要拍三个层次,让中间层联系远近两层的原因了。示意图如下:
对于有一定高度的小物件,比如说一个雕像,需要从高度上分层次拍照,如下图:
还有,遇到的建模对象纹理比较单一的,我们需要在拍摄范围中加一个背景,这样可以使每张照片的相对位置不同,有利于空三计算和点云生成,比如下面的这只羊的纹理是比较没有区分度的,我们需要在下面放本书或者放张报纸作为背景参照:
在做人物建模时,人的头发是很难被正确建模的,所以可别忘了在头顶加一圈拍照,除此之外,还需要保证尽可能减少拍摄范围中的背景,尽可能增加人物在影像中的范围,示意图如下:
对于航空摄影,建议采集航向重叠不小于80%,旁向重叠不小于50%的影像。如下图所示:
为实现更好的效果,更好地还原建筑物外立面、狭窄的街道和各种庭院,建议同时采集垂直和倾斜影像。虽然Smart3D对非系统化乱序采集的图像具有非常强的适用性,但还是仍然建议先准备合适的飞行计划以系统化获取影像而避免疏漏。
- 相机
Smart3D支持广泛多样的影像采集设备,如手机、卡片数码相机、数码单反相机、摄影测量专用相机及多角度摄相机系统。不仅可以处理静态影像,也可以处理从数字摄影机摄像动画中截取的视频帧。但是注意到的是,Smart3D不支持线性推扫式相机。
虽然Smart3D对相机分辨率没有最小要求,但是高分辨率的相机可以以较少影像数量以指定精度完成对物体影像采集,而且处理速度要快于低分辨率的相机。
另外,Smart3D需要知道相机感光体CCD的宽度。如果摄相机型号没有在自带的数据库中列出,可以百度搜索下相机的型号,就可以查到对应的CCD宽度,将这些信息手动输入。
- 影像精度
影像精度指的是由传统航空摄影的地面分辨率扩展到更加广义(而不仅仅是航空图像)的获取图像的分辨率设置。生成三维模型的精度和分辨率与采集的影像精度直接相关。为达到预定的影像精度,必须使用准确的焦距及拍摄距离来采集影像。相关计算公式如下:
影像精度(米/像素) × 焦距(毫米) × 图像的最大尺寸(像素) = 传感器宽度(毫米) × 拍摄距离(米)
可以看到,传感器的宽度、焦距、图像的像素是固定的,那么,想要多少的影像精度,就可以通过拍摄距离来调整。
由于Smart3D能自动识别应用不同精度的影像来生产三维模型而无需固定统一精度的影像,因此整个项目可以允许不同影像精度、不同影像重叠度组成的多重数据源。然而,Smart3D不能自动识别处理精度区别过大的影像,如果项目需要必须采集精度跨度较大的影像,那么就需要补充采集一直数个级别的中间精度级别的影像以建立平滑过渡。
- 焦距
整个图像获取过程采用固定的焦距。
如果需要获得非统一的影像精度,可以调整拍摄距离来实现。如果无法避免使用不同的焦距设置,比如拍摄距离的限制等因素,应在每个焦距设置下各采集一定数量的影像组,避免某个焦距只有非常少量的影像的情况。
当使用可变焦距镜头,应需保持在一组影像上使用同一焦距,可以利用胶带将手动可变焦距镜头固定住。注意不要使用数码变焦,避免使用超广角镜头或鱼眼镜头,因为Smart3D很难计算出极端的镜头畸变。
- 曝光
尽量选用可避免重影、散焦与噪声、曝光过度或不足等的曝光设置,因为这些问题将会严重影响三维建模质量。手动曝光设置能有效降低3D模型贴图产生色差的可能性,所以如果摄影技术允许,同时有比较稳定和统一的光照条件时,推荐使用手动曝光。如果不具备条件,自动曝光获取的影像也能被处理。
这里推荐关闭光学或数码图像稳定功能。
- 光照
相对于直射光和(或)不断变化的光照,稳定的环境光源是更好的选择,因为前者增加了曝光过度和曝光不足的风险。室内拍照时,固定光源比试用闪光灯更好;室外拍摄时,多云的天气比大晴天更好。如果必须在晴天拍摄,最好选择中午左右使阴影区域最小化。下图是一个夕阳下拍摄的航片重得到的模型:
看到上面的模型有没有被惊艳到?所以正确适当曝光下采集的阴影并不影响Smart3D的模型生成质量,软件会在3D模型的贴图中还原阴影的正确位置。
- 影像预处理
在把原始影像导入Smart3D之前,不要进行任何编辑,包括改变尺寸、裁剪、旋转、降低噪音、锐化或调整亮度、对比度、饱和度或色调。某些相机有自动旋转影像的功能,需要把这个功能禁用。
Smart3D不支持拼接的全景图作为原始数据,但是可以使用生成这些全景图的原始图像作为导入数据。
- 遮罩
遮罩是指在图像处理过程中用于某原始影像匹配制作的单色图像将图像指定部分(如遮挡物、反射)进行忽略运算的方法。有效的遮罩文件是黑白单色且与原始影像匹配的尺寸的TIFF格式图片。被遮罩的黑色部分遮挡的图像像素在空中三角测量和重建过程中将被忽略处理。
遮罩的文件名必须与原始影像的文件名对应,如果对于目录下所有的同样大小尺寸的原始影像进行遮罩处理,只需将遮罩文件放置到该目录下,且命名为“mask.tif”。例如,图像名为“IMG0002564.jpg”对应的遮罩文件为“IMG0002564_mask.tif”
- 影像组
为了获得最优精度和最佳性能,Smart3D会将同一台相机在同一焦距和影像尺寸(同样的内方位元素)拍摄的影像定义为一个影像组。它可以自动建立相关的影像组,如果按采集影像的相机来设置原始影像的目录结构,不同的相机(即使型号相同)拍摄的影像应放置到不同的独立的子目录下。相反,由同一台相机拍摄的影像应当都放置在同一子目录下。
三、软件支持的影像文件格式
Smart3D能直接支持JPEG与TIFF格式的图像,也能读取一些常见的RAW格式,还能直接读取影像文件自带的Exif元数据。
支持的文件格式有:
- JPEG
- Tag Image File Format (TIFF)
- 松下Panasonic RAW (RW2)
- 佳能Canon RAW (CRW, CR2)
- 尼康Nikon RAW (NEF)
- 索尼Sony RAW (ARW)
- 哈苏Hasselblad (3FR)
- Adobe Digital Negative (DNG)
四、位置信息数据
Smart3D建模软件一个比较牛的功能,也是一大突破性功能,是能够处理那些完全不带有定位数据的影像。也就是说,通过无人机航拍的没有pos信息的照片也可以重建出三维模型。因此,Smart3D可以支持从任意位置、旋转与比例的原始影像数据来生成三维模型,并通常能还原它的正确姿态方向。同时,Smart3D也原生支持两种类型的定位数据:GPS标签(GPS tags)和控制点(Control Points)。
如果在原始影像的Exif元数据中包含GPS标签,也就是照片中含有pos信息,Smart3D可以自动读取并用它来作为生成三维模型的坐标依据。也可以手动制作表格,后面的系列教程会讲到,如下图:
其中不完整的GPS标签将会被忽略,比如只具有经度与纬度坐标,但不具有高程。
当处理需要优化GPS坐标精确度,或者需要控制和消除由于数字积累误差造成的远距离几何失真时,此时建议引入控制点。建立地理参照系必须至少三个控制点,更多数量且分布均匀的控制点可以消除远距离几何失真。控制点的精确三维坐标可通过传统测量方法获得。通过Smart3D控制点模块或其他第三方工具在原始影像(最少两张,建议三张以上)中标出该控制点位置的方式来输入控制点。
除了GPS标签与控制点,还可以通过专用的XML格式导入几乎任何定位信息(如惯性导航系统的数据)或第三方软件的空中三角测量的结果。这样导入后可以节约了大量的空三运算的时间。
五、小结
以上就是照片采集中的一些细节注意点,你get到了吗?下次采集照片时,不妨对照上面的列表试一下,看看重建后的模型效果是否会有优化,我这里也给大家一组示例数据,可以观察下导入到软件里看看航带的布局安排,关注Wish3D微信公众号(底部有二维码)回复“2”即可获得(更多学习资料回复“1”)。
Ok,关于三维重建中的照片采集就先到这里了,那么照片采集后如何充分利用Smart3D软件进行三维重建呢?想知道Smart3D每个模块的功能应用?我将在下周同一时间(每周三下午)Wish3D微信公众号里更新 Smart3D系列教程3之《论照片三维重建中Smart3D几个工作模块的功能意义》,欢迎各位同仁一起探讨!
Wish3D出品的Smart3D系列教程:
第一讲——《浅谈无人机倾斜摄影建模的原理与方法》
(http://www.cnblogs.com/sunnyCXX/p/6073905.html)
第二讲——《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》(http://www.cnblogs.com/sunnyCXX/p/6101947.html)
…………
Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》的更多相关文章
-
Smart3D系列教程5之 《案例实战演练2——大区域的地形三维重建》
一.前言 Wish3D出品的Smart3D系列教程中,前面一讲说明了小物件的照片三维重建,相信大家对建模的流程有了一定的了解.这次讲解中,我们将演示说明以一组无人机倾斜摄影照片为原始数据,通过Smar ...
-
Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》
一.前言 Wish3D出品的Smart3D系列教程已经推出3讲了,分别是关于倾斜摄影三维建模原理应用.照片采集技巧.Smart3D各个功能模块的作用,它们都是围绕Smart3D建模软件进行的讲解.那么 ...
-
Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
[摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...
-
Smart3D系列教程7之 《手动配置S3C索引加载全部的瓦片数据》
一.前言 迄今为止,Wish3D已经出品推出了6篇系列教程,从倾斜摄影的原理方法.采集照片的技巧.Smart3D各模块的功能应用.小物件的照片重建.大区域的地形重建到DSM及正射影像的处理生产,立足于 ...
-
Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
一.前言 Wish3D出品的系列教程中,前面两讲分别讲述说明了小物件的照片三维重建.大区域地形的三维重建,从照片的直接导入至软件到通过Excel表格将区块导入处理,从不同的模型类别.不同的导入方式演示 ...
-
Smart3D系列教程1之《浅谈无人机倾斜摄影建模的原理与方法》
一.引言 倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,以大范围.高精度.高清晰的方式全面感知复杂场景,通过高效的数据采集设备及专业的数据处理流程生成的数据成果直观反映地物的外观.位置 ...
-
Smart3D系列教程8之 《模型合并——相邻地区多次建模结果合并》
迄今为止,Wish3D已经出品推出了7篇系列教程,从倾斜摄影的原理方法.采集照片的技巧.Smart3D各模块的功能应用.小物件的照片重建.大区域的地形重建到DSM及正射影像的处理生产,立足于建模软件的 ...
-
【全网最全的博客美化系列教程】08.自定义地址栏Logo
全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...
-
【全网最全的博客美化系列教程】01.添加Github项目链接
全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...
随机推荐
-
【转】Android应用开发之PNG、IconFont、SVG图标资源优化详解
1 背景 最近因为一些个人私事导致好久没写博客了,多事之年总算要过去了,突然没了动力,所以赶紧先拿个最近项目中重构的一个小知识点充下数,老题重谈. 在我们App开发中大家可能都会有过如下痛疾(程序员和 ...
-
UIDynamic仿物理引擎-浮动碰撞效果-b
最近产品提了个需求(电商的APP-两鲜),需要在APP背景加上几个水果图案在那里无规则缓慢游荡...模仿 天天果园 APP的.好吧,那我就在网上找了很多文章,总结一下写个demo.效果如下: Mou ...
-
javascript 写状态模式
写了状态模式的切换,以及分支循环.but 怎么实现子状态嵌套呢? /** * by JackChen 2016-3-26 11.51.20 * * 状态模式: * 一个状态到另一个状态的变换.其实可以 ...
-
jQuery中$.getJSON的返回值问题
在使用$.getJSON获得数据库的返回值后,想将该值return传给其他函数.结果遇到问题. $.getJSON(url, data, function(result) { return resul ...
-
java 静态内部类特点
1.静态内部类可以在外部类的静态成员中访问或者实例化(非静态内部类不可以)---优势 2.静态内部类可以访问外部类的静态成员不可以访问非静态成员(非静态内部类可以访问类的静态和非静态成员)---限制 ...
-
Windows10 Enterprise版本周年更新问题
安装Windows10的时候,蛋疼选择了企业版本,导致后来周年更新遇到了蛋疼的问题. 首先是无法接收到周年更新的推送.记得首个周年更新的时候,等了大半年都没有.后来使用了易升进行更新,可以检测到,但是 ...
-
SSM框架开发web项目系列(二) MyBatis真正的力量
前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...
-
PHP 是一门弱类型语言
PHP 是一门弱类型语言 我们注意到,不必向 PHP 声明该变量的数据类型. PHP 会根据变量的值,自动把变量转换为正确的数据类型. 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类 ...
-
openLayers 3知识回顾
openlayers 知识 前段时间帮助同事重构一个地图类的项目,然后就学习了openLayer3这个框架,但是官网上没有中文版,也没有详细的例子解释,我只能遇到看不懂的就翻译成中文来用,为了方便以后 ...
-
数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)
递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加. 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差 ...