2D/3D bounding box计算方式详解

2D bounding box

最大包围矩形计算方式:

代码:

python 复制代码
import numpy as np

points = np.array([
    [2, 3],
    [5, 7],
    [4, 1],
    [6, 4]
])

x_min = np.min(points[:, 0])
y_min = np.min(points[:, 1])
x_max = np.max(points[:, 0])
y_max = np.max(points[:, 1])

bbox = (x_min, y_min, x_max, y_max)
print("Bounding box:", bbox)

两个bounding box的交集计算方式:

1,计算x坐标重叠的范围:左区间x_int_min是bbox的x_min的最大值。右区间x_int_max是bbox的x_max的最小值

对y坐标同理

只有当x_int_min<x_int_max且y_int_min<y_int_max时才会有交集的bbox

一个不存在交集bbox的实例如下:

代码实现:

python 复制代码
bbox1 = (2, 1, 6, 7)
bbox2 = (4, 3, 8, 6)

x_int_min = max(bbox1[0], bbox2[0])
y_int_min = max(bbox1[1], bbox2[1])
x_int_max = min(bbox1[2], bbox2[2])
y_int_max = min(bbox1[3], bbox2[3])

if x_int_min < x_int_max and y_int_min < y_int_max:
    intersection_bbox = (x_int_min, y_int_min, x_int_max, y_int_max)
    print("Intersection bbox:", intersection_bbox)
else:
    print("No intersection")

3D bounding box

2D的bbox计算方法可以轻易扩展到3D,只需对三个平面做投影即可变为2d的问题。

代码实现:

python 复制代码
bbox1 = (1, 2, 3, 5, 6, 7)
bbox2 = (4, 3, 5, 8, 7, 9)

x_int_min = max(bbox1[0], bbox2[0])
y_int_min = max(bbox1[1], bbox2[1])
z_int_min = max(bbox1[2], bbox2[2])

x_int_max = min(bbox1[3], bbox2[3])
y_int_max = min(bbox1[4], bbox2[4])
z_int_max = min(bbox1[5], bbox2[5])

if x_int_min < x_int_max and y_int_min < y_int_max and z_int_min < z_int_max:
    intersection_bbox = (x_int_min, y_int_min, z_int_min,
                         x_int_max, y_int_max, z_int_max)
    print("Intersection 3D bbox:", intersection_bbox)
else:
    print("No intersection")
相关推荐
AI日报派送佬5 小时前
Ultralytics YOLO 模型训练技巧与最佳实践
人工智能·python·深度学习·yolo·机器学习·计算机视觉
LaughingZhu7 小时前
Product Hunt 热榜 2026-10-10:Busabase、Zernio、Playground by Google Labs
人工智能·深度学习·神经网络·搜索引擎·百度
在所不辞兄8 小时前
为什么PINN非常适合求解有限元模型
人工智能·深度学习·神经网络·算法·机器学习
数智工坊8 小时前
视觉SLAM第2讲|初识SLAM:经典框架、传感器选型与工程环境全梳理
人工智能·深度学习·数码相机·机器人
Joshua-a12 小时前
工程数学-理解卷积的含义_线性时不变系统的冲激响应与卷积
人工智能·深度学习
song50113 小时前
React Native for OpenHarmony 实战:三方库 react-native-css-transformer 的鸿蒙化适配指南
css·人工智能·深度学习·react native·transformer
数智工坊21 小时前
视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
人工智能·深度学习·矩阵·机器人
GPU实战笔记21 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
论文复现现场1 天前
8卡4090能跑70B吗?Llama-2显存预算、QLoRA与通信瓶颈
人工智能·深度学习·分布式训练·llama·显存·qlora·算家云
用户15970637601 天前
一文读懂淘宝店铺在售商品接口:整店商品批量拉取用于竞品研究
深度学习