opencv - feature - matching sift
¿Hay alguna alternativa rápida a SURF y SIFT para la extracción de características invariables de escala? (7)
Aunque ya elija BRISK, es posible que encuentre FREAK interesante. El autor afirma tener mejores resultados que BRISK y ORB. También debería agregar que el ORB es invariante de escala, pero tiene algunos problemas en esa área. Así que todavía lo recomendaría para que alguien lo intente.
El código fuente FREAK es compatible con OpenCV (lo fácil que es fusionarlos, no sé) y el autor está trabajando en enviarlo al proyecto OpenCV.
EDITAR:
FREAK ahora es parte de los detectores / descriptores de características de opencv.
Puede leer más aquí sobre las diferencias entre varios detectores / extractores de funciones, y también una serie de puntos de referencia que incluyen FREAK y otros populares.
SURF está patentado, al igual que SIFT. ORB y BREVE no están patentados, pero sus características no son invariables por la escala, lo que limita seriamente su utilidad en escenarios complejos.
¿Hay algún extractor de funciones que pueda extraer características invariables de escala tan rápido como SURF y que no estén tan estrictamente patentadas como SURF y SIFT?
Detección de puntos de referencia y búsqueda de características de cerdo (no está patentado) mediante la formación de parches alrededor de puntos de referencia.
FREAK ahora está incluido en OpenCV 2.4.2, puedes usarlo fácilmente :-)
Puede probar el histograma de gradientes orientados en varias escalas . No será totalmente invariable a escala, pero si sus datos están limitados con un conjunto razonable de límites de escala (a menudo el caso en la práctica), entonces esto probablemente funcione para usted.
Otro enfoque, dependiendo totalmente de cuál sea su aplicación prevista, sería apalancar poselets , incluso si están construidos sobre un descriptor no invariable de escala como un histograma simple de gradiente orientado o modelos de apariencia. Si las anotaciones en sus datos de entrenamiento incluyen ejemplos de diferentes elementos para la detección, todos a diferentes escalas, entonces la distancia al estilo de Procrustes utilizada en Poselets para el entrenamiento debería ocuparse de una gran invarianza de escalas. Esto puede no ser satisfactorio, aunque si su aplicación principal no es detección localizada de piezas.
Por otro lado, creo que es bastante desafortunado que SIFT y SURF hayan sido patentados de esta manera, dado que fueron (al menos en parte) financiados con dólares de los contribuyentes a través de subvenciones.
Puedes probar KAZE, se supone que es más rápido y preciso (los videos parecen sofisticados, pero no pude probarlo todavía). También hay una versión acelerada disponible.
Pablo F. Alcantarilla, Adrien Bartoli y Andrew J. Davison, " Características KAZE ", en la Conferencia Europea de Visión por Computadora (ECCV). Fiorenze *, Italia. Octubre 2012.
Pablo F. Alcantarilla, Jesús Nuevo y Adrien Bartoli, " Difusión rápida explícita para funciones aceleradas en espacios de escala no lineales ", en British Machine Vision Conference (BMVC). Bristol, Reino Unido. Septiembre 2013
Los códigos fuente, videos y más se pueden encontrar en el sitio web del autor .
* Firenze
Se supone que FREAK es el extractor de descriptor invariante de escala y rotación más rápido , es de código abierto y se puede usar fácilmente a medida que se implementa en OpenCV. Necesitas un matcher binario que use la Distancia de Hamming, como BruteForceMatcher.
Aquí tiene un example sobre cómo usarlo, fácilmente reemplazable por el descriptor SIFT.
Terminé usando Brisk , que es un detector de funciones con un rendimiento comparable al de SURF pero bajo la licencia de BSD. Además, tiene una muy buena implementación de C ++ de código abierto que se conecta fácilmente al marco de OpenCV FeatureDetector, por lo que es como 2 líneas que eligen usar Brisk sobre SURF en su código.