PhotoScan处理无人机航拍照片GCP校正流程

2023-05-16

PhotoScan处理无人机航拍照片GCP校正流程

【软件最近更新版本较频繁,菜单条目变化较大,但基本功能没变】

Agisoft PhotoScan (APS)现改名 Metashape了。

【PhotoScan处理无人机航拍照片基本流程(中文版) - 百度文库】——这个基本流程也是我原创的,于2016-08-16上传到百度文库。现在发现被很多个人和网站转载(或拿来主义标注原创)。表格总结的比较精简,如果大家有任何问题欢迎加我QQ(472395768高伟)咨询。

特别指出一点:如果处理需求只是生成正射DOM,且没有野外控制点,流程可以只做 对齐相片→创建格网→生成正射→导出正射 即可,省略 密点、纹理、消减格网等操作。

1、建议无人机航拍前先测控制点,可用差分GPS测量地面控制点GCP(通常WGS84-UTM投影平面坐标系,单点测量形式),边放置控制点边测量(省去后测GCP时野外要费力按图找点)。

2、GCP可用不小于A4的白纸或浅色纸板,四角石头压实(一次性无需回收,携带轻便,形状规则白色航片上明显易于识别,对环境无污染)。

四角压实的不小于A4的白纸或浅色纸板中心

若无也可用自然地物作GCP,要求局部地形平坦,周边高度变化小,同时与周边地物色彩差别明显,照片上易识别,比如不太突出地面的大石块中间,井盖中心,路边水泥板中间或转折角等。

不太突出地面的大石头中间

3、室内PhotoScan软件加载航拍照片后,如果无人机搭载相机带GPS功能,在Reference参考面板可以看见照片坐标值是经纬度。

但野外控制点一般是投影坐标系,所以需要先做一下坐标系转换:

参考Reference面板Convert工具转换照片坐标系WGS84到UTM相应的6度带内。
坐标系转换后可见投影

6度带带号 = 取整(航拍中心点经度 ÷ 6)+ 31

4、先执行以最低参数跑一遍Align photos --> Build Mesh --> Build Orthomosaic,便于自动协助快速刺点

然后 Import导入工具 导入差分手簿输出的csv格式的点测量数据(至少10GCP),然后全选右键设置Accuracy为0.02m。

CSV格式的参考坐标文件示例(*.txt)

参考坐标可以使用字符分隔的文本文件格式加载到参考窗格。每个参考点在此文件中在单独的行上指定。示例参考坐标文件如下:

#<label> <x><y> <z>

IMG_0159.JPG40.165011 48.103654 433.549477

IMG_0160.JPG40.165551 48.103654 434.724281

IMG_0161.JPG40.166096 48.103640 435.630558

每行上的单个条目应使用制表符(空格,分号,逗号等)字符分隔。以#字符开头的所有行都被视为注释。

Trimble R8的RTK测量参数水平1cm,垂直2cm,故而设置(x,y,z)的测量精度为2cm。

5、workspace面板打开正射图,可看到GCP的大致分布位置。

放大到某一控制点,可在待确认的marker蓝色小旗子附近看到野外设置的GCP,用Draw Polygon工具大致勾勒GCP,右键Assign Images...,查看前两张包含该GCP的航片编号。

结合正射全景图依次在前两张航片上找到GCP,右键Place Marker,选择该GCP的编号。然后Reference面板该GCP行右键FilterPhotos by markers...,依次对每一张含有该GCP的航片进行marker的调整确认。

6、Reference面板查看放置marker的像素误差值(最后一列),若大于1,则右键Show Info...,,对偏差值最大的几个依次重新核实调整放置marker的位置,尽量使放置marker的像素误差值小于1。

PS:当GCP位于某张航片边缘时,像素误差值通常无法达到小于1,类似情况可remove marker舍弃。

7、之后 Reset Filter,重复5、6步骤,依次设置每一个GCP。

8、查看marker的坐标误差Error(m)是否有异常偏大的值,核实marker放置位置。

如下图,明显hx008的总体误差异常偏大,单击Reference > View errors工具可见主要误差来自北向的偏大误差。同时,标记hx002的水平两方向的位置误差也显示偏大。

对存疑marker,分别与野外GCP采集照片仔细对比核实标记位置是否正确:比较发现hx008在航片上标记有误,野外实测hx008控制点应为原标记北侧的石块;hx002标记位置与野外实测位置偏离西北米余。

 

修改调整后点击Reference > Update更新数据

PS:当GCP较多时,建议只勾选部分GCP(≥10个),其他用作检查点Check points。

9、配置完所有控制点后,优化对齐Reference > Optimize Cameras


从2011年开始航拍用这个软件,野外、室内实验室等地形测绘、地物建模、人体建模等应用场景都有一点经验。

PhotoScan软件常用的航片处理流程很傻瓜,可以做到现场一键出图,但是其功能其实很强大全面,可以处理各类照片图片,包括网络搜集的照片,甚至鱼眼镜头照片、扫描图片等等,黑白照片也可以,建模功能可以去云、填充空洞(比如水域DEM)、指定区域建模、自设定建模坐标系等等,欢迎各种应用场景的朋友一起交流探讨。

国内比较好的软件使用网站帖子比较少,个人有问题都会到俄罗斯官方网站Forum搜索,或者直接邮件跟俄方研发工程师询问,他们回复还蛮快的。

这些年陆陆续续有朋友加Q一起交流,相互学到很多。最近有个朋友反映一个问题,相关网贴很少提及,特此贴出来供同样问题者参考

     问题1、大疆Dj排的照片加载到软件中,航片识别高程为负值?生成的DEM也为负高程值?

【问题解析】

查看详细exif信息,高程定义是Below Sea Level,这应该是大疆固件的bug,之前大疆论坛有个反馈该问题的帖子,主要是精灵3、4和御1的机器遇到,大疆对此进行了优化,建议升级firmware。

  • EXIF信息在线查看器工具: https://exif.tuchong.com/
  • 有反馈固件版本Firmware beta FW_V01.04.0005高程没问题GPS Altitude Ref : Above Sea Level,
  • 同样位置固件版本Firmware public FW_V01.05.0030的航拍就出该问题了GPS Altitude Ref : Below Sea Level

【解决方法】

在Reference栏,选择导出相机Exif位置信息,用文本软件或excel打开编辑删除高程一列的负号,然后重新导入PhotoScan即可。

另外建议升级大疆固件到最新,永久解决这个问题。

      问题2、野外控制点采用的国家2000投影分带坐标系,直接Convert转换时找不到CGCS2000?

【问题解析&解决方案】

目前软件的坐标转换还不支持WGS84直接转换cgcs2000投影坐标系。(由于国家测绘保密,其实所有商业软件都不能准确支持)

但是WGS84和CGCS2000的地球椭圆参数基本一致,两者偏差极小,非专业测绘工程,两者可等同直接相互更改。

1)先将航片的WGS84手动重置为China Geodetic Coordinate System 2000

2)投影转换,转换Convert工具,经纬度的大地坐标转换成米为单位的投影坐标系

然后就可以导入野外控制点啦,Markers标记栏可见坐标单位为米(m)

问题3、野外控制点该选择?选的不好,内业该如何处理?

图上初始加载的控制点上浮在航片范围外,手动配置下marker即可,参照正文第5步

 【问题解析&解决方案】

控制点的放置原则:水平和高程三维度上的均匀分布,即:尽量不共线不共面

若野外没注意或者条件不允许,就像上图一样采了2条线,还等间距的,怎么办呢?

不需要把所有野外点做控制点!后期内业可根据项目处理精度要求,灵活分配野外实测控制点分别作为校正控制点Marker和精度校核点Check Point。

checkpoint可选取与其相邻点共线或共面的、高程变化不大的点,用来做数据QA,以检验处理数据产品的精度。


【有问题可以加QQ:472395768高伟】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PhotoScan处理无人机航拍照片GCP校正流程 的相关文章

  • mysql之模糊查询的方法

    Mysql模糊查询正常情况下在数据量小的时候 xff0c 速度还是可以的 xff0c 但是不容易看出查询的效率 xff0c 在数据量达到百万级 xff0c 千万级的甚至亿级时mysql查询的效率是很关键的 xff0c 也是很重要的 一 一般
  • Spring Cloud限流详解

    Spring Cloud限流详解 Spring Cloud Spring Cloud 2017 12 01 在高并发的应用中 xff0c 限流往往是一个绕不开的话题 本文详细探讨在Spring Cloud中如何实现限流 在Zuul上实现限流
  • springboot启动注解

    为什么springboot不需要配置文件就可以启动成功 springboot入口SpringBootApplication是一个启动类 xff0c 主要的注解是以下的三个 xff1a 1 SpringBootConfiguration是一个
  • 如何释放linux的内存

    你们知道怎么释放linux的内存吗不知道的话跟着学习啦小编一起来学习怎么释放linux的内存 释放linux的内存的步骤 Linux下操作频繁时 xff0c 物理内存会被快速用完 xff0c 当操作结束后 xff0c 物理内存没有被正常的释
  • 跨域的五种解决方案详解

    1 跨域解决方案一 cors技术 CORS 全称cross origin resource share xff08 资源共享 xff09 工作原理 xff1a 服务器 在返回响应报文的时候 xff0c 在响应头中 设置一个允许的header
  • MySQL 日期时间类型精确到毫秒

    MySQL 常用的日期时间类型常用的是datetime timestamp 其中datetime占用5个字节 xff08 有些文档中说占用8个字节是不对的 xff0c 默认也不会保存毫秒 xff09 DATETIME和TIMESTAMP两种
  • Spring Boot——Thymeleaf

    哈喽 xff01 大家好 xff0c 我是 xff0c 一位上进心十足的 Java领域博主 xff01 的写作风格 xff1a 喜欢用 通俗易懂 的文笔去讲解每一个知识点 xff0c 而不喜欢用 高大上 的官方陈述 博客的领域是 面向后端技
  • [BZOJ3185][Coci2011][DP]kamion

    考虑转化一下问题 令 f i j k 表示从i到j恰好用了k步 xff0c 并且到j的时候火车厢为空的方案数 那么转移就是 f i j k 61 f a b k 1 f c j k 2 xff0c 转移成立当且仅当存在i gt a的边 xf
  • 查看docker 容器的端口

    查看docker 容器的端口 sudo netstat tulpn grep docker 查看指定端口 xff0c 可以结合grep命令 xff1a netstat ap grep 80 查找指定端口使用的pid fuser 80 tcp
  • Docker服务的停止命令(systemctl stop docker)

    停止Docker服务 停止docker服务 systemctl stop docker 非root用户使用 停止docker服务 sudo systemctl stop docker
  • Docker查找镜像版本的命令

    Docker查找镜像版本的命令 有时候想查一下镜像有哪些版本 xff0c 因为有墙 xff0c 官网一直在转圈进不去 xff0c 这时候就可以使用命令查询了 xff0c 以centos为例 xff0c 自己想要哪个更改一下命令就可以了 do
  • ES6 如何将 Set 转化为数组

    例如 xff1a const mySet 61 new Set Set 对象具有以下特征 xff1a Set 实例的成员唯一 xff0c 不会重复 Set 实例可以存储任何类型的值 xff0c 包括基本类型和对象 Set 实例是可迭代的 x
  • Request.url用法

    網址 xff1a http localhost 1897 News Press Content aspx 123 id 61 1 toc Request ApplicationPath Request PhysicalPath D Proj
  • oracle IO 优化

    数据库的作用就是实现对数据的管理和查询 任何一个数据库系统 xff0c 必然存在对数据的大量读或者写或者两中操作都大量存在 IO问题也往往是导致数据库性能问题的重要原因 在这篇文章中 xff0c 主要帮助大家在理解Oracle的读写操作机制
  • oracle中imp命令详解

    oracle中imp命令详解 Oracle的导入实用程序 Import utility 允许从数据库提取数据 xff0c 并且将数据写入操作系统文 件 imp使用的基本格式 xff1a imp username password 64 se
  • C# 非顶端窗口截图

    panel上可以通过DrawToBitmap截图 xff0c 不管是否在屏幕外是否有遮挡 Bitmap sourceBitmap 61 new Bitmap 400 300 Control ct 61 frmMain mianForm pa
  • bat中的特殊字符,以及需要在bat中当做字符如何处理

    bat中的特殊字符 xff0c 以及需要在bat中当做字符如何处理 批处理 Bat 中特殊符号的实际作用 xff0c Windows 批处理中特殊符号的作用 xff1a 64 隐藏命令的回显 在for中表示使用增强的变量扩展 xff1b 在
  • rviz无法显示的问题

    1 启用初始化配置 首先删除保存好的rviz xff0c 运行最初始化的配置 rviz运行后会选择保存在 home cbc rviz default rviz 删除之后 xff0c 重新运行 xff1a roscore rosrun rvi
  • 用C语言编写一个HTTP协议的目录浏览和文件下载服务器

    include lt stdarg h gt include lt errno h gt include lt stdio h gt include lt fcntl h gt include lt unistd h gt include
  • 编写浏览器使用的OCX全过程

    随着互联网的飞速发展 现在的人们都习惯了打开浏览器进行工作 基于WEB的程序蜂拥而至 几乎变得无所不能 由于WEB脚本语言的限制 xff0c 对于本地计算机的访问受到很大的限制 开发WEB的程序员都会因为WEB的打印而烦恼 xff0c 对于

随机推荐

  • Linux平台下启动oracle 11g EM控制台

    当我们的oracle服务器是使用的Linux Unix系统时 我们从windows或者其他的客户端想用启动oracle的EM工具了解一些系统系统信息时 可以采用如下方式 首先在服务器端打开一个窗口 输入如下命令 emctl start or
  • Oracle日常性能查看

    判断回滚段竞争的SQL语句 xff1a xff08 当Ratio大于2时存在回滚段竞争 xff0c 需要增加更多的回滚段 xff09 select rn name rs GETS rs WAITS rs WAITS rs GETS 100
  • Double.ToString 方法 (String)

    double numbers 61 1054 32179 195489100 8377 1 0437E21 1 0573e 05 string specifiers 61 34 C 34 34 E 34 34 e 34 34 F 34 34
  • stm32驱动微雪墨水屏1.54inch e-Paper V2

    我一起驱动墨水屏 一 墨水屏相关基础 xff08 摘自微雪官方 xff09 二 干起来PART2 配置I OPART2 底层硬件接口必要的调用函数PART3 功能函数PART4 应用函数 三 应用注意 代码下载 xff1a https do
  • 2020-11-13

    三角翼无人机制作指南设计 一 接线 飞控 xff1a pixhawk 915MHz电台 xff0c 空速计 xff0c GPS xff1b 动力 xff1a Tmotor电机 电调 F150KV700 舵机 xff1a S43A标准mini
  • docker案例redis (pull、dockerfile两种方式)

    方式一 xff08 pull xff09 01 查询redis并拉取 docker search redis 查询 docker pull redis latest 拉取 docker images 02直接使用拉取的redis建立容器 d
  • 进程、内存和文件

    进程是操作系统里面的核心概念 它指的是一个运动中的程序 从名字上看 xff0c 进程表示的就是进展中的程序 一个程序一旦在计算机里运行起来 xff0c 它就称为一个进程 操作系统对进程的管理通过进程表来实现 进程表里存放的是关于进程的一切信
  • 蓝牙、红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力

    蓝牙 红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力 SurgePing 2015 04 22 16 52 30 35199 收藏 7 分类专栏 xff1a IOT 文章标签 xff1a 蓝牙 红外线 wifi 频段 无
  • js动态生成级联下拉列表

    html view plain copy print lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 0 Transitional EN 34 gt lt HTML gt lt HEAD gt lt TIT
  • 无人机学习之路——材料准备

    所需材料 xff08 大件 xff09 1 空心杯电机 4个 xff08 笔者用8520型号 xff0c 一般716以上比较常用 xff09 这个电机是直流有刷电机 xff0c 所以不需要电调 2 螺旋桨 正反各2个 xff08 一般旋转直
  • linux 应用编程(持续更新)

    在嵌入式 Linux 系统中 xff0c 我们编写的应用程序通常需要与硬件设备进行交互 Tips xff1a 本篇将以正点原子 ALPHA Mini I MX6U 开发板开发板出厂系统进行测试 进程间通信 管道FIFO信号消息队列信号量共享
  • FreeRTOS中汇编指令

    汇编程序前要加PRESERVE8 require8和preserve8c和汇编有8位对齐的要求 xff0c 这两个伪指令能够满意此要求 LDR和MOV LDR Rn label1 LDR指令负责将label1所代表的存储器中数据搬移到内部寄
  • PX4学习1(相关参考网址)

    官方开发指南 xff1a PX4用户指南 xff1a https docs px4 io master zh PX4开发指南 xff1a https dev px4 io master zh index html 北航可靠飞行控制组 xff
  • 2020硕博无人机文献调研(1)

    1 旋翼无人机自主降落技术研究 xff0c 山东大学 xff0c 岳文斌 创新点 xff1a 利用视觉Apriltag算法进行二维码识别 关于AprilTag详见 https blog csdn net han784851198 artic
  • PX4姿态控制基础

    无人机姿态控制代码实现的四个步骤 订阅数据 xff08 飞机现姿态 xff0c 飞机期望姿态 xff09 PID 外环计算 xff08 作用于姿态误差 xff0c 角速度 xff09 作用 xff1a 产生期望角速度 xff0c 并发布出去
  • PX4位置控制基础

    接受数据 xff08 获取位置信息 期望位置 xff09 外环控制PID xff08 位置环 xff09 xff1a 通过调节速度减小位置差 xff0c 位置差需要通过速度去弥补 判定模式不同 xff0c 位置差的来源 xff08 三种控制
  • ROS2开机程序自启动

    运行环境 系统 xff1a Ubuntu20ROS xff1a foxy 添加服务脚本 sudo vi etc systemd system rc local service 内容如下 xff1a Unit Description 61 e
  • 【STM32】条件编译不起作用是什么原因

    在工程中定义了几个条件编译 xff0c 用来适应不同的硬件设备 xff0c 但是好像不起作用似的 这种情况可能是在多个文件中使用了条件编译 xff0c 但是编译工程的时候又只是编译了部分文件 xff0c 即使有部分使用了条件编译的文件没有被
  • 一文看懂rtc实时时钟和单片机时钟的区别

    rtc实时时钟和单片机时钟的区别 实时时钟是指给日期及时间计数器累加的时钟 xff0c 通常是32768Hz xff0c 系统时钟是指单片机内部的主时钟 xff0c 给各个模块提供工作时钟的基础 xff0c CPU时钟是指经过CPU的PLL
  • PhotoScan处理无人机航拍照片GCP校正流程

    PhotoScan处理无人机航拍照片GCP校正流程 软件最近更新版本较频繁 xff0c 菜单条目变化较大 xff0c 但基本功能没变 Agisoft PhotoScan xff08 APS xff09 现改名 Metashape了 Phot