2013-04-14 6 views
5

मैं छवि प्रसंस्करण पर काम कर रहा हूं। मैं 2 डी फीचर्स से मेल खाना चाहता हूं और मैंने एसयूआरएफ, एसआईएफटी, ओआरबी पर कई परीक्षण किए हैं।
मैं OpenCV में SURF/SIFT/ORB पर RANSAC कैसे लागू कर सकता हूं?एसयूआरएफ, एसआईएफटी और ओआरबी मिलान परिणामों पर RANSAC कैसे लागू करें

उत्तर

23

ओपनसीवी में cv::findHomography फ़ंक्शन है जो वैकल्पिक रूप से दो छवियों से संबंधित होमोग्राफी मैट्रिक्स को खोजने के लिए RANSAC का उपयोग कर सकता है। आप इस फ़ंक्शन का उदाहरण here में देख सकते हैं।

विशेष रूप से कोड की धारा आप में रुचि रखते हैं है:

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); 

फिर आप homography मैट्रिक्स के अनुसार छवियों ताना समारोह cv::perspectiveTransform उपयोग कर सकते हैं।

cv::findHomographyCV_RANSAC के अलावा अन्य के लिए अन्य विकल्प 0 जो हर बिंदु का उपयोग करता है और CV_LMEDS जो कम से कम-माध्य विधि का उपयोग करता है। ओपनसीवी कैमरा अंशांकन प्रलेखन here में अधिक जानकारी मिल सकती है।

संबंधित मुद्दे