import laspy
import CSF
import numpy as np
inFile = laspy.file.File(r'/home/jiang/桌面/J/jiang/B/132695079545146682-point-cloud - Cloud.las', mode='r') # read a las file
points = inFile.points
xyz = np.vstack((inFile.x, inFile.y, inFile.z)).transpose() # extract x, y, z and put into a list
# ============布料模拟滤波============
csf = CSF.CSF()
# 参数设置
csf.params.bSloopSmooth = True
csf.params.cloth_resolution = 1 # 布料网格分辨率
csf.params.rigidness = 3 # 布料刚性参数
csf.params.time_step = 0.65
csf.params.class_threshold = 0.1 # 点云与布料模拟点的距离阈值
csf.params.interations = 500 # 最大迭代次数
# more details about parameter: http://ramm.bnu.edu.cn/projects/CSF/download/
csf.setPointCloud(xyz)
ground = CSF.VecInt() # 地面点索引列表
non_ground = CSF.VecInt() # 非地面点索引列表
csf.do_filtering(ground, non_ground) # 执行滤波
# ============保存为las文件==========
outFile = laspy.file.File(r"B-ground.las",
mode='w', header=inFile.header)
outFile.points = points[ground]
outFile.close()
outfile = laspy.file.File(r"B-non_ground.las",
mode='w', header=inFile.header)
outfile.points = points[non_ground]
outfile.close()
使用CSF算法做点云地面滤波处理,分离地面与非地面
最新推荐文章于 2025-11-21 15:10:19 发布
本文介绍了如何使用CSF库对LAS点云数据进行布料模拟滤波,通过设置参数并执行滤波操作,将点云分为地面点和非地面点,分别保存为两个新的LAS文件。
1247

被折叠的 条评论
为什么被折叠?



