2012-07-07 19 views
9

Estoy tratando de empezar a trabajar con la extracción de características de sift usando (C++) OpenCv. Necesito extraer las características usando SIFT, unirlas entre la imagen original (por ejemplo, un libro) y una escena, y después de eso calcular la pose de la cámara.Sift Extraction - opencv

Hasta ahora he encontrado this algorithm usando SURF. ¿Alguien sabe un código base desde el cual puedo comenzar, o tal vez una forma de convertir el algoritmo en el enlace de SURF a SIFT?

Gracias de antemano.

EDIT: Ok, he resuelto una solución para el problema de tamizado. Ahora estoy tratando de imaginar la pose de la cámara. Estoy tratando de usar: solvePnP, ¿alguien me puede ayudar con un ejemplo?

Respuesta

4

Si ha logrado encontrar coincidencias entre la imagen y la escena, entonces le sugiero que aplicar cv :: findHomography(). Calculará la matriz de homografía usando 4 coincidencias como entrada.

Puede convertir directamente a la pose de cámara desde la matriz de homografía.

0

Para cribar usando en lugar de SURF, he cambiado SurfFeatureDetector a SiftFeatureDetector y SurfDescriptorExtractor a SiftDescriptorExtractor. Para algunas imágenes, encontré que la combinación del detector SURF < -> descriptor SIFT produce resultados relativamente precisos, pero debe experimentar con otras combinaciones (detector FAST - descriptor FREAK o detector ORB - descriptor BRISK), dependiendo de sus requisitos.

favor, siga este tutorial para la solución de homografía la parte de su pregunta: Feature Matching and Homography

Además, tal vez esto ayude: Pose Estimation