findFundamentalMat - 极线是错误的

时间:2013-03-12 17:04:33

标签: c++ opencv computer-vision

我想计算两个图像对之间的基本矩阵。为此,我使用通过cv::FlannBasedMatcher匹配的SIFT特征。然后我用找到的匹配来调用cv::findFundamentalMat(left_pts, right_pts, CV_RANSAC, 2.0, 0.99, ransac_mask)

为了可视化计算出的基本矩阵,我想绘制极线。为此,我尝试了cv::computeCorrespondEpilines和一个带有Point的手动复制并提取得到的线方程(ax + by + c = 0)。

要绘制线条,我只需使用剪切(我在许多其他示例中找到)

for (cv::vector<cv::Vec3f>::const_iterator it = lines1.begin(); it!=lines1.end(); ++it)
{
    cv::line(left_new,
         cv::Point(0,-(*it)[2]/(*it)[1]),
         cv::Point(left.cols,-((*it)[2] + (*it)[0]*left.cols)/(*it)[1]),
         cv::Scalar(255,255,255));
}

但相应的点不在极线上。我甚至在已经修正过的图像上尝试了它,但线条不是水平的。

现在我也测试了这个例子: http://opencv-cookbook.googlecode.com/svn/trunk/Chapter%2009/estimateF.cpp 只是发现它有同样的问题。

有人可以分享这样一个用例的工作示例,还是给我一个提示可能出错的提示? (匹配似乎很好,所以它必须是实际估计的东西)

0 个答案:

没有答案