基于Open3D的点云处理9-包围盒AABB、OBB

包围盒是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。
在这里插入图片描述

包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳;

  • 球体包围盒:至少使用三个点来确定外接圆(球);
  • AABB包围盒:取坐标最大值和最小值计算简单,但空间有冗余不能较好的表达物体的真实位姿;

get_axis_aligned_bounding_box

  • OBB包围盒:先进行PCA,取得投影方差最大的方向作为坐标轴方向计算较复杂,但空间不存在冗余,也最常用;

get_oriented_bounding_box

import open3d as o3d
import numpy as np
pcd = o3d.io.read_point_cloud("./data/bunny.ply")


#获取AABB包围盒
aabb = pcd.get_axis_aligned_bounding_box()
aabb.color = (1, 0, 0)
[center_x, center_y, center_z] = aabb.get_center()
vertices = aabb.get_box_points()
side=aabb.get_extent()


#获取OBB包围盒
obb = pcd.get_oriented_bounding_box()
# obb = pcd.get_minimal_oriented_bounding_box()
obb.color = (0, 0, 1)
[center_x, center_y, center_z] = obb.get_center()
vertices=obb.get_box_points()

o3d.visualization.draw_geometries([pcd, aabb, obb], window_name="bouding box")


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zfjBIT/article/details/131036323