我正在使用函数 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));
返回的掩码 findHomography
是一个8位、单通道 cv::Mat
(或 std::vector<uchar>
,如果你愿意的话),其中包含 0
或 1
表明离群状态。
EDIT: 你可以通过调用 .at<double>
这导致了混乱的输出。你应该使用 .at<uchar>
,它将正确解释矩阵值。
我使用了 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]]