0

我正在做一个项目来检测物体的 3D 位置。我在房间的两个角落设置了两个摄像头,我已经获得了它们之间的基本矩阵。这些相机经过内部校准。我的图像是 2592 X 1944

K = [1228 0 3267 0 1221 538 0 0 1]

F = [-1.098e-7 3.50715e-7 -0.000313 2.312e-7 2.72256e-7 4.629e-5 0.000234 -0.00129250 1]

现在,我该如何进行,以便给定空间中的 3D 点,我应该能够在图像上获得与房间中相同对象相对应的点。如果我能获得正确的投影矩阵(具有正确的比例),我可以稍后将它们用作 OpenCV 的 traingulatePoints 函数的输入来获取对象的位置。

很长一段时间以来,我一直坚持这一点。所以,请帮助我。

谢谢。

4

3 回答 3

2

据我所知,您通过某种校准手段获得了基本矩阵?无论哪种方式,使用基本矩阵(或校准装置本身),您都可以通过分解基本矩阵来获得位姿差异。一旦你有了它,你就可以使用匹配的特征点(使用特征提取器和描述符,如 SURF、BRISK 等)来识别一个图像中的哪些点与另一张图像中的另一个特征点属于同一对象点。有了这些信息,您应该能够进行三角测量。

于 2013-08-12T05:57:17.300 回答
0

使用cv::reprojectImageTo3D函数会更简单吗?它会给你3D坐标。

于 2013-08-10T09:08:31.323 回答
0

抱歉,它的评论量不大。所以@user2167617 回复您的评论。差不多。不过有几点建议:奇异值应该是 (s,s,0),所以 (1.3, 1.05, 0) 是一个很好的猜测。关于 R:从技术上讲,这是正确的,但是忽略迹象。很可能您得到的旋转矩阵不满足约束行列式(R)= 1,而是-1。在这种情况下,您可能希望将其与 -1 相乘。通常,如果您在使用这种方法时遇到问题,请尝试使用 5 点算法确定基本矩阵(在最新版本的 OpenCV 中实施,您必须自己构建它)。使用这些信息确实无法获得规模。但是,这一切都是按比例计算的。例如,如果您将摄像机之间的距离定义为 1 个单位,

于 2013-08-14T10:44:36.953 回答