将边界框(Bounding Box)的坐标和尺寸转换为归一化的空间特征

定义了一个名为 get_spatial_feat 的函数,其功能是将边界框(Bounding Box)的坐标和尺寸转换为归一化的空间特征,通常用于计算机视觉任务(如目标检测或关系识别):


函数参数

bbox: 输入边界框数组,形状为 (N, 4),其中 N 是边界框数量,每个边界框包含 [x0, y0, x1, y1](左上角和右下角坐标)。
img_h: 图像高度。
img_w: 图像宽度。


功能步骤

  1. 初始化特征数组

    spatial_feat = np.zeros((bbox.shape[0], 5), dtype=np.float)
    

    • 创建一个形状为 (N, 5) 的零数组,用于存储每个边界框的5个归一化特征。

  2. 归一化坐标

    spatial_feat[:, 0] = bbox[:, 0] / float(img_w)  # 左上角x坐标归一化
    spatial_feat[:, 1] = bbox[:, 1] / float(img_h)  # 左上角y坐标归一化
    spatial_feat[:, 2] = bbox[:, 2] / float(img_w)  # 右下角x坐标归一化
    spatial_feat[:, 3] = bbox[:, 3] / float(img_h)  # 右下角y坐标归一化
    

    • 将边界框的绝对坐标转换为相对于图像尺寸的比例(范围 [0, 1]),使特征与图像尺寸无关。

  3. 计算归一化面积

    spatial_feat[:, 4] = (bbox[:, 2] - bbox[:, 0]) * (bbox[:, 3] - bbox[:, 1]) / float(img_h * img_w)
    

    • 计算边界框的面积(宽度 x1-x0 × 高度 y1-y0),并除以图像总面积,得到面积占比(范围 [0, 1])。


输出

• 返回一个形状为 (N, 5) 的数组,每行对应一个边界框的5个归一化特征:
[norm_x0, norm_y0, norm_x1, norm_y1, norm_area]


应用场景

目标关系建模:通过归一化坐标和面积,模型可以更关注物体之间的相对位置和大小。
多尺度兼容性:无论输入图像尺寸如何,特征始终在 [0, 1] 范围内,适合神经网络处理。
特征融合:常与其他特征(如视觉特征)拼接,提升模型性能。

例如,如果边界框 [50, 60, 200, 300] 位于 500x600 的图像中,归一化后为:
[0.1, 0.1, 0.4, 0.5, (150*240)/(500*600)=0.12]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值