2025测绘程序设计国赛实战 | 基于统计滤波算法的点云去噪
前言
好吧,还是决定至少写一遍点云去噪哈哈。
昨夜最后一场预赛,小编有一个很强烈的感觉就是,对比第一次,现在在算法排布对全局逻辑拈连上,真的已经更倾向于唯手熟尔的状态了。看过一本神经学相关的书,里面对学习的阐释又一次回荡在小编脑海,大概是这样:“学习,最难的就是让那些本无关的神经元建立起联系”,但是建立起联系只是学习的第一步,要在一次一次地重复,强化中,让髓鞘(神经元链接的物质)一点一点加宽加厚。
所以,每一次尝试,都一定不会是徒劳无获。
本文用到的数据是小编站在巨人的肩膀得到的,小编将前辈写下的项目抛给我的助理,让它捏出一版试题册,然后上午花了两个多小时,将程序实现。关于这个赛题小编没有做过深的研究,本文的大致结构就是基于这个试题册,从试题介绍、数据分析&算法原理、C#实现这三部分,跟大家做浅层分享 。
一、试题介绍
(一)六大选题
//基本上是基操了哈哈,小编每篇文章都要把这张图片放上,不管大家什么时候看到小编的拙作,都能知道今年要考个什么东西哈哈。
(二)本题要求
基于统计滤波的点云去噪,将点云空间划分为规则格网,根据k个邻近点的统计特性识别并移除噪点。
(三)基本认识
点云:由大量三维(或二维)坐标点组成的数据集,通常通过激光雷达、相机等设备采集,广泛应用于测绘、三维建模、自动驾驶等领域。每个点包含空间坐标(x,y,z 或 x,y),可能附带颜色、强度等属性。
点云噪声:采集过程中因设备误差、环境干扰(如光线、遮挡)或物体表面特性(如反光)引入的异常点。噪声点的特征是:与周围 “正常点” 的空间分布不一致(如距离过远、分布离散)。(说实话,小编一年级第一次拿到关于点云的文献读的时候,里面讲什么噪声,我真的首先想到的是我的降噪耳机哈哈哈)
统计滤波的核心思想:统计滤波属于局部邻域分析法,其基本假设是:正常点在局部空间内的分布具有统计一致性(如距离、密度等特征符合某种概率分布),而噪声点会显著偏离这种一致性。(找没有团体操守的点)
k 个邻近点的统计特性分析:“k 个邻近点” 指每个目标点周围距离最近的 k 个点(k 为预设参数,如 5-50),通过分析这些点与目标点的距离统计特性,判断目标点是否为噪声。
(四)任务思路
- 读入数据(天黑请闭眼)
- 基于统计滤波思想,找出噪声点,标记(狼人的行为总是存在异常的)
- 去噪,得到干净的点云数据。(农民胜利)
- 附加:可以进行可视化操作,但是不是必选项。(小编的程序只是=实现了算法输出了结果,大家感兴趣也可以试试拓展可视化类,欢迎大家在议事区或私信留言,小编看到会回)
二、数据分析&算法原理
//试题册PDF小编已上传到资源区,也放在了本文顶部,家人们有需自取。
(一)数据
- Meank:就是上一部分所谓“K个邻近点”,作为常量,可以理解为能够反映出群体特征的基本规模。
- miu:标准差倍数阈值,作为判断噪点的助理。
- 数据部分:二维点。
(二)算法实现
//罪恶了,小编这里直接把我的助理给我生成的试题册贴过来了哈哈。
//纯一溜儿丝滑到底,这道题的思路和处理还是很清晰的。
三、C#实现
//这里只给出核心算法类的完整实现。(之前有一篇小编是把源码直接附上了,但是有家人说没有图片看着方便,作为编者当然要以为读者服务为基本职业操守啦,小编也觉得图片占地小,在篇幅上大家不会有很大的阅读压力哈哈)
四、唠唠叨叨
啊,又成功活了一天哈哈。
一种矛盾的状态,一边想着时间能不能整个几倍速,早点比完让悬着的心也能赶紧入土为安。一边又想着能不能慢一点,因为总觉得还有好多漏洞需要补。小编这号人总幻想操控时间,可是时间才是它自己的主宰。
还有五天,这种能够每天只干一件事的生活就告一段落了。其实想想感觉还是也有一点不舍得的,毕竟能够每天都有事可做,能够专注在一件事上,时间不会被各种琐事冲得支离破碎,这种状态,真的是小编最喜欢,也最想要的。
好啦,不跟大家胡言乱语了哈哈,最后还是那句话,小编就是半瓶子晃荡,每次跟大家就做的分享一定一定会存在各种大大小小的问题,希望大家多多包涵,也非常非常欢迎大家批评指教,小编一定虚心学习。作为一个创作者,作为一个编者,尊重知识,真诚分享,虚心受教,就是小编给自己的最基本的戒训。
我们一起加油,世界灿烂盛大,万物共生共荣!