news 2026/3/26 12:32:01

第十课Open3D点云数据处理:均值滤波

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第十课Open3D点云数据处理:均值滤波

1 均值滤波原理

2 与中值滤波对比

3 均值滤波代码实现

3.1 代码行实现

3.2 将均值滤波的实现封装到函数 pointCloud_mean_filter() 中


1 均值滤波原理

点云均值滤波是将空间中每个点的值替换为其周围点的坐标平均值。具体来说,对于给定点云中的每个点,我们考虑它的邻域,即以该点为中心的一定大小的球体,然后计算该球体内所有点的坐标平均值,最后将该点的坐标值替换为该平均值。这个过程可以重复进行多次,以进一步平滑点云数据。点云均值滤波可以有效地去除噪声和平滑点云数据。

2 与中值滤波对比

  • 原理不同:均值滤波取平均值,中值滤波取中位数。
  • 滤波效果不同:均值滤波适用于去除较为平稳的噪声,能够在一定程度上对点云数据进行平滑处理,但会损失部分细节信息;中值滤波更适用于去除非均匀性噪声,能够保留更多的细节信息。
  • 适用范围不同:均值滤波适用于处理较小的噪声,窗口大小较小;中值滤波适用于处理较大的噪声,窗口大小较大。

3 均值滤波代码实现

# axis=0表示对点云取质心,返回一个三维坐标 mean = np.mean(np.asarray(pcd.points)[idx], axis=0)

3.1 代码行实现

import open3d as o3d import numpy as np # 读取点云文件 pcd = o3d.io.read_point_cloud(r"H:\HTempWK\temp\open3d\pointdata\feiji.pcd") # 定义均值滤波半径 radius = 0.05 # 构建kdtree进行邻域搜索 kdtree = o3d.geometry.KDTreeFlann(pcd) np_points = np.array(pcd.points) # 遍历点云 for i in range(len(pcd.points)): # 获取当前点的坐标 point = pcd.points[i] # 使用kdtree搜索当前点的邻域 [k, idx, _] = kdtree.search_radius_vector_3d(point, radius) # 如果邻域内没有点,则跳过 if k < 1: continue # 计算邻域内所有点的坐标平均值 mean = np.mean(np.asarray(pcd.points)[idx], axis=0) # 更新当前点的坐标 np_points[i] = mean # 创建点云对象,存放滤波结果 pcd_mean = o3d.geometry.PointCloud() pcd_mean.points = o3d.utility.Vector3dVector(np_points) # 打印点云信息 print('原始点云:',pcd) print('滤波点云:',pcd_mean) # 可视化滤波结果 pcd.paint_uniform_color([1,0,0]) pcd_mean.paint_uniform_color([0,1,0]) o3d.visualization.draw_geometries([pcd,pcd_mean], width=1200, height=800, window_name = '均值滤波-原始点云(红),滤波点云(绿)')

3.2 将均值滤波的实现封装到函数pointCloud_mean_filter()

import open3d as o3d import numpy as np """ @describe: 点云均值滤波 @param[I]: pointCloud, 待滤波点云 @param[I]: radius, 滤波窗口半径 @return: pointCloud_mean: 均值滤波结果点云 """ def pointCloud_mean_filter(pointCloud,radius): # 构建kdtree进行邻域搜索 kdtree = o3d.geometry.KDTreeFlann(pointCloud) np_points = np.array(pointCloud.points) # 遍历点云 for i in range(len(pointCloud.points)): # 获取当前点的坐标 point = pointCloud.points[i] # 使用kdtree搜索当前点的邻域 [k, idx, _] = kdtree.search_radius_vector_3d(point, radius) # 如果邻域内没有点,则跳过 if k < 1: continue # 计算邻域内所有点的坐标平均值 mean = np.mean(np.asarray(pcd.points)[idx], axis=0) # 更新当前点的坐标 np_points[i] = mean # 创建点云对象,存放滤波结果 pointCloud_mean= o3d.geometry.PointCloud() pointCloud_mean.points = o3d.utility.Vector3dVector(np_points) # 返回滤波结果点云 return pointCloud_mean if __name__ == "__main__": # 读取点云文件 pcd = o3d.io.read_point_cloud("data\desk.pcd") # 定义均值滤波窗口半径 radius = 0.05 # 创建点云对象,存放滤波结果 pcd_mean = o3d.geometry.PointCloud() # 执行均值滤波 pcd_mean = pointCloud_mean_filter(pcd,radius) # 打印点云信息 print('原始点云:',pcd) print('滤波点云:',pcd_mean) # 可视化滤波结果 pcd.paint_uniform_color([1,0,0]) pcd_mean.paint_uniform_color([0,1,0]) o3d.visualization.draw_geometries([pcd,pcd_mean], width=1200, height=800, window_name = '均值滤波-原始点云(红),滤波点云(绿)')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/8 11:00:28

第十一课Open3D点云数据处理:中值滤波

1 中值滤波原理 2 与均值滤波对比 3 中值滤波代码实现 3.1 代码行实现 3.2 将中值滤波的实现封装到函数 pointCloud_median_filter() 中 1 中值滤波原理 点云中值滤波是将空间中每个点的值替换为其邻域点值的中位数。具体来说&#xff0c;对于给定点云中的每个点&#xff…

作者头像 李华
网站建设 2026/3/4 21:08:32

【课程设计/毕业设计】基于python的人工智能 人脸识别系统设计与实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/12 20:24:33

风控不是算账,是“盯人”——聊聊 CEP 在风控与监控里的那些真本事

风控不是算账&#xff0c;是“盯人”——聊聊 CEP 在风控与监控里的那些真本事 大家好&#xff0c;我是 Echo_Wish。 这些年做大数据、做风控、做监控系统&#xff0c;越做越有一个强烈的感受&#xff1a;很多系统不是“算得不够准”&#xff0c;而是“看得不够快、不够懂事”。…

作者头像 李华
网站建设 2026/3/14 12:47:23

Agentic AI合规经验:提示工程架构师如何打造个人品牌?

Agentic AI合规时代,提示工程架构师如何用“技术+信任”打造个人品牌? 摘要/引言:当AI从“工具”变成“智能体”,提示工程师的品牌焦虑该怎么解? 凌晨3点,小张盯着电脑屏幕上的Agentic AI合规审计报告,揉了揉发涩的眼睛。作为某互联网公司的提示工程架构师,他上周刚上…

作者头像 李华
网站建设 2026/3/24 5:23:03

Availability(可用性)与高可用架构 内容的结构化知识点汇总

一、什么是 Availability&#xff08;可用性&#xff09; Availability 系统在一年中可正常提供服务的时间比例 常见两种表达方式&#xff1a;百分比&#xff08;99.9%&#xff09;N 个 9&#xff08;three nines&#xff09;可用性年宕机时间说法99%~3.65 天two nines99.9%~8…

作者头像 李华
网站建设 2026/3/23 2:34:59

Geek Uninstaller介绍(轻量高效的软件卸载专家)注册表清理注册表、卸载软件、应用卸载应用、文件卸载文件

https://geekuninstaller.com/download 文章目录Geek Uninstaller&#xff1a;轻量高效的软件卸载专家什么是Geek Uninstaller&#xff1f;核心功能与特点1. 彻底卸载2. 强制删除功能3. 注册表清理4. 绿色便携5. 轻量高效6. 简洁直观的界面使用方法免费版vs专业版与其他卸载软件…

作者头像 李华