当前位置: 首页 > 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作为一种强大…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...