findHomography返回的 mask参数的值代表什么?

问题描述 投票:8回答:2

我正在使用函数 findHomography OpenCV的RANSAC方法,以便找到用一组关键点连接的两幅图像的同源关系。

主要的问题是,我还没能在任何地方找到函数输出的掩模矩阵的值。

我知道的唯一信息是,0值是离群值,非零值是离群值。但是离群值是什么意思呢?有人知道吗?

一段代码,我在这里调用 findHomography:

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

H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5); 
ui->Debug_Label->setText(Mat2QString(mask));
c++ opencv computer-vision homography ransac
2个回答
11
投票

返回的掩码 findHomography 是一个8位、单通道 cv::Mat (或 std::vector<uchar>,如果你愿意的话),其中包含 01 表明离群状态。

EDIT: 你可以通过调用 .at<double>这导致了混乱的输出。你应该使用 .at<uchar>,它将正确解释矩阵值。


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]]
    
© www.soinside.com 2019 - 2024. All rights reserved.