cvReprojectImageTo3D -3d建模从2d图像发出 -

时间:2011-07-19 08:11:07

标签: opencv 3d stereo-3d disparity-mapping

我非常需要你对这个问题的帮助。我试图在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)

但我不知道在立体声录音中输入什么作为输入我只有2张图片,我没有任何关于相机的信息。 (也许我可以使用stereoRectifyUncalibrated,如果是这样,我怎么办?)

请帮忙 感谢

1 个答案:

答案 0 :(得分:12)

从opencv doc中提取:

“函数stereoRectify计算每个摄像机的旋转矩阵(虚拟地)使两个摄像机图像平面成为同一平面。因此,这使得所有的极线都平行,从而简化了密集的立体对应问题。由stereoCalibrate()计算的矩阵,在输出上,它在新坐标中给出2个旋转矩阵和2个投影矩阵。“

<强>答案:

这意味着3个选项:

  • 或者您有两张图片,并且您知道从XML加载的相机型号(内在物),例如 loadXMLFromFile()=&gt; stereoRectify()=&gt; reprojectImageTo3D()

  • 或者你没有它们但你可以校准你的相机=&gt; stereoCalibrate()=&gt; stereoRectify()=&gt; reprojectImageTo3D()

  • 或者你无法校准相机(这是你的情况,因为你没有Sir Tsukuba的相机,那么:你需要在两张图像上找到对关键点,例如SURF,SIFT(你)实际上可以使用任何blob探测器),然后计算这些关键点的描述符,然后根据描述符匹配图像右侧和左侧图像的关键点,然后从中找到基本垫。处理更加困难,如下所示: strong> 检测关键点(SURF,SIFT)=&gt;提取描述符(SURF,SIFT)=&gt;比较和匹配描述符(BruteForce,基于Flann的方法)=&gt;从这些对中找到基本mat(findFundamentalMat()) =&gt; stereoRectifyUncalibrated()=&gt; reprojectImageTo3D()

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

于连