热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

公式拍照识别_为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧...

本文首发于公众号Wish3D,原文链接:Smart3D系列教程2|《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》根据照片
f3fcfd47016f82585f449a6cdf750c76.png

本文首发于公众号Wish3D,原文链接:Smart3D系列教程2 |《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》


根据照片进行三维重建的过程中,有人没怎么遇到坑,有人被坑的不轻。可能是模型的纹理失真,模型的法线错了,模型会生成我们各种意想不到的结果,那么,是什么导致三维重建效果这么差的?是建模操作中哪一步设置错了?还是航拍之前的航带准备不充分还是天气光照的影响?今天我将和大家一起好好说说建模前期都有哪些拍照要求和技巧。

首先,在这之前,我先说明几个专业词汇概念,有助于后面文章的理解。

【内方位元素】:指的是相机的内部参数,包括相机传感器的尺寸、镜头焦距、像平面主点的位置坐标、镜头畸变。

【外方位元素】:指的是相机光学中心的三维坐标位置和三个姿态角参数。

【同名点】:两个或多个不同照片的像素对应场景中同一物理位置的投影。

【影像组】:由具有相同内方位元素的影像组成。

【CCD感光元件】:电荷耦合元件是一种半导体器件,能够把光学影像转化为数字信号。


影像获取的注意点

照片的采集是整个三维模型重建过程中非常重要的一步,重建结果的好坏往往与照片采集有很大的关系,而不是软件操作的问题,跟采集的航拍影像关系较大,影像分辨率高、重叠度大、清晰度高,拍摄光照条件好,建成的三维模型效果自然会好。下面从几个方面对照片采集的基础知识和一些细节要求做些说明:

  • 拍摄

模型重建对象的每一部分应至少3个不同的视点(但比较接近)进行拍摄。一般来说,连续影像之间的重叠部分应该超过60%。物体的同一部分的不同拍摄点间的分隔应该小于15度。

069f2b28e87846bf58ecf04d91929a7f.png

对于简单的小物件,单反或手机拍摄可以环绕式地从物体周围均匀分隔地采集至少大约30-50张影像。为了保留更多的物体细节,需要保证一定的重叠度,如下图:

bd6837534b5bc58497ade98691fe3e82.png

为了最大程度地还原照片重建后的纹理信息,在采集拍照的时候要注意分层,可以由远至近拍三个距离,但是太多的拍照层次又会使得照片在进行空三运算时失败,这也是为啥要拍三个层次,让中间层联系远近两层的原因了。示意图如下:

eb996334b0928b2725f8de9d2b435153.png

对于有一定高度的小物件,比如说一个雕像,需要从高度上分层次拍照,如下图:

4e1073b48290a39a0ebaa584f2f63c3d.png

还有,遇到的建模对象纹理比较单一的,我们需要在拍摄范围中加一个背景,这样可以使每张照片的相对位置不同,有利于空三计算和点云生成,比如下面的这只羊的纹理是比较没有区分度的,我们需要在下面放本书或者放张报纸作为背景参照:

c6cec8d566ca50e6edf88c7488806764.png

在做人物建模时,人的头发是很难被正确建模的,所以可别忘了在头顶加一圈拍照,除此之外,还需要保证尽可能减少拍摄范围中的背景,尽可能增加人物在影像中的范围,示意图如下:

a1c869f113209dda39cdf6527ac08e58.png

对于航空摄影,建议采集航向重叠不小于80%,旁向重叠不小于50%的影像。如下图所示:

c446ca00629d535a1b63ae1f6a2087d0.png
304b2795fe9bbb8e89d7b8d20332d37e.png
8d77b9b0ea3c025b009442ff84370fe8.png
8d1e0ee5f2222d30f158b62f56484e0d.png

为实现更好的效果,更好地还原建筑物外立面、狭窄的街道和各种庭院,建议同时采集垂直和倾斜影像。虽然Smart3D对非系统化乱序采集的图像具有非常强的适用性,但还是仍然建议先准备合适的飞行计划以系统化获取影像而避免疏漏。

  • 相机

Smart3D支持广泛多样的影像采集设备,如手机、卡片数码相机、数码单反相机、摄影测量专用相机及多角度摄相机系统。不仅可以处理静态影像,也可以处理从数字摄影机摄像动画中截取的视频帧。但是注意到的是,Smart3D不支持线性推扫式相机。

虽然Smart3D对相机分辨率没有最小要求,但是高分辨率的相机可以以较少影像数量以指定精度完成对物体影像采集,而且处理速度要快于低分辨率的相机。

另外,Smart3D需要知道相机感光体CCD的宽度。如果摄相机型号没有在自带的数据库中列出,可以百度搜索下相机的型号,就可以查到对应的CCD宽度,将这些信息手动输入。

  • 影像精度

影像精度指的是由传统航空摄影的地面分辨率扩展到更加广义(而不仅仅是航空图像)的获取图像的分辨率设置。生成三维模型的精度和分辨率与采集的影像精度直接相关。为达到预定的影像精度,必须使用准确的焦距及拍摄距离来采集影像。相关计算公式如下:

影像精度(米/像素) × 焦距(毫米) × 图像的最大尺寸(像素) = 传感器宽度(毫米) × 拍摄距离(米)

可以看到,传感器的宽度、焦距、图像的像素是固定的,那么,想要多少的影像精度,就可以通过拍摄距离来调整。

由于Smart3D能自动识别应用不同精度的影像来生产三维模型而无需固定统一精度的影像,因此整个项目可以允许不同影像精度、不同影像重叠度组成的多重数据源。然而,Smart3D不能自动识别处理精度区别过大的影像,如果项目需要必须采集精度跨度较大的影像,那么就需要补充采集一直数个级别的中间精度级别的影像以建立平滑过渡。

  • 焦距

整个图像获取过程采用固定的焦距。

如果需要获得非统一的影像精度,可以调整拍摄距离来实现。如果无法避免使用不同的焦距设置,比如拍摄距离的限制等因素,应在每个焦距设置下各采集一定数量的影像组,避免某个焦距只有非常少量的影像的情况。

当使用可变焦距镜头,应需保持在一组影像上使用同一焦距,可以利用胶带将手动可变焦距镜头固定住。注意不要使用数码变焦,避免使用超广角镜头或鱼眼镜头,因为Smart3D很难计算出极端的镜头畸变。

  • 曝光

尽量选用可避免重影、散焦与噪声、曝光过度或不足等的曝光设置,因为这些问题将会严重影响三维建模质量。手动曝光设置能有效降低3D模型贴图产生色差的可能性,所以如果摄影技术允许,同时有比较稳定和统一的光照条件时,推荐使用手动曝光。如果不具备条件,自动曝光获取的影像也能被处理。

这里推荐关闭光学或数码图像稳定功能。

  • 光照

相对于直射光和(或)不断变化的光照,稳定的环境光源是更好的选择,因为前者增加了曝光过度和曝光不足的风险。室内拍照时,固定光源比试用闪光灯更好;室外拍摄时,多云的天气比大晴天更好。如果必须在晴天拍摄,最好选择中午左右使阴影区域最小化。下图是一个夕阳下拍摄的航片重得到的模型:

6ed213d6bdc7644d00071a29bf12ada2.png

看到上面的模型有没有被惊艳到?所以正确适当曝光下采集的阴影并不影响Smart3D的模型生成质量,软件会在3D模型的贴图中还原阴影的正确位置。

  • 影像预处理

在把原始影像导入Smart3D之前,不要进行任何编辑,包括改变尺寸、裁剪、旋转、降低噪音、锐化或调整亮度、对比度、饱和度或色调。某些相机有自动旋转影像的功能,需要把这个功能禁用。

Smart3D不支持拼接的全景图作为原始数据,但是可以使用生成这些全景图的原始图像作为导入数据。

  • 遮罩

遮罩是指在图像处理过程中用于某原始影像匹配制作的单色图像将图像指定部分(如遮挡物、反射)进行忽略运算的方法。有效的遮罩文件是黑白单色且与原始影像匹配的尺寸的TIFF格式图片。被遮罩的黑色部分遮挡的图像像素在空中三角测量和重建过程中将被忽略处理。

遮罩的文件名必须与原始影像的文件名对应,如果对于目录下所有的同样大小尺寸的原始影像进行遮罩处理,只需将遮罩文件放置到该目录下,且命名为“mask.tif”。例如,图像名为“IMG0002564.jpg”对应的遮罩文件为“IMG0002564_mask.tif”

  • 影像组

为了获得最优精度和最佳性能,Smart3D会将同一台相机在同一焦距和影像尺寸(同样的内方位元素)拍摄的影像定义为一个影像组。它可以自动建立相关的影像组,如果按采集影像的相机来设置原始影像的目录结构,不同的相机(即使型号相同)拍摄的影像应放置到不同的独立的子目录下。相反,由同一台相机拍摄的影像应当都放置在同一子目录下。

547c5ac68c9f26d14c3a8002aa5fecad.png

软件支持的影像文件格式

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)

位置信息数据(POS)

Smart3D建模软件一个比较牛的功能,也是一大突破性功能,是能够处理那些完全不带有定位数据的影像。也就是说,通过无人机航拍的没有pos信息的照片也可以重建出三维模型。因此,Smart3D可以支持从任意位置、旋转与比例的原始影像数据来生成三维模型,并通常能还原它的正确姿态方向。同时,Smart3D也原生支持两种类型的定位数据:GPS标签(GPS tags)和控制点(Control Points)。

如果在原始影像的Exif元数据中包含GPS标签,也就是照片中含有pos信息,Smart3D可以自动读取并用它来作为生成三维模型的坐标依据。也可以手动制作表格,后面的系列教程会讲到,如下图:

4b679f152abd716d49eedc5853faa7cf.png

其中不完整的GPS标签将会被忽略,比如只具有经度与纬度坐标,但不具有高程。

当处理需要优化GPS坐标精确度,或者需要控制和消除由于数字积累误差造成的远距离几何失真时,此时建议引入控制点。建立地理参照系必须至少三个控制点,更多数量且分布均匀的控制点可以消除远距离几何失真。控制点的精确三维坐标可通过传统测量方法获得。通过Smart3D控制点模块或其他第三方工具在原始影像(最少两张,建议三张以上)中标出该控制点位置的方式来输入控制点。

除了GPS标签与控制点,还可以通过专用的XML格式导入几乎任何定位信息(如惯性导航系统的数据)或第三方软件的空中三角测量的结果。这样导入后可以节约了大量的空三运算的时间。



推荐阅读
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • 写在前面GitDataV,是一个github“大数据可视化平台”,通过它你可以更直观的看到你在github里的一些数据,(之所以打双引号& ... [详细]
  • Echarts 3D地图图表
    需求:实现如图所示的3D地图图表(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案ÿ ... [详细]
  • 怎么使用提高开发效率的VSCode插件
    这篇文章将为大家详细讲解有关怎么使用提高开发效率的VSCode插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 导读:今天编程笔记来给各位分享关于php变量命名规范是什么的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 用户体验这点事儿
    2009-02-1518:03byMainz,3366visits,网摘,收藏,编辑用户体验设计最近比较热,从以前的轻视UI到现在不管是桌面软件还是网站都开始关注用户 ... [详细]
  • 修正我的GitHub commit 数据
    早晨上班,滴滴搭车里,我在掘金这个帖子看到大家晒自己的Github活跃记录,我也晒了下自己的记录。不过太少了。有遗漏的commits状况这也让我知道,自己觉得自己很忙的,实际上提交 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 中国式报表 VS Dashboard
    2019独角兽企业重金招聘Python工程师标准1.中国式Dashboard中国式报表和Dashboard有很多的相像之处。主要用于显示汇总的数据。大都显示在一页(屏幕)&# ... [详细]
  • 1、Everything:速度最快最好用的文件搜索工具,可以基于文件名极速搜索、瞬间定位文件,所有匹配的文件或文件夹都会实时显示,Windows7之后为减少硬盘占用,在关闭索引功能后不能得到“即搜既 ... [详细]
  • 模仿邮件登录系统
    模仿邮件登录系统码云代码库:https:gitee.compinaomansgiteemail_login.git实验结果图:验证用户名、密码不能为空,并提示用户名或密码错误提示用 ... [详细]
  • AI算法工程师从入门到上瘾
    设定一个非常清晰的目标清晰的目标就比如说你要做NLP,你要知道NLP的应用有智能问答,机器翻译,搜索引擎等等。然后如果你要做智能问答你要知道现在最发达的技术是深度学习,使用的算法有 ... [详细]
  • 本文整理了Java中org.gwtbootstrap3.client.ui.Icon.addDomHandler()方法的一些代码示例,展示了Icon.ad ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
author-avatar
禁令2502861143
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有