5
私は画像処理に取り組んでいます。私は2Dフィーチャにマッチしたいと思い、SURF、SIFT、ORBで多くのテストを行いました。
OpenCVのSURF/SIFT/ORBにRANSACを適用するにはどうすればよいですか?SURF、SIFT、ORBのマッチング結果にRANSACを適用する方法
私は画像処理に取り組んでいます。私は2Dフィーチャにマッチしたいと思い、SURF、SIFT、ORBで多くのテストを行いました。
OpenCVのSURF/SIFT/ORBにRANSACを適用するにはどうすればよいですか?SURF、SIFT、ORBのマッチング結果にRANSACを適用する方法
OpenCVには、オプションでRANSACを使用して2つの画像に関連するホモグラフィ行列を見つける関数cv::findHomography
があります。この機能の例は、hereのアクションで確認できます。
具体的に興味のあるコードのセクションがある:あなたはその後、ホモグラフィ行列に応じた画像をワープする機能cv::perspectiveTransform
を使用することができます
FlannBasedMatcher matcher;
std::vector<DMatch> matches;
matcher.match(descriptors_object, descriptors_scene, matches);
for(int i = 0; i < good_matches.size(); i++)
{
//-- Get the keypoints from the good matches
obj.push_back(keypoints_object[ good_matches[i].queryIdx ].pt);
scene.push_back(keypoints_scene[ good_matches[i].trainIdx ].pt);
}
Mat H = findHomography(obj, scene, CV_RANSAC);
。
CV_RANSAC
以外のcv::findHomography
のその他のオプションは、すべての点を使用する0
と、最小のメディアン方式を使用するCV_LMEDS
です。詳細は、OpenCVカメラ校正のドキュメントhereを参照してください。