2013-04-14 15 views

Odpowiedz

23

OpenCV ma funkcję cv::findHomography, która może opcjonalnie użyć RANSAC do znalezienia macierzy homograficznej związanej z dwoma obrazami. Możesz zobaczyć przykład tej funkcji w akcji here.

szczególności sekcja kodu jesteś zainteresowany to:

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

Następnie można użyć funkcji cv::perspectiveTransform wygięcie obrazy według matrycy homography.

Inne opcje cv::findHomography innego niż CV_RANSAC0 który wykorzystuje każdy punkt i CV_LMEDS która wykorzystuje metodę najsłabiej mediany. Więcej informacji można znaleźć w dokumentacji kalibracji kamery OpenCV here.

Powiązane problemy