2013-04-14 17 views

Antwort

23

OpenCV hat die Funktion cv::findHomography, die optional RANSAC verwenden kann, um die Homographie-Matrix zu finden, die zwei Bilder betrifft. Sie können ein Beispiel für diese Funktion in Aktion here sehen.

Insbesondere der Abschnitt von Code, den Sie interessiert, ist:

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

Sie dann cv::perspectiveTransform die Funktion können Sie die Bilder nach der Homografie Matrix verziehen.

Weitere Optionen für cv::findHomography andere als CV_RANSAC sind 0, die jeden Punkt und CV_LMEDS verwendet, die die am wenigsten Median-Methode verwendet. Weitere Informationen finden Sie in der OpenCV Kamerakalibrierungsdokumentation here.