输入:点云数据,栅格图像分辨率,图像分块的尺寸
输出:按照固定尺寸分块的图像集合
实现细节:
(1)采用open3d库读取点云,计算点云的包围盒。
(2)根据包围盒和图像分辨率计算图像的行列数。
(3)定义图像数组
(4)遍历点云中的每一个点,判断点所在的像素行列号,将数组中对应行列号的像素赋值。
(5)根据图像分块尺寸,计算分块的行列数目
(6)对每一个分块图像中的像素赋值,输出分块图像
import open3d as o3d
import numpy as np
import cv2
#读取点云,转换为栅格图像
#将栅格图像分块
resolution = 0.2
save_path = r"data/dsm.png"
print("->正在加载点云... ")
m_pc = o3d.io.read_point_cloud("WHU.ply")
print(m_pc)
print('体素化')
points = np.asarray(m_pc.points) # 将点云数据转化为 numpy 数组
print("数组形状:", points.shape)