但是我不知道在stereoRectify中传递什么输入,我只有两张图像,没有任何关于相机的信息。(也许我可以使用stereoRectifyUncalibrated,如果可以的话,我该如何操作?)
请帮帮我 谢谢
来自OpenCV文档的摘录:
"函数stereoRectify为每个相机计算旋转矩阵(虚拟地)使两个相机图像平面成为同一平面。因此,这使所有极线都是平行的,从而简化了密集立体匹配问题。该函数输入由stereoCalibrate()计算的矩阵,并在输出中提供2个旋转矩阵以及新坐标下的2个投影矩阵。"
答案:
它意味着有三种选择:
或者您有两个图像并且您知道相机的模型(内部参数),例如您从XML文件中加载的相机模型:loadXMLFromFile()= > stereoRectify()= > reprojectImageTo3D()
或者您没有它们,但可以校准相机 => stereoCalibrate()= > stereoRectify()= > reprojectImageTo3D()
或者您无法校准相机(这是您的情况,因为您没有Sir Tsukuba的相机),然后:您需要在两个图像上找到配对关键点,例如SURF,SIFT等(实际上您可以使用任何斑点检测器),然后计算这些关键点的描述符,根据它们的描述符从图像右侧和图像左侧匹配关键点,然后找到从它们中得到的基本矩阵。处理要更加困难,就像下面这样: detect keypoints(SURF,SIFT)= > extract descriptors(SURF,SIFT)= > compare and match descriptors(BruteForce,Flann based approaches)= > find fundamental mat(findFundamentalMat()) from these pairs = > stereoRectifyUncalibrated()= > reprojectImageTo3D()
我希望以上回答对您有所帮助,如果没有,请告诉我。
朱利安