首页 > 解决方案 > 将任意 3D 点投影到图像平面中的一个点给出任意结果

问题描述

我在两个相机之间进行了立体校准,并在 opencv 上使用 stereoCalibrate 计算了内部和外部参数。

之后,我使用 stereoRectify 函数计算了两个相机的投影矩阵。

为了验证结果,我选择任意 X 和 Y 值来表示齐次坐标,例如 [[X]、[Y]、[1]、[1]],将 Z 和 W 固定为 1。

让我们假设

P = [[5], [10], [1], [1]]
Projection Matrix for Camera 1 P1 = Matrix [3x4]
Projection Matrix for Camera 2 P2 = Matrix [3x4]

乘法过程的结果应该是图像平面中的 2D 点。

p1 = np.matmult(P1, X)
p2 = np.matmult(P2, X)

有时 p1 和 p2 值都位于图像平面中并且它们都反映了相同的位置,有时两个值都位于图像平面内但反映了不同的位置!

我的问题是如何选择 3D 点并确保它提供正确的 2D 点。我正在做一个项目,用户在相机 1 中选择任意 2D 点,我的代码应该识别相机 2 中的正确位置。

问候,

标签: camera-calibrationcalibration

解决方案


推荐阅读