Me gustaría saber cuál es la diferencia en términos de precisión o calidad de las coincidencias entre BFMatcher y FlannBasedMatcher en openCV. Sé que FlannBasedMatcher podría ser más rápido cuando se aplica a una gran base de datos, pero ¿los dos evaluadores encontrarán las mismas coincidencias al final sin importar el momento de la ejecución?Diferencia entre BFMatcher y FlannBasedMatcher
Respuesta
BFMatcher va a probar todas las posibilidades (que es el significado de "fuerza bruta" y por lo tanto va a encontrar las mejores coincidencias
FLANN, que significa "Biblioteca rápido para aproximados Los vecinos más cercanos". , será mucho más rápido pero encontrará un vecino aproximado más cercano. Encontrará un buen emparejamiento, pero no necesariamente el mejor posible. Puede jugar con los parámetros de FLANN para aumentar la precisión (es decir, la "calidad" de los emparejamientos) , pero será a costa de desacelerar el algoritmo.
En otras palabras: FL ANN es mucho más rápido que BFMatcher, pero solo encuentra un vecino más cercano aproximado, que es una buena coincidencia pero no necesariamente la mejor. Puede jugar con los parámetros de FLANN para aumentar su velocidad o su precisión.
Para agregar a la respuesta anterior, FLANN construye una estructura de datos eficiente (KD-Tree) que se utilizará para buscar un vecino aproximado, mientras que cv::BFMatcher hace una búsqueda exhaustiva y se garantiza que encontrará el mejor vecino. El beneficio real de FLANN se ve con grandes conjuntos de datos. En mi experiencia, he visto un justificable beneficio es el número de descriptores es mayor que 1K.
- 1. Guardar y cargar FlannBasedMatcher
- 2. OpenCV Python's API: FlannBasedMatcher
- 3. MySQL: diferencia entre ', `,' y"
- 4. Diferencia entre objeto y *?
- 5. Diferencia entre. y #
- 6. ¿Diferencia entre == y caso?
- 7. La diferencia entre $ * y $ @
- 8. Diferencia entre & y &
- 9. VBA: Diferencia entre y y +
- 10. Diferencia entre -Wconversion entre gcc y g ++
- 11. Diferencia entre subprocess.Popen y os.system
- 12. Diferencia entre decimal y decimal
- 13. ¿Diferencia entre trazo y relleno?
- 14. Diferencia entre interrupción y eventos
- 15. Diferencia entre netTcpContextBinding y netTcpBinding
- 16. ¿Diferencia entre brújula y sass?
- 17. Diferencia entre "__method__" y "método"
- 18. Diferencia entre Mealy y Moore
- 19. Diferencia entre HashSet y HashMap?
- 20. diferencia entre ajax y enviar
- 21. Diferencia entre sistema y shell_exec
- 22. Diferencia entre Style y ControlTemplate
- 23. Diferencia entre relativo y absoluto
- 24. Diferencia entre window.location.href y top.location.href
- 25. Diferencia entre strncpy y memcpy?
- 26. diferencia entre SDL y GLUT
- 27. Diferencia entre Javascript y PHP
- 28. Diferencia entre Session y HttpContext.Current.Session
- 29. diferencia entre px y em
- 30. Diferencia entre sqrtf y sqrtf
¿Qué tan grande debe ser la base de datos para hacer que BFMather se desacelere? Si tiene una lista de 1000 descriptores? más, menos? –