在给定内在、外在和 Y=0 约束的情况下估计 2D 像素的深度
Estimate depth of a 2D pixel given intrinsic, extrinsic, and a constraint of Y=0
我在距地面一定高度 (h) 处有一个单视摄像头。通过校准,我获得了内在参数 K、旋转矩阵和平移矢量 [R|t],并且因为我可以完全访问相机和环境,所以我可以测量任何我想要的东西。
我的目标是估计相机上像素 [u,v] 的深度,因为我知道像素在地板上(因此它相对于相机位于 y=-h 处)。
鉴于此限制,我执行了以下操作(但没有成功):
- 从 [u, v] 和相机参数 + 焦距创建一个新的 3D 点 P1:[u - cx, v - cy, f]
- 将 P 乘以我的相机矩阵 K 的逆矩阵并将结果称为 P2
- 将 P2 乘以 [R|t] 矩阵的逆矩阵,并将结果称为 P3
- P3 是一个 4x1 向量,因此我们将其归一化并将其缩小为 3x1 [X1, Y1, Z1]。这个点应该是我的[u, v]点
的世界坐标投影
- 当Y=-h时,按如下方式求解X和Z:
- x = x1 * (-h / y1)
- y = z1 * (-h / y1)
不幸的是,它看起来不对!我现在已经解决这个问题 2 周了,所以从社区获得一些帮助真的很棒。我确定我错过了一些显而易见的事情。
再次感谢
齐次图像坐标为P1 = [u,v,1]
,或[f*u,f*v,f]
。
与相机矩阵的逆相乘得到一条射线,3D 点沿该射线定位。
P2 ~= K⁻¹ * P1 (~= is equality up to a scale factor)
假设相机位于 C(相机坐标系中的 (0,0,0,1)),向量 P2 的形式为 [x,y,z,0]
。 (末尾的零使其平移不变!)
那么你要找的3D点位于C + k*P2
,你必须求解变量k。
P3 = Rt⁻¹ * (C + k*P2)
P4 = C2 + k * P3
C2 是世界坐标中的相机位置。
P3 是世界坐标中的向量。 P4 是你在 Y=-h
的观点
最后,插入约束 Y=-h
并使用 y
分量计算 k
:
k = (-h - C2_y) / P3_y
我在距地面一定高度 (h) 处有一个单视摄像头。通过校准,我获得了内在参数 K、旋转矩阵和平移矢量 [R|t],并且因为我可以完全访问相机和环境,所以我可以测量任何我想要的东西。 我的目标是估计相机上像素 [u,v] 的深度,因为我知道像素在地板上(因此它相对于相机位于 y=-h 处)。 鉴于此限制,我执行了以下操作(但没有成功):
- 从 [u, v] 和相机参数 + 焦距创建一个新的 3D 点 P1:[u - cx, v - cy, f]
- 将 P 乘以我的相机矩阵 K 的逆矩阵并将结果称为 P2
- 将 P2 乘以 [R|t] 矩阵的逆矩阵,并将结果称为 P3
- P3 是一个 4x1 向量,因此我们将其归一化并将其缩小为 3x1 [X1, Y1, Z1]。这个点应该是我的[u, v]点 的世界坐标投影
- 当Y=-h时,按如下方式求解X和Z:
- x = x1 * (-h / y1)
- y = z1 * (-h / y1)
不幸的是,它看起来不对!我现在已经解决这个问题 2 周了,所以从社区获得一些帮助真的很棒。我确定我错过了一些显而易见的事情。
再次感谢
齐次图像坐标为P1 = [u,v,1]
,或[f*u,f*v,f]
。
与相机矩阵的逆相乘得到一条射线,3D 点沿该射线定位。
P2 ~= K⁻¹ * P1 (~= is equality up to a scale factor)
假设相机位于 C(相机坐标系中的 (0,0,0,1)),向量 P2 的形式为 [x,y,z,0]
。 (末尾的零使其平移不变!)
那么你要找的3D点位于C + k*P2
,你必须求解变量k。
P3 = Rt⁻¹ * (C + k*P2)
P4 = C2 + k * P3
C2 是世界坐标中的相机位置。
P3 是世界坐标中的向量。 P4 是你在 Y=-h
最后,插入约束 Y=-h
并使用 y
分量计算 k
:
k = (-h - C2_y) / P3_y