image - 如何在 OpenCV 中计算一个点的 3D 坐标

标签 image image-processing opencv computer-vision

我有一个经过校准的立体相机系统和同一物体在两个相机 View 中的像素位置。有什么简单的方法可以使用 OpenCv(和内部/外部参数)计算对象的 3D 世界坐标,或者我是否必须处理为两个相机生成的 3D 线以及它们之间的转换? CvReprojectImageTo3D 有帮助吗? 非常感谢

最佳答案

您可以对这些点进行三角测量。对于每个相机,您知道 x = IP * EP * X,其中 x = 2D 齐次屏幕坐标,IP = 固有相机矩阵,EP = 外部相机矩阵,以及 X 3D 同质世界坐标。该公式将为每个相机产生 2 个线性方程,从而导致线性问题 A*X = B。对于每个相机,附加到 A:

Ps = IP * EP
A(row 1) = x.x * Ps(row 3) - Ps(row 1)
A(row 2) = x.y * Ps(row 3) - Ps(row 2)
B(row 1 & 2) = 0

有 4 个未知数。为避免将 0 作为解决方案,请将 [0 0 0 1] 附加到 A 并将 [ 1 ] 附加到 B。

可以用 Jacobi method 求解,或类似的东西。

我没有在 OpenCV 中找到/知道一种方法,但是如果您知道什么是校准矩阵,那么实现上述方法应该是可行的。

关于image - 如何在 OpenCV 中计算一个点的 3D 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562586/

相关文章:

javascript - 将图像存储在 Javascript 对象中

python - 将二进制图像划分为 4x4 Python 并计算像素

android - 将图像动态转换为二进制,反之亦然

mysql - 使用 Base64 和 Node.js 显示图像

image-processing - 如何转换图像背景图案?

opencv - 我可以重复使用从 2 个不同相机拍摄的同一场景的 2 个不同图像计算出的单应矩阵吗?

image-processing - 立体相机的基线是什么?

python - 测试 Django 站点显示正确的图形 - 图像相似性?

image - 检测后人脸比对

OpenCV Homography,Transform a point,这段代码是干什么的?