#AEAI03007. 深度关键点三维恢复
深度关键点三维恢复
题目描述
机器人要抓取一个点,不能只知道它在图像上的像素位置,还要知道它在相机坐标系中的三维坐标。具身智能部将 RGB-D 相机的反投影过程整理成这道题。
给定深度图、相机内参 fx fy cx cy 和若干像素查询点 (u, v)。若查询点有效,请用针孔相机模型恢复三维坐标;若像素越界或深度为 0,输出 INVALID。
输入格式
- 第一行输入两个整数
H W。 - 随后输入
H*W个整数,表示深度图,单位为毫米;深度为0表示无效。 - 接着输入四个浮点数
fx fy cx cy。 - 然后输入整数
Q。 - 最后输入
Q个查询点,每个为两个整数u v。
输出格式
- 对每个查询点输出一行。
- 若有效,输出
X Y Z,单位为米,保留 6 位小数。 - 若无效,输出
INVALID。
判定规则
使用标准输出比较。
- 像素坐标为
0-based,u对应列,v对应行。 - 深度
Z = depth[v][u] / 1000.0。 - 反投影公式为
X=(u-cx)*Z/fx,Y=(v-cy)*Z/fy。
样例
输入样例 1
2 3
1000 0 2000
1500 1000 500
500 500 1 1
3
0 0
1 0
3 0
输出样例 1
-0.002000 -0.002000 1.000000
INVALID
INVALID
样例解释 1
第一个点深度为 1000 毫米,可恢复坐标;第二个点深度为 0,第三个点越界,均无效。
输入样例 2
1 1
1200
600 600 0 0
1
0 0
输出样例 2
0.000000 0.000000 1.200000
样例解释 2
唯一像素深度为 1.2 米,且像素点正好位于主点处,因此 X=Y=0。