OpenCV C ++ findHomography掩码值的含义

时间:2013-04-04 15:21:14

标签: c++ opencv computer-vision homography ransac

我正在使用OpenCV的函数findHomography和RANSAC方法,以便找到与一组关键点链接的两个图像相关的单应性。主要问题是我无法找到函数输出的掩码矩阵的值。只有我知道的信息是0值是异常值,非零值是内点。但这意味着内部值是多少?有人知道吗?

提前致谢!

我称之为findHomography的代码:

cv::Mat H12;
cv::Mat mask;

H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5); 
ui->Debug_Label->setText(Mat2QString(mask));

2 个答案:

答案 0 :(得分:11)

findHomography返回的掩码是一个8位单通道cv::Mat(或std::vector<uchar>,如果您愿意),包含0或{{1} }表示异常状态。

编辑:您可以通过调用1来访问掩码的每个元素,这会导致混乱的输出。您应该使用.at<double>,它将正确解释矩阵值。

答案 1 :(得分:1)

在应用关键点匹配之后,我使用了 findHomography 方法。

  • 内部 是被计算为真实肯定(正确匹配)的匹配关键点;
  • 离群值 是被计算为误报(错误匹配)的匹配关键点。

然后,您可以使用掩码输出从所有匹配项中提取正确匹配项的子集。

  • Python 3.6和OpenCV 3.4.1中有一个示例:

    good_kp = [gray_kp[m.queryIdx].pt for m in good_matches]
    correct_matched_kp = [good_kp[i] for i in range(len(good_kp)) if mask[i]]