前言
- 我们先简单了解些轴对齐包围框(AABB)方法
- 定义:轴对齐包围框是沿着坐标轴方向的长方体,包围点云的所有点。
- 优点:计算简单,只需要找到点云的最小和最大坐标值,然后构建长方体。
- 缺点:对于倾斜或旋转的物体,AABB往往不能紧密包围,容易出现较多的空白区域。
后面我将从算法原理中讲解,使用np实现AABB方法。后面我在实际中使用豆荚为例子,使用open3d库来使用AABB方法,因为open3d内置封装好AABB方法可以直接使用。
算法原理实现
- 给定一组3D点(通常是一个物体的顶点集)。
- 计算这些点在 X、Y、Z 方向上的最小值和最大值。
- 使用这些最小值和最大值构建 AABB。
代码实现
import numpy as np
# 定义3D点集合,假设这是一个物体的顶点坐标
points = np.array([
[1.0, 2.0, 3.0],
[2.0, 3.0, 5.0],
[-1.0, -2.0, 0.5],
[3.0, 5.0, 7.0],
[0.0, 1.0, -1.0]
])
# 计算AABB
def compute_AABB(points):
"""
计算给定3D点集的轴对齐包围盒(AABB)
参数:
points: 3D点的数组,形状为 (n, 3),每行代表一个3D点
返回:
min_point: AABB的最小坐标点(X_min, Y_min, Z_min)
max_point: AABB的最大坐标点(X_max, Y_max, Z_max)
"""
min_point = np.min(points, axis=0) # 计算每个维度的最小值
max_point = np.max(points, axis=0) # 计算每个维度的最大值
return min_point, max_point
# 调用函数计算AABB
min_point, max_point = compute_AABB(points)
# 输出结果
print("AABB最小点: ", min_point)
print("AABB最大点: ", max_point)
运行结果
AABB最小点: [-1. -2. -1. ]
AABB最大点: [3. 5. 7.]
利用open3D实现
导入点云
file_path = './data/5.txt' #这里使用的是xyzrgb格式的点云数据
point_cloud_data = np.loadtxt(file_path)
points = point_cloud_data[:, :3]
colors = point_cloud_data[:, 3:] / 255.0
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
pcd.colors = o3d.utility.Vector3dVector(colors)
计算 AABB
aabb = pcd.get_axis_aligned_bounding_box()
可视化 AABB
- 计算出的 AABB 会以一个红色的长方体显示在原始点云的周围,包裹住所有点。
- 控制台会输出 AABB 的最小点和最大点坐标。
aabb.color = (1, 0, 0) # 将AABB设置为红色
o3d.visualization.draw_geometries([pcd, aabb])
整体代码
import open3d as o3d
import numpy as np
# 创建一个简单的点云
points = np.array([
[1.0, 2.0, 3.0],
[2.0, 3.0, 5.0],
[-1.0, -2.0, 0.5],
[3.0, 5.0, 7.0],
[0.0, 1.0, -1.0]
])
# 将点云转换为 Open3D 的 PointCloud 对象
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
# 计算AABB(轴对齐包围盒)
aabb = pcd.get_axis_aligned_bounding_box()
# 打印AABB的信息
print("AABB最小点:", aabb.min_bound)
print("AABB最大点:", aabb.max_bound)
# 可视化点云和AABB
aabb.color = (1, 0, 0) # 将AABB设置为红色
o3d.visualization.draw_geometries([pcd, aabb])
标签:min,max,AABB,point,points,对齐,代码,pcd
From: https://blog.csdn.net/u012901740/article/details/142375692