You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在resize图像时保证标注bounding box坐标有效

调整图像统一尺寸时保留bounding box标注有效性的实现方案

完全可以实现,核心是不要只对图像做变换,要对标注坐标做和图像完全一致的空间映射,不要用无坐标同步的裸resize操作就行,工业界做检测数据集预处理常用的方案有三种,根据你的场景选:

  • 等比例缩放+边缘补边(最通用,优先选)
    这是目标检测任务预处理的标准操作,不会拉伸变形目标,对后续模型训练友好。
    操作步骤:
    1. 先计算缩放系数:拿目标统一尺寸的宽、高分别除以原图的宽、高,取两个值里更小的那个作为全局缩放比scale,用这个系数把原图等比例缩小/放大,保证缩放后的图不会超出目标尺寸范围
    2. 计算补边偏移:缩放后的图和目标尺寸差出来的空白区域,平均分配到宽、高方向的两侧(一般用灰色或者黑色填充),得到宽方向偏移pad_w、高方向偏移pad_h
    3. 坐标同步换算:原标注框是左上角(x1,y1)、右下角(x2,y2)格式的话,新坐标直接按 新x = 原x * scale + pad_w、新y = 原y * scale + pad_h 计算即可,四个点都套这个公式算完就是适配新图尺寸的有效标注。
  • 直接双向拉伸resize(不推荐,特殊场景用)
    如果你不介意图像被拉伸变形,可以直接分别算宽、高方向的独立缩放系数:scale_w = 目标宽/原图宽、scale_h = 目标高/原图高,x方向所有坐标乘scale_w,y方向所有坐标乘scale_h就能得到新坐标。这个方法会改变目标的原始宽高比,很容易拉低后续模型精度,没有特殊要求别用。
  • 中心裁剪后缩放(仅适合目标集中在画面中心的数据集)
    如果你的标注目标基本都在图像中心区域,不会贴边,可以先按照目标尺寸的宽高比,从原图中心裁出最大的同比例子图,再把子图resize到目标尺寸。换算坐标的时候先减掉裁剪区域的左上角偏移量,过滤掉完全落在裁剪区外的框,再乘上子图到目标尺寸的缩放系数就行。这个方法的问题是边缘目标容易被裁掉,用之前最好先抽样看一眼数据集的目标分布。

批量处理的时候写个简单的Python脚本就行,用Pillow或者OpenCV做图像变换,几千张图几分钟就能跑完。处理完一定要随机抽几十张,把换算后的bbox画到新图上肉眼校验,避免把x/y轴搞反、偏移量算错这类低级错误。

内容的提问来源于stack exchange,提问作者user13832375

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 13:03:30