ard*_*var 3 3d opencv disparity-mapping stereo-3d
我非常需要你对这个问题的帮助.我试图在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,如果是这样,我怎么办?)
请帮助谢谢
jma*_*tel 12
从opencv doc中提取:
"函数stereoRectify计算每个摄像机的旋转矩阵,它们(虚拟地)使两个摄像机图像平面成为同一平面.因此,这使得所有的极线都平行,从而简化了密集的立体对应问题.在输入时,函数采用矩阵计算通过stereoCalibrate()和输出,它在新坐标中给出2个旋转矩阵和2个投影矩阵."
回答:
这意味着3个选项:
或者你有两个图像,你知道你从XML加载的相机模型(内在),例如loadXMLFromFile()=> stereoRectify()=> reprojectImageTo3D()
或者你没有它们但你可以校准你的相机=> stereoCalibrate()=> stereoRectify()=> reprojectImageTo3D()
或者你不能校准相机(这是你的情况,因为你没有Sir Tsukuba的相机,那么:你需要在SURF,SIFT两个图像上找到对关键点(你可以实际使用任何blob探测器) ),然后计算这些关键点的描述符,然后根据它们的描述符匹配图像右侧和图像左侧的关键点,然后从它们中找到基本垫.处理更加困难,如下所示:检测关键点(SURF,SIFT) =>提取描述符(SURF,SIFT)=>比较和匹配描述符(BruteForce,基于Flann的方法)=>从这些对中找到基本mat(findFundamentalMat())=> stereoRectifyUncalibrated()=> reprojectImageTo3D()
我希望它能帮助你,如果没有,请告诉我
朱利安,
| 归档时间: | 
 | 
| 查看次数: | 5204 次 | 
| 最近记录: |