Chciałbym wiedzieć, jaka jest różnica w terminach precyzji lub jakości meczów pomiędzy BFMatcher i FlannBasedMatcher w openCV. Wiem, że FlannBasedMatcher może być szybszy, gdy zostanie zastosowany do dużej bazy danych, ale czy dwaj matcherzy znajdą te same mecze na końcu, bez względu na czas wykonania?Różnica między BFMatcher i FlannBasedMatcher
Odpowiedz
BFMatcher zamierza wypróbować wszystkie możliwości (która jest sens „Brute Force”, a tym samym będzie znaleźć najlepsze mecze.
Flann, czyli „Szybka Biblioteka Przybliżone najbliższych sąsiadów” , będzie znacznie szybszy, ale znajdzie przybliżoną najbliższą sąsiadkę, znajdzie dobre dopasowanie, ale niekoniecznie najlepsze, możesz grać z parametrami FLANNA, aby zwiększyć precyzję (tj. "jakość" meczów) , ale będzie to kosztem spowolnienia algorytmu. ANN jest znacznie szybszy niż BFMatcher, ale znajduje tylko przybliżony najbliższy sąsiad, który jest dobrym dopasowaniem, ale niekoniecznie najlepszym. Możesz grać z parametrami FLANN, aby zwiększyć jego prędkość lub precyzję.
Aby dodać do powyższej odpowiedzi, FLANN tworzy wydajną strukturę danych (drzewo KD), która będzie używana do wyszukiwania przybliżonego sąsiada, podczas gdy cv::BFMatcher dokonuje wyczerpującego wyszukiwania i gwarantuje znalezienie najlepszego sąsiada. Prawdziwa korzyść z FLANN jest widoczna w przypadku dużych zbiorów danych. Z mojego doświadczenia wynika, że korzyścią jest liczba deskryptorów większa niż 1K.
- 1. Różnica między unwrapObservable i()
- 2. Różnica między "**/* /" i "** /"?
- 3. Różnica między | = i^= css
- 4. Composer.phar różnica między | i ||
- 5. Różnica między "% ~ dp0" i ". \"?
- 6. Różnica między ". +" I ". +?"
- 7. MySQL: Różnica między ",", "i"
- 8. Różnica między (++ i) oraz (i ++)
- 9. Różnica kręgosłupa Różnica między CompositeView i CollectionView?
- 10. Różnica między logger.info i logger.debug
- 11. Różnica między fgets i fscanf?
- 12. Różnica między NSLog i DLog
- 13. Różnica między RoutedEventHandler i EventHandler
- 14. Różnica między obrysem i wypełnieniem?
- 15. Różnica między Parameters.Add i Parameters.AddWithValue
- 16. Różnica między putback() i unget()
- 17. Różnica między Delegate.BeginInvoke i Thread.Start
- 18. Różnica między TVar i TMVar
- 19. Różnica między DatagramSocket i DatagramChannel
- 20. Różnica między intent.setClass() i intent.setComponent()
- 21. różnica między -lgcc_s i gcc
- 22. Różnica między string.ToLower i TextInfo.ToLower
- 23. Różnica między javax.sql i java.sql?
- 24. Różnica między paint() i paintcomponent()?
- 25. Różnica między app.all ("*") i app.use ("/")
- 26. Różnica między c() i append()
- 27. Różnica między KeyEventArgs.systemKey i KeyEventArgs.Key
- 28. Różnica między org.apache.spark.ml.classification i org.apache.spark.mllib.classification
- 29. Różnica między GotFocus i GotKeyboardFocus
- 30. Różnica między JVM i HotSpot?
Jak duża powinna być baza danych, aby BFMather zwolnił? Jeśli masz listę 1000 deskryptorów? mniej więcej? –