我正在做一个项目来检测物体的三维位置。我在房间的两个角落安装了两个摄像头,我得到了它们之间的基本矩阵。这些摄像机是内部校准的。我的照片是2592x1944
K= 1228 0 3267 0 1221 538 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
现在,我如何进行,以便在空间中给定一个三维点,我应该能够在图像上得到对应于房间中同一物体的点。如果我能够获得正确的投影矩阵(具有正确的刻度),我可以稍后使用它们作为对OpenCV的traingulatePoints函数的输入,以获得对象的位置。
很久以来我一直被困在这个问题上。所以请帮帮我。
谢谢。
发布于 2013-08-14 10:44:36
很抱歉,它没有在评论的大小。所以@user2167617回复你的评论。差不多吧。不过,有几个提示:奇异值应该是(s,s, 0),所以(1.3,1.05,0)是一个很好的猜测。关于R:从技术上讲,这是正确的,然而,忽略迹象。很可能你得到了一个旋转矩阵,它不满足约束决定条件(R)=1,而是-1。在这种情况下,你可能想把它乘以-1。通常,如果您遇到这种方法的问题,请尝试使用5点算法确定基本矩阵(在最新版本的OpenCV中实现,您必须自己构建它)。从这些资料中确实不可能获得比额表。然而,这一切都是为了扩大规模。例如,如果你定义相机之间的距离是1单位,那么所有的东西都会用这个单位来测量。
发布于 2013-08-12 05:57:17
从我收集到的信息来看,你已经通过一些校准的方法得到了基本矩阵?不管是哪种方法,使用基本矩阵(或校准装置本身),您都可以通过分解基本矩阵来获得位姿差异。一旦你有了它,你就可以使用匹配的特征点(使用特征提取器和描述符,比如冲浪、活动、.)识别一个图像中的哪些点与另一个图像中的另一个特征点属于同一对象点。有了这些信息,你就可以进行三角测量了。
发布于 2013-08-10 09:08:31
也许它会更简单地使用简历:ReprojectImageTo3D函数?它会给你3D坐标。
https://stackoverflow.com/questions/18156041
复制相似问题