2013-04-14 32 views

Trả lời

23

OpenCV có chức năng cv::findHomography có thể tùy chọn sử dụng RANSAC để tìm ma trận homography liên quan đến hai hình ảnh. Bạn có thể xem ví dụ về chức năng này trong hành động here.

Cụ thể các phần của mã bạn đang quan tâm là:

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

Sau đó bạn có thể sử dụng chức năng cv::perspectiveTransform để warp những hình ảnh theo ma trận homography.

Các tùy chọn khác cho cv::findHomography ngoài CV_RANSAC0 sử dụng mọi điểm và CV_LMEDS sử dụng phương pháp Ít nhất trung bình. Bạn có thể tìm thêm thông tin trong tài liệu hiệu chuẩn máy ảnh OpenCV here.

Các vấn đề liên quan