我尝试使用给定https://docs.opencv.org/3.2.0/da/de9/tutorial_py_epipolar_geometry.html的代码来查找极线,但是我没有获得链接中给出的输出,而是得到以下输出。
但是将行F, mask = cv2.findFundamentalMat(pts1,pts2,cv2.FM_LMEDS)
更改为
F, mask = cv2.findFundamentalMat(pts1,pts2,cv2.FM_RANSAC)
,即:使用RANSAC
算法查找基本矩阵而不是LMEDS
,这是以下输出。
当同一行替换为F, mask = cv2.findFundamentalMat(pts1,pts2,cv2.FM_8POINT)
时,即:使用八点算法,这是以下输出。
以上关于输出的所有内容都没有任何视觉上的健全性,也无论如何接近opencv文档中的给定输出以寻找极线。但具有讽刺意味的是,如果通过改变算法执行相同的代码来找到这个特定序列中的基本矩阵
生成最准确的结果。这是输出。
我认为我们假设在任何算法的一次运行中得到上述输出(矩阵值和误差的变化)。我是否错误地运行了代码?为了获得正确的极线(即视觉上的理智),我该做什么?我使用的是opencv版本3.3.0和python 2.7。
期待回复。
谢谢。