MetaShape+CloudCompare的一些基本操作(一)

一、前言

        由于要做一些小小的数据处理,要进行无人机影像的拼接,上网一搜发现metashape(前photoscan)很好用。由于一些影像涉及到未发布的论文和知识版权,所以进行了打码处理,请见谅!!

        由于整个过程都是自己摸索出来的,可能会有很多不对的地方,请多指正!!!!

二、拼接照片

1.导入照片(点击菜单工作流程-添加照片)

导入后页面上会显示很多的点。随后勾选如下图左部分的横摆(利于后面的相机校正)

2.更改参考系,点击下方红色框框(下面的测量精度一般都是默认即可)

注意,这一步是有利于统一坐标系的,为了确保三维重建成果能够正确地与现实世界的位置相对应(如正射影像生成、环境监测、生态研究等科研领域)。当然如果你坐标系选错了就会出现下面的情况...一条浓缩了几千万个点的细线....

        你可能会问(我问的,我就这么做的^∨^)....不选坐标系统不就好了,我用那个本地坐标系统不行吗?诶!还真别说,真能导进去,但是只能导一个,因为坐标系没有统一,在后面地理配准的时候会很难受(就是做不了) 

        这是我历经千辛万苦选择的坐标系统,因为我这个影像数据使用大疆无人机飞出来的,而这个坐标系统选择投影坐标系和地理坐标系都会出现上面的情况,但是选择地心坐标系就不会,我查了一下,首先呢就是这个相机就是基于WGS84的地心坐标系,其次为什么是地心坐标系呢?

        这是因为WGS84是一个全球通用的地理坐标系统,它以地球质心为原点,能够提供全球一致的定位基准。使用WGS84坐标系可以直接与全球定位系统(GPS)和其他卫星导航系统(如GLONASS、Galileo、北斗)的数据相兼容,这对于无人机的导航和定位非常重要。

        相比之下,投影坐标系(如UTM、State Plane等)是将地球表面的曲面投影到平面上的坐标系统,主要用于地图制作和地理信息系统(GIS)中的数据分析。投影坐标系通常针对特定区域设计,以减少投影变形,但它们不适用于全球范围内的应用。

        无人机在飞行过程中需要实时的、全球统一的定位信息来进行导航和避障,WGS84坐标系正好满足这一需求。此外,WGS84坐标系也便于将无人机采集的数据与其他地理信息系统中的数据进行整合和分析,如果后续有需求,可以使用如ArcGIS等 GIS 软件将 WGS84 坐标转换为所需的投影坐标系。

3.对齐照片(点击工作流程-对齐照片)

        若出现一些照片没有对齐需要进行手动对齐!

PhotoScan手动对齐照片 | ConorPai的博客 (baiguangnan.com)icon-default.png?t=O83Ahttp://www.baiguangnan.com/2018/08/27/photoscanalignphotos/

二、输出密集点云(DEM同理)

1.相机校正(点击工具-相机校准)

        相机校正后创建的点云会更准确。通过准确的相机参数,包括位置和姿态,能够有效减少重建中的误差,使得生成的点云更符合实际场景。这种精确度直接影响到点云的密度、质量以及后续处理(如模型重建、测量等)的可靠性。

        首先先导出相机参数,步骤如下:

        随后在'初始'中导入刚刚导出的.xml文件(点击上图导出的前一个小按钮)点击固定参数,勾选全部。

2.点击工作流程-创建点云即可生成密集点云

(推荐“中”品质,高品质我的笔记本(RTX3050Ti)带不动,如果是实验室电脑的话可以选)

        生成后点击下面红色圈内的按钮即可查看效果。

         当然,如果你想创建dem也是一样的。

PS:

        注意导出时一定要按一下加载默认值的选项,这样才不会导致Z轴方向上图层不统一!!

        分层不一定是坐标系的问题!!千万不要盲目导出别的坐标系,否则点云会不完全显示!!!!

(10.7补充) 

三、质量检验 

        为了确保所使用的影像数据能够满足后续处理的要求,从而获得高质量的三维重建结果。质量检测可以帮助识别和排除那些可能影响重建精度和可靠性的低质量影像。

        在左侧相机下右键选择估计相片质量。

        点击下方红圈内的按钮,选择“详情”,可以看到质量一栏,该数值若小于0.5则可能需要根据实际情况删除该照片。(因为盲目删除该照片可能会有无法覆盖原区域的问题)

四、cloudcompare点云滤波(低通滤波)

        如导入到cloudcompare中,上面说过如果设置了错了坐标系就会无法导入cloudcompare(在metashape最初设置地心WGS84坐标系) 

         比如如果不设置坐标系导入cloudcompare虽然可以但是无法进行地理配准。再次强调一定要设置对坐标系统!!无人机的话大概率是地心坐标系WGS84。

        点击红圈圈内的按钮导入.ply点云数据。

CloudCompare界面

        点击工具-清理-噪声过滤器

Neighbors

  • Point (KNN)‌: 这个选项指的是基于最近邻(K-Nearest Neighbors)的方法来确定每个点的邻居数量。KNN是一种常用的点云滤波技术,其中K代表邻居的数量。在这个方法中,每个点都会找到其最近的K个邻居,并基于这些邻居的信息进行滤波处理。举例来说,就是在人群中,KNN就像是你决定只跟离你最近的几个朋友(K个邻居)聊天,不管周围有多少人。这样,你的交流就只限于这个小圈子,不会被其他人干扰。
  • Radius (Sphere)‌: 这个选项则是基于一个给定的半径来确定每个点的邻居。在这个方法中,会为每个点创建一个球形区域,半径由用户指定,然后计算落在这个球形区域内的点作为邻居。同样的例子,这次,不再局限于固定的几个朋友,而是画了一个圈(半径),在这个圈里的所有人都可以成为你的临时朋友(邻居)。如果有人走进这个圈,他们就自动成了你的邻居;如果有人走出这个圈,他们就不再是你的邻居。

Max Error

  • Relative(相对的动态变化): 当选择相对误差时,max error 参数会被视为相对于点云中点的平均距离的一个比例值。这意味着滤波的阈值会根据点云数据本身的特性动态调整。以人举例,比如说我可以接受的误差是大家平均距离的一定比例。如果大家都站得很近,那么我能接受的误差就小;如果大家都站得远,那么我能接受的误差就大。
  • Absolute: 绝对误差则是一个固定的数值,表示滤波过程中允许的最大误差。无论点云数据如何,这个阈值都是恒定的。

如何选择参数呢?

        对于 neighbors 参数,如果我们希望滤波效果更加平滑且不受局部密度变化的影响(密度相对恒定),可以选择 Point (KNN) 并设置一个合适的K值。如果希望滤波效果更加依赖于局部密度,可以选择 Radius (Sphere) 并设置一个合适的半径值。

        对于 max error 参数,如果我们希望滤波效果更加适应点云数据的局部特性,可以选择 Relative 并设置一个合适的比例值。如果你希望滤波效果更加稳定且不受点云数据特性的影响,可以选择 Absolute 并设置一个合适的固定值。

        absolute 的值设置为1,那么在滤波过程中,任何点的位置调整都不能超过1个单位长度(通常是米或毫米,取决于点云数据的单位)。这意味着滤波后的点云中的点,其位置与原始位置相比,最大偏差不能超过1个单位长度。

        该参数值的大小直接影响滤波的效果。较小的值会导致滤波效果较为保守,即点的位置调整较小,可能会保留较多的噪声;而较大的值则可能导致滤波效果较为激进,即点的位置调整较大,可能会过度平滑点云,甚至丢失一些细节。

        但是我们在科研学习中可能需要多次尝试不同的参数组合,观察滤波效果,并实时进行调整。

PS:有报错、提醒:

1. [DoActionFilterNoise] Failed to apply the noise filter to cloud 'xxxxxx - Cloud'! (not enough memory?)

        貌似是我当前开的软件有点多,没有足够的内存/运存了。我把后台的ArcGIS关掉就好了...

2. [DoActionFilterNoise] No points were removed from cloud 'xxxxxx - Cloud'

        这个应该是因为数据本身的噪声就很低(metashape在生成点云的时候就会进行一次滤波),而且应该在所有影像拼接完成后再进行滤波。(总共有十余个点云文件,一个几万个点)

        在我调整参数后,得到了另一个滤波后的点云(肉眼几乎没啥区别...那么多点就少了那么一点点)

        后续我将全部数据都在metashape中处理完毕,点云总数如下:

        因为点云规模很大,大规模点云的处理可能非常耗时,可以先在小规模样本上进行参数调整,找到合适的参数后再应用于整个点云。我第一次滤波后就滤掉了几万点,效果一般而且时间很长。(cloudcompare的默认值一般看作是平均间距或一个有代表意义的统计值)

五、cloudcompare精细配准

        由于我们的各点云层在导入cloudcompare后,乍一看它们还挺契合的,但是我左键旋转后发现它们并不在一个平面上,查询后发现需要可能进行精细配准会有用。(后续证实其实不是因为这个原因,当精细配准后仍然无法改变这个现象,实际上是没有加载默认值)

旋转后原本应该在一起的三个图层竟然分开了!?

        点云精细配准是指在点云粗配准的基础上,进一步提高点云之间对齐精度的过程。这个过程通常发生在已经有一个大致正确的初始对齐状态之后,目的是为了消除剩余的小误差,使得两个点云能够更加精确地重叠在一起。cloudcompare软件中的是ICP算法,它通过迭代的方式,不断寻找源点云和目标点云之间的最近点对,并根据这些点对计算出一个变换矩阵,然后用这个变换矩阵去更新源点云的位置,直到满足某个停止条件(比如迭代次数或者误差阈值)。

        首先选取两个图层,点击工具类-配准-精细配准,设置一些参数后(参数详解如下)点击“OK”即可。

  • Adjust Scale选项的意思是针对待配准的两个点云在尺寸不一致时,自动调整它们的全局比例,以便更好地进行配准。 (区域大小可以自己看一些各轴的范围,差的很多就勾选上,当然,我的这个范围差距很小,我也勾选上了,因为在配准过程中使用“Adjust Scale”选项,可以勾选此选项以帮助自动调整尺寸差异。即使差距很小,这个选项也能提高配准的准确性)
  • Final overlap选项指的是在配准过程中,经过调整和优化后,两个点云之间的重叠区域的最终状态。注意:由于我的实验是用无人机来拍摄地形的影像,根据摄影测量学的知识,一点要注意像片重叠的影响,软件默认值为100%,而相邻航线上的航摄相片的旁向重叠度应该满足30%~40%,注意更改。

  • 高级选项的第一个就是随机的采样点个数,如果电脑带的动就多搞一点。 

        随后点击编辑-合并,将两个配准后的图层合并在一起。

        如下图所示。

        以此类推,将合并的图层继续精细配准。

PS:由于我的图像是地形扫描图,当用cloudcompare打开后即可自动对准(有位置信息),所以不需要粗配准。

        因为本人进行粗配准后报错:Registration failed! (points are all aligned?),即点已经全部对齐了。所以我直接进行了精细配准。

2024.10.1

 Johaden

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值