#AEAI03003. 检测框回映射与裁剪

检测框回映射与裁剪

题目描述

检测模型通常在缩放后的输入图上输出中心框,而执行模块需要原图坐标。具身智能部希望把模型坐标系中的候选框还原到原始相机画面,并裁剪到画面边界内。

给定原图尺寸 W0 x H0、模型输入尺寸 Wm x Hm,以及若干中心格式检测框 (cx, cy, w, h)。请按宽高比例回映射为原图上的左上右下框,并输出裁剪后的结果。非法或裁剪后为空的框输出 -1

输入格式

  • 第一行输入五个数 W0 H0 Wm Hm N
  • 随后 N 行,每行输入一个模型坐标系中的中心框 cx cy w h

输出格式

  • 对每个候选框输出一行。
  • 若合法,输出 x1 y1 x2 y2,保留 6 位小数。
  • w<=0h<=0 或裁剪后为空,输出 -1

判定规则

使用标准输出比较。

  • 横向缩放系数为 W0/Wm,纵向缩放系数为 H0/Hm
  • 中心框先转换为 (cx-w/2, cy-h/2, cx+w/2, cy+h/2),再分别乘缩放系数。
  • 裁剪范围为 [0,W0] x [0,H0],裁剪后若 x1>=x2y1>=y2,视为空框。

样例

输入样例 1

100 50 200 100 3
100 50 40 20
10 10 50 50
190 90 40 40

输出样例 1

40.000000 20.000000 60.000000 30.000000
0.000000 0.000000 17.500000 17.500000
85.000000 35.000000 100.000000 50.000000

样例解释 1

三个框先按 0.5 的宽高比例回到原图坐标,第二、三个框越界部分被裁剪到原图范围内。

输入样例 2

80 80 160 160 2
80 80 0 10
200 200 10 10

输出样例 2

-1
-1

样例解释 2

第一个框宽度为 0,第二个框完全落在原图外,均无有效输出框。