Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv CVREPROJECTOMAGETO3D-从2d图像生成3d模型问题-_Opencv_3d_Stereo 3d_Disparity Mapping - Fatal编程技术网

Opencv CVREPROJECTOMAGETO3D-从2d图像生成3d模型问题-

Opencv CVREPROJECTOMAGETO3D-从2d图像生成3d模型问题-,opencv,3d,stereo-3d,disparity-mapping,Opencv,3d,Stereo 3d,Disparity Mapping,在这个问题上我非常需要你的帮助。我正在尝试用2d图像中的3d来模拟一个简单的场景。我使用了两幅图像(著名的筑波场景的左右两侧) 我得到了一张视差图。像这个。 在这里之后,我有一些问题。我认为应采取以下步骤: CVD(获得Q) CVREPROJECTOMAGETO3D(视差图,3D图像,Q) 但是我不知道在立体校正中传递什么作为输入,我只有2张图像,我没有关于相机的任何信息。(也许我可以使用StereoRectified,如果可以,我该怎么做?) 请帮忙 谢谢从opencv文档中摘录: “Ste

在这个问题上我非常需要你的帮助。我正在尝试用2d图像中的3d来模拟一个简单的场景。我使用了两幅图像(著名的筑波场景的左右两侧) 我得到了一张视差图。像这个。

在这里之后,我有一些问题。我认为应采取以下步骤:

CVD(获得Q) CVREPROJECTOMAGETO3D(视差图,3D图像,Q)

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

请帮忙
谢谢

从opencv文档中摘录:

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

回答:

这意味着3种选择:

  • 或者您有两张图像,并且您知道从XML加载的相机(Intrisic)的型号,例如loadXMLFromFile()=>StereoRective()=>ReprojectionTo3D()

  • 或者您没有它们,但可以校准您的相机=>stereoCalibrate()=>StereoConvertive()=>ReprojectmageTo3D()

  • 或者你不能校准相机(这是你的情况,因为你没有筑波爵士的相机,那么:你需要在两幅图像上找到配对的关键点,比如SURF,SIFT(你可以使用任何斑点检测器),然后计算这些关键点的描述符,然后根据描述符匹配右图像和左图像中的关键点,然后从中找到基本矩阵。处理要困难得多,如下所示:检测关键点(SURF,SIFT)=>提取描述符(SURF,SIFT)=>比较和匹配描述符(BruteForce,基于Flann的方法)=>从这些对中查找基本mat(findFundamentalMat())=>StereoRectiveYunCalibrated()=>重新投影到3D()

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


朱利安,

答案可以吗,还是需要更多信息?