12

findHomographyキーポイントのセットにリンクされた2つの画像を関連付けるホモグラフィを見つけるために、RANSACメソッドでOpenCVの機能を使用しています。

主な問題は、関数が出力するマスク行列の値をまだどこにも見つけることができなかったことです。

私が知っている唯一の情報は、0 の値は異常値であり、0 以外の値はインライアであるということです。しかし、インライア値とはどういう意味ですか? 誰か知っていますか?

私が呼び出すコードの一部findHomography

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

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

2 に答える 2

15

によって返されるマスクは、外れ値ステータスを含むまたはを示すfindHomography8 ビットの単一チャネルcv::Mat(またはstd::vector<uchar>、必要に応じて ) です。01

編集:を呼び出してマスクの各要素にアクセスしますが.at<double>、これは紛らわしい出力につながります。を使用する必要があります.at<uchar>。これにより、マトリックス値が正しく解釈されます。

于 2013-04-04T16:25:52.897 に答える
2

キーポイント マッチングを適用した後、 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]]
    
于 2018-06-26T08:12:25.957 に答える