Python点云处理——直通滤波算法

        最近接了个毫米波雷达点云处理的项目,点云数量惨不忍睹,而且要求很奇葩,必须自己写滤波算法,不能使用PCL、Open3D这些现成的库。没办法,从头搞起吧。

一、算法原理

        直通滤波的原理很简单,相当于信号处理里面的带通滤波,给定一个坐标的上下限,大于上限和小于下限的点云被滤掉,只保留落在上下限范围内的点云。

二、代码示例

        说明:passthrough函数定义了使用numpy进行直通滤波的过程,实际上就是指定索引条件,再索引数组。若指定的坐标不正确,报错并退出。然后使用numpy的random函数生成0—1区间内的随机点云进行验证。

import numpy as np
import matplotlib.pyplot as plt
def pass_through(points, limit_min, limit_max, filter_value_name):

	if (filter_value_name == "x")or(filter_value_name == "X"):
		target=0
	elif (filter_value_name == "y") or (filter_value_name == "Y"):
		target=1
	elif (filter_value_name == "z") or (filter_value_name == "Z"):
		target=2
	else:
		print("请输入正确的参数")
		exit()
	ind = np.where((points[:, target] >= limit_min) & (points[:, target] <= limit_max))[0]
	sampled_cloud =points[ind]
	return sampled_cloud
point=np.random.random((1000,5))
point=pass_through(point,0,0.2,"z")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter3D(point[:,0],point[:,1],point[:,2],c='b',marker=".")
plt.show()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周_必_成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值