关于Agisoft PhotoScan导出的点云在MATLAB显示成一条线的解决方案

一、问题描述

当我们在Agisoft PhotoScan生成密集点云并导出,但在MATLAB中读取显示之后却成了一根Z轴直线(如图一所示),无法旋转和其他操作。我们不妨看看点云的xyz信息(如图二所示),发现其xy是经纬度坐标。

图一:MATLAB显示点云
图二:点云的xyz信息

二、原理刨析

我们不妨看看经纬度坐标系是如何表示每个点的坐标,经纬度坐标的基准坐标系是地理坐标系,是一种3D空间坐标系,原点是参考椭球的质心,其坐标的主要组成方式为(大地经度L、大地纬度B、大地高H【地面点沿着椭球面法线到椭球面的垂直距离】)。
由于经纬度的度数不对应某一标准长度,因此无法精确测量距离或面积,也难以在平面地图或计算机屏幕上显示数据。根据下面的所示,当利用MATLAB读取显示经纬度点云数据时,其默认的空间直角坐标系会将B和L(角度表示)视作Y和X(长度表示),这样就会使地面点到参考椭球质心的轴被强行默认空间直角坐标系中的Z轴,从而使XY始终在一条直线上,故呈现一条直线的情况
在这里插入图片描述
在这里插入图片描述

三、解决方案

从上面的原理可以看出,无非就是坐标系没有转换的问题,因此有两种解决方案。

方案一:在MATLAB中利用程序将点云坐标进行投影转换为平面坐标

假设【Ai,Bi,Ci】{i~n}为原始点云坐标 ======》(高斯正算) =======》 【Di,Ei,Fi】{i~n}为转换后点云坐标

======》 (利用pointCloud函数构建新点云) ======》 point_data=pointCloud([Di,Ei,Fi]) ========>

pcshow(point_data)显示

注:有部分文章有高斯正算源码(传送门):https://blog.csdn.net/qq_55750626/article/details/127577634?spm=1001.2014.3001.5502 ;
若是不想利用程序解决,可以采用将点云点导出在软件里面转换在导入matlab进行构造点云。

方案二:在Agisoft PhotoScan中导出点云时选择投影坐标系统

在这里插入图片描述

当空三处理后的密集点云为经纬度坐标系,其导出点云时默认的坐标系为地理坐标系

在这里插入图片描述

在下拉框中选择坐标系,选择地面点所属的带号以及采用UTM进行投影转换的坐标系统

在这里插入图片描述
在这里插入图片描述

导入到MATLAB读取显示之后的的结果显示
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠楠星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值