Pracuję nad przetwarzaniem obrazu. Chcę dopasować cechy 2D i zrobiłem wiele testów na SURF, SIFT, ORB.
Jak mogę zastosować RANSAC na SURF/SIFT/ORB w OpenCV?Jak zastosować RANSAC w dopasowywaniu wyników SURF, SIFT i ORB
5
A
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_RANSAC
są 0
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
- 1. SURF vs SIFT, czy SURF jest naprawdę szybszy?
- 2. Wykrywanie obiektu na obrazie przy użyciu funkcji SIFT/SURF
- 3. Algorytm RANSAC
- 4. Wydajny sposób dopasowywania deskryptorów SIFT
- 5. Ransac do dopasowywania splajnu
- 6. Regresja wieloczynnikowa RANSAC
- 7. SIFT Keypoint Lokalizacja
- 8. perl6 Czy używanie skrzyżowań w dopasowywaniu jest możliwe?
- 9. Jak połączyć i zastosować strumień komparatorów?
- 10. Dlaczego PHP i oceniać $ b $ b = $ b inaczej, gdy używana z $ b ++ w indeksie tablicy
- 11. Różnica między +++++ B i A ++ + ++ b
- 12. Wydajność OpenCV przy dopasowywaniu szablonów
- 13. scala niejawne wartości wyodrębnione w dopasowywaniu wzorca?
- 14. Surf brakuje w OpenCV 2.4 dla Pythona
- 15. Phash vs. SIFT w identyfikacji Podobne
- 16. Deskryptory obrazu z SIFT/VLFEAT
- 17. Obraz dopasowania EMGU CV SURF
- 18. Obliczyć Gęste funkcje SIFT w OpenCV 3.0
- 19. Jaka jest różnica między b i B w Vim?
- 20. Różnica między || a = b i a = a || b w rubin?
- 21. Jak przekształcić i zastosować funkcję częściową za pomocą makr Scala?
- 22. OpenCV: parametr zaufania RANSAC do znalezienia homografii
- 23. W jaki sposób | (fajka) w dopasowywaniu wzorców działa?
- 24. Mylące obiekty Pythona: a = b, modyfikuj b i zmiany!
- 25. Funkcja OpenCV SURF nie jest zaimplementowana
- 26. Opis SURF szybciej dzięki funkcji FAST detection?
- 27. Rodzaj minBy [B] (f: ((A, B)) ⇒ B) (ukryte CMP: Kolejność [B]): (A, B)
- 28. Numpy Różnica pomiędzy punktu (a, b) i (a * b) .sum()
- 29. Redis: Jak analizować listy wyników
- 30. Jak zastosować funkcję do wariantu?