当前位置: 首页 > news >正文

【最详细】PhotoScan(MetaShape)全流程教程

愿天下心诚士子,人人会PhotoScan!

愿天下惊艳后辈,人人可剑开天门!

本教程由CSDN用户CV_X.Wang撰写,所用数据均来自山东科技大学视觉测量研究团队,特此鸣谢!盗版必究!

一、引子

        

PhotoScan 是由 Agisoft 开发的一款专业的摄影测量软件,用于处理数字图像并生成三维空间中的高精度三维模型。该软件广泛应用于地理信息系统(GIS)、文化遗产保护、影视特效、虚拟现实(VR)等领域。以下是 PhotoScan 的一些主要功能和特点:

  1. 照片对齐:PhotoScan 可以自动识别和匹配多张照片中的特征点,从而确定相机的位置和方向,实现照片对齐。

  2. 密集点云生成:在照片对齐的基础上,PhotoScan 可以生成高密度的点云数据,反映物体表面的细节。

  3. 三维模型重建:PhotoScan 能够基于密集点云生成多边形网格模型,用户可以进一步进行纹理映射,生成具有真实感的三维模型。

  4. 地理配准:PhotoScan 支持将生成的三维模型与真实世界的坐标系进行配准,以便在 GIS 系统中使用。

  5. 正射影像生成:PhotoScan 可以生成高分辨率的正射影像(即无畸变的二维图像),适用于地图制作和土地测量。

  6. 数字高程模型(DEM):PhotoScan 能够基于三维点云数据生成地形的高程模型,适用于地形分析和工程设计。

  7. 批处理和脚本支持:PhotoScan 支持批量处理任务和脚本编写(如 Python 脚本),以提高工作效率和灵活性。

二、写作缘由

        PhotoScan作为摄影测量方向不可或缺的软件,如何精准、高效、省事的使用,对于相关专业的本科生和研究生极其重要!血的教训,步骤不熟练,一定会出问题的。

三、基本操作流程

1.打开软件

2.将语言调整为中文(可选)

3.导入相片

导入影像有两种形式:①直接导入相片②添加整个文件夹(文件夹内为相片)

下面我们将以第一种形式,即直接导入相片进行操作。

点击上图的①添加照片,而后找到存放照片的位置,①选择需要导入的照片,②打开

目前我们已经成功将相片导入到PhotoScan内,即下图

①为相机信息,包括相片的名称,经纬度信息,姿态角信息等

②为可视化窗口,后续的稀疏点云、密集点云、Mesh、DSM等都会在该区域显示,目前显示的是我们导入的相片的位置。

③照片区,在此区域双击照片即可在②区查看当前相片。

④该区域为控制点或者是刺点的点位区,后续会详细介绍。

4.IMU辅助空三

IMU即惯性导航单元,若无人机搭载了 IMU模块,我们即可获得拍摄时相机的姿态角信息。

勾选使用IMU辅助,可使空三获取的姿态角更加精准。

5.修改参考坐标系统

①打开设置,在②中选择无人机拍摄时的坐标系统,本文为CGCS2000坐标系统。

6.设置空三权重

PhotoScan的空中三角测量采用的是BA法,由于相片本身带有位置与姿态信息,而空三可通过相片间的关系计算位置与姿态。那么二者必然会存在一个问题,我们用哪个数据的问题。

①设置的是位置的权重

②设置的是姿态的权重

①②考虑的主要是相片的位姿精度是否足够,具体的数值需要具体的设置,使得误差最小。

①②两处,填写的数值越大,代表着我们空三的权重越大,程度越高,相机在精度层面的可靠性越低。此处我们将①②都设置为默认的10。

7.空中三角测量

①主要影响运算速度,正常情况下,对于小范围区域,精度在“中”及以上皆可。

②是对于关键点和连接点的限制,对于小范围区域,采用默认参数即可。

点击OK即可进行空三。

8.优化对齐方式

由于我们相机的详细信息都包含在导入的图片内,且相机相关参数信息丰富。优化对齐方式采用默认即可。

9.相机检校

①处为初始相机默认的检校信息。

②处为我们通过空三---优化对齐方式后的检校信息(该信息一般是更为准确的)。

将调整后的相机信息导出

导出结果如下:

而后在“初始”界面内,将刚刚导出的相机信息导入。

然后固定相机参数:

选择Check all

此时我们便发现,“调整”变成了灰色。此时相机检校完成。

10.生成密集点云

我们在完成空中三角测量后,实际上生成的是稀疏点云,如下图所示区域的点

生成密集点云是在稀疏点云基础上实现的。

点击“创建点云”(在不同版本的photoscan中对于该功能的翻译及按钮所在位置略有不同)

等待进程结束,在这个过程中,CPU线程基本上可以拉满。

点击该按钮即可切换到密集点云

11.生成模型

在不同版本的photoscan中对于该功能的翻译及按钮所在位置略有不同

生成模型可以基于深度图或者是点云,本文采用深度图生成。

12.生成DEM

13.生成DSM(正射影像)

到此,PhotoScan的基础操作便已经完成。

四、基于Python的MetaShape源代码(包含可视化窗体)

详情请见本人博客链接

https://download.csdn.net/download/w2492602718/89518810

相关文章:

【最详细】PhotoScan(MetaShape)全流程教程

愿天下心诚士子,人人会PhotoScan! 愿天下惊艳后辈,人人可剑开天门! 本教程由CSDN用户CV_X.Wang撰写,所用数据均来自山东科技大学视觉测量研究团队,特此鸣谢!盗版必究! 一、引子 Ph…...

Excel多表格合并

我这里一共有25张表格: 所有表的表头和格式都一样,但是内容不一样: 现在我要做的是把所有表格的内容合并到一起,研究了一下发现WPS的这项功能要开会员的,本来想用代码撸出来的,但是后来想想还是找其他办法,后来找到"易用宝"这个插件,这个插件可以从如下地址下载:ht…...

AI作画工具深度剖析:Midjourney vs. Stable Diffusion (SD)

在人工智能技术的推动下,艺术创作的边界被不断拓宽,AI作画工具成为数字艺术家与创意人士的新宠。其中,Midjourney与Stable Diffusion(SD)作为当前领域的佼佼者,以其独特的算法机制、丰富的功能特性及高质量…...

ASP.NET Core Blazor 5:Blazor表单和数据

本章将描述 Blazor 为处理 HTML 表单提供的特性&#xff0c;包括对数据验证的支持。 1 准备工作 继续使用上一章项目。   创建 Blazor/Forms 文件夹并添加一个名为 EmptyLayout.razor 的 Razor 组件。本章使用这个组件作为主要的布局。 inherits LayoutComponentBase<div …...

C++ 仿QT信号槽二

// 实现原理 // 每个signal映射到bitset位&#xff0c;全集 // 每个slot做为signal的bitset子集 // signal全集触发&#xff0c;标志位有效 // flip将触发事件队列前置 // slot检测智能指针全集触发的标志位&#xff0c;主动运行子集绑定的函数 // 下一帧对bitset全集进行触发清…...

联合概率密度函数

目录 1. 什么是概率密度由联合概率密度求概率参考链接 1. 什么是概率密度 概率密度到底在表达什么&#xff1f; 外卖在20-40分钟内送达的概率 随机变量落在[20,40]之间的概率。下图中&#xff0c;对总面积做规范化处理&#xff0c;令总面积1&#xff0c; f ( x ) f(x) f(x)则成…...

【Java10】成员变量与局部变量

Java中的变量只有两种&#xff1a;成员变量和局部变量。 和C不同&#xff0c;没有全局变量了。 成员变量&#xff0c;field&#xff0c;我习惯称之为**”属性“**&#xff08;但这些年&#xff0c;因为attribute更适合被叫做属性&#xff0c;所以渐渐不这么叫了&#xff09;。 …...

Spring Session与分布式会话管理详解

随着微服务架构的普及&#xff0c;分布式系统中的会话管理变得尤为重要。传统的单点会话管理已经不能满足现代应用的需求。本文将深入探讨Spring Session及其在分布式会话管理中的应用。 什么是Spring Session&#xff1f; Spring Session是一个用于管理HttpSession的Spring框…...

从0开始学习pyspark--Spark DataFrame数据的选取与访问[第5节]

在PySpark中&#xff0c;选择和访问数据是处理Spark DataFrame的基本操作。以下是一些常用的方法来选择和访问DataFrame中的数据。 选择列&#xff08;Selecting Columns&#xff09;: select: 用于选择DataFrame中的特定列。selectExpr: 用于通过SQL表达式选择列。 df.select…...

Fastjson首字母大小写问题

1、问题 使用Fastjson转json之后发现首字母小写。实体类如下&#xff1a; Data public class DataIdentity {private String BYDBSM;private String SNWRSSJSJ;private Integer CJFS 20; } 测试代码如下&#xff1a; public static void main(String[] args) {DataIdentit…...

GuLi商城-商品服务-API-品牌管理-效果优化与快速显示开关

<template><div class"mod-config"><el-form :inline"true" :model"dataForm" keyup.enter.native"getDataList()"><el-form-item><el-input v-model"dataForm.key" placeholder"参数名&qu…...

如何成为C#编程高手?

成为C#编程高手需要时间、实践和持续的学习。以下是一些建议&#xff0c;可以帮助你提升C#编程技能&#xff1a; 深入理解基础知识&#xff1a; 确保你对C#的基本语法、数据类型、控制结构、面向对象编程&#xff08;OOP&#xff09;原则有深刻的理解。学习如何使用Visual Stud…...

SpringBoot学习06-[SpringBoot与AOP、SpringBoot自定义starter]

SpringBoot自定义starter SpringBoot与AOPSpringBoot集成Mybatis-整合druid在不使用启动器的情况下&#xff0c;手动写配置类进行整合使用启动器的情况下,进行整合 SpringBoot启动原理源码解析创建SpringApplication初始化SpringApplication总结 启动 SpringBoot自定义Starter定…...

Maven - 在没有网络的情况下强制使用本地jar包

文章目录 问题解决思路解决办法删除 _remote.repositories 文件代码手动操作步骤验证 问题 非互联网环境&#xff0c;无法从中央仓库or镜像里拉取jar包。 服务器上搭建了一套Nexus私服。 Nexus私服故障&#xff0c;无法连接。 工程里新增了一个Jar的依赖&#xff0c; 本地仓…...

JAVA--JSON转换工具类

JSON转换工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackso…...

每日复盘-20240705

今日关注&#xff1a; 20240705 六日涨幅最大: ------1--------300391--------- 长药控股 五日涨幅最大: ------1--------300391--------- 长药控股 四日涨幅最大: ------1--------300391--------- 长药控股 三日涨幅最大: ------1--------300391--------- 长药控股 二日涨幅最…...

MySQL 一些用来做比较的函数

目录 IF&#xff1a;根据不同条件返回不同的值 CASE&#xff1a;多条件判断&#xff0c;类似于Switch函数 IFNULL&#xff1a;用于检查一个值是否为NULL&#xff0c;如果是&#xff0c;则用指定值代替 NULLIF&#xff1a;比较两个值&#xff0c;如果相等则返回NULL&#xff…...

一个使用率超高的大数据实验室是如何练成的?

厦门大学嘉庚学院“大数据应用实训中心”&#xff08;以下简称“实训中心”&#xff09;自2022年建成以来&#xff0c;已经成为支撑“大数据专业”复合型人才培养的重要支撑&#xff0c;目前实训中心在专业课程实验教学、项目实训、数据分析类双创比赛、毕业设计等方面都有深入…...

Chiasmodon:一款针对域名安全的公开资源情报OSINT工具

关于Chiasmodon Chiasmodon是一款针对域名安全的公开资源情报OSINT工具&#xff0c;该工具可以帮助广大研究人员从各种来源收集目标域名的相关信息&#xff0c;并根据域名、Google Play应用程序、电子邮件地址、IP地址、组织和URL等信息进行有针对性的数据收集。 该工具可以提…...

如何在Java中实现PDF生成

如何在Java中实现PDF生成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在软件开发和企业应用中&#xff0c;生成PDF文档是一项常见的需求。Java作为一种强大…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...