#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<=0、h<=0或裁剪后为空,输出-1。
判定规则
使用标准输出比较。
- 横向缩放系数为
W0/Wm,纵向缩放系数为H0/Hm。 - 中心框先转换为
(cx-w/2, cy-h/2, cx+w/2, cy+h/2),再分别乘缩放系数。 - 裁剪范围为
[0,W0] x [0,H0],裁剪后若x1>=x2或y1>=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,第二个框完全落在原图外,均无有效输出框。