¿Cómo puedo extraer características RÁPIDAS de una imagen?

Quiero extraer características de FAST, basadas en la Homografía de Features2D + para encontrar un objeto conocido

SurfFeatureDetector detector( minHessian ); std::vector keypoints_object, keypoints_scene; detector.detect( img_object, keypoints_object ); detector.detect( img_scene, keypoints_scene ); //-- Step 2: Calculate descriptors (feature vectors) SurfDescriptorExtractor extractor; 

Las clases SurfFeatureDetector y FastFeatureDetector se heredan de Detector y se pueden intercambiar. Pero no pude encontrar una clase coincidente para SurfDescriptorExtractor. Esperaba encontrar algo como FastDescriptorExtractor, pero una clase como esta no está disponible. Lo que parece extraño es que si solo cambio el Detector a FastFeatureDetector, el ejemplo parece funcionar correctamente.

Mi pregunta es: ¿Cómo debería ser la secuencia anterior para las funciones de Fast?

Que yo sepa, no hay un extractor de características FAST en OpenCV. A diferencia de SURF, que se puede usar tanto para la detección de características como para el cálculo del vector de características, FAST se usa principalmente para detectar puntos de características. Después de obtener los puntos de características, debe usar algún otro extractor de características para generar vectores de características y hacer la comparación. Alternativamente, si le preocupa la velocidad, en OpenCV 2.3, se introduce la función ORB, que en realidad usa el FAST multiescala (más algunas mediciones de esquinas de Harris) como detector. El uso es similar a SURF:

 OrbFeatureDetector detector(n_features); OrbDescriptorExtractor extractor(patch_size); 

Necesitaría cambiar el emparejador en el ejemplo a un emparejador basado en la distancia de Hamming. Espero que esto ayude.