资源简介
python_三维激光点云的地面分割,以及非地面点云数据的聚类,并且进行可视化。以某条道路区域的点云数据为样本进行测试,文件中包含有测试数据,以及代码运行聚类的效果图。
代码片段和文件信息
# 文件功能:
# 1. 从数据集中加载点云数据
# 2. 从点云数据中滤除地面点云
# 3. 从剩余的点云中提取聚类
import numpy as np
import os
import struct
from sklearn import cluster datasets mixture
from itertools import cycle islice
import matplotlib.pyplot as plt
from RANSAC import *
import open3d as o3d
import open3d
from pyntcloud import PyntCloud
from pandas import Dataframe
import sklearn.cluster
from DBSCAN import *
from mpl_toolkits.mplot3d import Axes3D
# 功能:从kitti的.bin格式点云文件中读取点云
# 输入:
# path: 文件路径
# 输出:
# 点云数组
def read_velodyne_bin(path):
‘‘‘
:param path:
:return: homography matrix of the point cloud N*3
‘‘‘
pc_list = []
with open(path ‘rb‘) as f:
content = f.read()
pc_iter = struct.iter_unpack(‘ffff‘ content)
for idx point in enumerate(pc_iter):
pc_list.append([point[0] point[1] point[2]])
return np.asarray(pc_list dtype=np.float32)
# 功能:从点云文件中滤除地面点
# 输入:
# data: 一帧完整点云
# 输出:
# segmengted_cloud: 删除地面点之后的点云
def ground_segmentation(data):
# 作业1
# 屏蔽开始
#调用实现的RANSAC方法,详见另一个RANSAC.py
planeids = PlaneRANSAC(data0.35)
segmengted_cloud = data[planeids]#由上一步得到的地面点的索引进行取值
# 屏蔽结束
print(‘origin data points num:‘ data.shape[0])
print(‘segmented data points num:‘ segmengted_cloud.shape[0])
return segmengted_cloudplaneids
# 功能:从点云中提取聚类
# 输入:
# data: 点云(滤除地面后的点云)
# 输出:
# clusters_index: 一维数组,存储的是点云中每个点所属的聚类编号(参考上一章内容容易理解)
def clustering(data):
# 作业2
# 屏蔽开始
#使用sklearn中的聚类
Css = sklearn.cluster.DBSCAN(eps=0.50 min_samples=4).fit(data)
clusters_index = np.array(Css.labels_)
#使用自己实现的聚类
# clusters_index = DBSCAN(data0.5100)
# 屏蔽结束
return clusters_index
# 功能:显示聚类点云,每个聚类一种颜色
# 输入:
# data:点云数据(滤除地面后的点云)
# cluster_index:一维数组,存储的是点云中每个点所属的聚类编号(与上同)
def plot_clusters(data cluster_index):
ax = plt.figure().add_subplot(111 projection = ‘3d‘)
colors = np.array(list(islice(cycle([‘#377eb8‘ ‘#ff7f00‘ ‘#4daf4a‘
‘#f781bf‘ ‘#a65628‘ ‘#984ea3‘
‘#999999‘ ‘#e41a1c‘ ‘#dede00‘])
int(max(cluster_index) + 1))))
colors = np.append(colors [“#000000“])
ax.scatter(data[: 0] data[: 1] data[: 2] s=2 color=colors[cluster_index])
plt.show()
def main():
root_dir = ‘./data/‘ # 数据集路径
cat = os.listdir(root_dir)
cat = cat[1:]
# iteration_num = len(cat)
iteration_num = 1
for i in range(iteration_num):
filename = os.path.join(root_dir cat[i])
print(‘clustering pointcloud file:‘ filename)
origin_points = read_velodyne_bin(filename)
segmented_pointsplaneids = ground_segmentation(data=origin_points)
planepcd = o3d.geometry.PointCloud()
planepcd.points = o3d.utility.Vector3dVector(segmented_points)
c = [0 0 255]
cs = np.tile(c (segmented_points.shape[0] 1))
planepcd.color
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 174 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\inspectionProfiles\profiles_settings.xm
文件 294 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\misc.xm
文件 429 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\modules.xm
文件 291 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\python_点云的地面分割,以及非点云数据的聚类,并且进行可视化.iml
文件 13701 2020-07-18 17:09 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\workspace.xm
文件 5259 2020-06-27 13:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\clustering.py
....... 2010160 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000000.bin
....... 1953744 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000001.bin
....... 1849664 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000002.bin
....... 1948720 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000003.bin
....... 1993024 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000004.bin
....... 1756368 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data\000005.bin
....... 2350 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\DBSCAN.py
....... 2354 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\RANSAC.py
....... 94 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\README.md
....... 2586 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\__pycache__\DBSCAN.cpython-36.pyc
文件 2639 2020-06-16 13:54 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\__pycache__\DBSCAN.cpython-37.pyc
....... 1959 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\__pycache__\RANSAC.cpython-36.pyc
文件 2032 2020-06-16 13:54 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\__pycache__\RANSAC.cpython-37.pyc
....... 385014 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\可视化结果.pptx
目录 0 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea\inspectionProfiles
目录 0 2020-05-10 17:08 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\data
目录 0 2020-06-16 13:54 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master\__pycache__
目录 0 2020-07-18 17:09 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\.idea
目录 0 2020-07-18 16:37 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化\pointcloud-master
目录 0 2020-06-15 13:30 python_点云的地面分割,以及非点云数据的聚类,并且进行可视化
----------- --------- ---------- ----- ----
11930856 26
相关资源
- OpenCV官方教程中文版(For Python)pdf
- deep learning with python Jason Brownlee 2019
- 笨办法学Python3英文版+笨办法学pytho
- python网上商城.rar
- Python编程基础
- Python-基于50W携程出行攻略的顺承事件
- python安装包
- 《零基础入门学习Python》课堂笔记
- Machine Learning with Python 无水印原版pd
- Python网络数据采集(超清)
- 趣学Python 教孩子学编程_PDF电子书 高
- Learning.OpenCV.3.Computer.Vision.with.Python.
- 计算机二级学习资料python
- 利用Python生成验证码图片相关文件
- python实现淘宝爬虫
- 图像处理-图片找不同Find the differenc
- 第二版中文 高清带书签Flask Web开发:
- 结巴分词、词性标注以及停用词过滤
- 基于深度学习Superpoint 的Python图像全景
- Python数据分析-pandas玩转Excel - 资料.
- python反编译工具Easy Python Decompiler
- Python性能分析与优化.pdf
- Python小说器
- numpy-1.13.1-cp27-none-win32.whl
- 机器学习对应的相关python代码SVM、C
- 中文文本聚类
- python 后台管理系统
- 声纹识别资料
- Introduction to time series.pdf + Deep Time Se
- OpenCV-Python中文教程
评论
共有 条评论