open3dml的机器学习 03
第二章 激光点云Las数据处理与加载
前言
.las 文件中的点云数据通常包含了每个点的坐标以及可能的颜色信息。为了正确显示 .las 文件中的点云,我们需要读取和应用这些颜色信息,并调整点的大小以适合显示效果。
一、读取 .las 文件并应用颜色信息:
使用 Open3D-ML 可以方便地加载和预处理各种格式的 3D 数据,如点云数据、网格数据等。它提供了数据集类(例如 KITTI、SemanticKITTI 等)来帮助加载和处理这些数据集。
import laspy
import open3d as o3d
import numpy as np
def read_las_with_color(file_path):
# 使用 laspy 读取 .las 文件
las = laspy.read(file_path)
# 提取 x, y, z 坐标
points = np.vstack((las.x, las.y, las.z)).transpose()
# 提取 RGB 颜色信息
colors = np.vstack((las.red, las.green, las.blue)).transpose() / 255.0 # 将颜色值归一化到 [0, 1]
# 创建 Open3D 点云对象,并设置点云颜色
point_cloud = o3d.geometry.PointCloud()
point_cloud.points = o3d.utility.Vector3dVector(points)
point_cloud.colors = o3d.utility.Vector3dVector(colors)
return point_cloud
def visualize_point_cloud(pcd):
# 设置渲染窗口
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(pcd)
# 设置渲染选项
opt = vis.get_render_option()
opt.point_size = 1.0 # 设置点的大小
opt.show_coordinate_frame = True # 显示坐标轴
opt.background_color = np.asarray([0.0, 0.0, 0.0]) # 设置背景颜色为黑色
# 运行渲染窗口
vis.run()
vis.destroy_window()
二、采样处理:
# 下采样一半的点进行渲染
point_cloud_downsampled = point_cloud.voxel_down_sample(voxel_size=0.05) # 设置合适的下采样尺寸