cvReprojectImageTo3D -3d 从 2d 图像建模问题-

Posted

技术标签:

【中文标题】cvReprojectImageTo3D -3d 从 2d 图像建模问题-【英文标题】:cvReprojectImageTo3D -3d modelling from 2d images issue- 【发布时间】:2011-10-08 07:34:47 【问题描述】:

我非常需要你的帮助来解决这个问题。我正在尝试用 2d 图像对 3d 中的简单场景进行建模。我正在使用 2 张图片(左右 - 著名的筑波场景) http://www.cc.gatech.edu/classes/AY2003/cs7495_fall/ProblemSets/Data/tsukuba-right.bmp 我得到一个视差图。像这个。 http://www.robots.ox.ac.uk/~ojw/2op/tsukuba_score.png

在这里我有一些问题。我认为步骤应该是:

cvStereoRectify (得到Q) cvReprojectImageTo3D(视差图,3dimage,Q)

但我不知道在 stereoRectify 中作为输入传递什么我只有 2 张图像,我没有任何关于相机的信息。 (也许我可以使用 stereoRectifyUncalibrated 代替,如果可以,我该怎么做?)

请帮忙 谢谢

【问题讨论】:

答案没问题,还是您需要更多信息? 【参考方案1】:

从 opencv 文档中提取:

" 函数 stereoRectify 计算每个摄像机的旋转矩阵,这(实际上)使两个摄像机图像平面成为同一平面。因此,这使得所有核线平行,从而简化了密集立体对应问题。在输入时,函数采用由 stereoCalibrate() 计算的矩阵并在输出时给出 2 个旋转矩阵以及新坐标中的 2 个投影矩阵。"

答案:

这意味着 3 个选项:

或者您有两张图像,并且您知道从 XML 加载的相机型号(内部),例如 loadXMLFromFile() => stereoRectify() => reprojectImageTo3D()

或者你没有它们,但你可以校准你的相机 => stereoCalibrate() => stereoRectify() => reprojectImageTo3D()

或者您无法校准相机(这是您的情况,因为您没有筑波爵士的相机,然后:您需要使用 SURF、SIFT 在两个图像上找到配对关键点(您实际上可以使用任何blob检测器),然后计算这些关键点的描述符,然后根据它们的描述符匹配右图和左图的关键点,然后从中找到基本的mat。处理要困难得多,应该是这样的:检测关键点(SURF,SIFT)=> 提取描述符(SURF,SIFT)=> 比较和匹配描述符(BruteForce,基于 Flann 的方法)=> 从这些对中找到基本垫(findFundamentalMat())=> stereoRectifyUncalibrated () => reprojectImageTo3D()

希望对你有帮助,如果没有,请告诉我

朱利安,

【讨论】:

以上是关于cvReprojectImageTo3D -3d 从 2d 图像建模问题-的主要内容,如果未能解决你的问题,请参考以下文章