Cómo estimar la octava y el tamaño de las características visuales ubicadas en las esquinas de Harris

9

Actualmente estoy trabajando y comparando el rendimiento de varios detectores de características proporcionados por OpenCV como base para la coincidencia de características visuales.

Estoy usando descriptores SIFT . He logrado una coincidencia satisfactoria (después de rechazar malas coincidencias) al detectar las funciones MSER y DoG (SIFT) .

Actualmente, estoy probando mi código con GFTT (Buenas características para rastrear - Esquinas de Harris) para obtener una comparación, y también porque en la aplicación final, un conjunto de características GFTT estará disponible desde el proceso de seguimiento de características visuales.

Estoy utilizando cv::FeatureDetector::detect(...)la cual me proporciona un std::vector<cv::KeyPoint>lleno detectados características / puntos clave / regiones de interés . La estructura cv::KeyPointcontiene información básica sobre la ubicación de la característica, así como información sobre sizey octaveen la que se ha detectado el punto clave.

Mis primeros resultados con GFTT fueron terribles hasta que comparé lo típico sizey los octaveparámetros en diferentes tipos de características:

  • MSER establece el tamaño (entre 10 y 40 px) y deja la octava a 0
  • DoG (SIFT) establece tanto el tamaño como la octava (relación tamaño / octava entre 20 y 40)
  • GFTT los parámetros son siempre : tamaño = 3 , octava = 0

Supongo que esto se debe a que el propósito principal de las funciones de GFTT no se usaba en la coincidencia, sino solo en el seguimiento. Esto explica la baja calidad de los resultados coincidentes, ya que los descriptores extraídos de características tan pequeñas dejan de ser discriminatorios e invariables para muchas cosas , incluidos los pequeños cambios de 1 píxel.

Si fijo manualmente el sizede GFTT a 10 - 12 , consigo buenos resultados, muy similares a cuando se utiliza MSER o perro (SIFT) .

Mi pregunta es: ¿hay una mejor manera de determinar cuánto aumentar el size(y / o octave) que simplemente ir con 10 para ver si funciona ? Quiero evitar hardcoding el sizeaumento, si es posible y determinar mediante programación, pero hardcoding está bien , siempre y cuando tengo algunos argumentos sólidos que respaldan mis elecciones de la nueva size/ sizeaumento / sizealgoritmo de estimación .

penelope
fuente
1
Hola @ penelope: mira este enlace, este tipo ya hizo un buen trabajo. [ Computer-vision-talks.com/2011/08/…
@Sistu, hey, parece una muy buena comparación general de descriptores en un caso general, y con un objeto plano, pero estoy trabajando en tipos específicos de imágenes y necesito hacer mi propia prueba. Además, la pregunta era mucho más específica que "Necesito materiales de referencia que comparen el rendimiento de varios tipos de descriptores". Sin embargo, es un buen enlace, lo comprobará.
penelope

Respuestas:

4

No estoy seguro de que haya una buena respuesta a su pregunta precisa: la cuestión del espacio de escala de SIFT y SURF se desarrolló realmente para estimar automáticamente el tamaño de vecindario relevante "bueno" alrededor de un punto clave en forma de esquina (que es lo que tiene buenas características rastrear son).

Ahora, las respuestas más positivas serían:

  • construya una base de datos de puntos clave y buenas coincidencias (por ejemplo, utilizando patrones de calibración cuadrados) y cree una evaluación de rendimiento automatizada en esta base de datos para encontrar el tamaño correcto. Esta tarea realmente puede ser realmente automatizada (vea el trabajo de Mikolajczyk y Schmid sobre la evaluación de coincidencia de puntos)

  • incruste sus buenas características en una pirámide de imagen para tener también algún tipo de escala asociada a ellas. Puede buscar referencias en puntos de interés de FAST y Harris a varias escalas, que hacen algo muy similar a este procedimiento.

Para encontrar heurísticamente el tamaño máximo de bloque, puede calcular las estimaciones de sus imágenes con un cuadro borroso (que es más o menos lo que hace el operador blockSize) y ver cuándo desaparece la esquina. Sin embargo, tenga en cuenta que más desenfoque quita la esquina de su verdadera ubicación.

Si realmente está buscando una solución rápida y sucia, pruebe tamaños entre 5x5 y 11x11 (tamaños típicos utilizados en la coincidencia de bloques estéreo). Si está buscando un criterio intelectualmente satisfactorio, intente maximizar la probabilidad de una buena coincidencia de dos puntos de característica bajo su nivel de ruido.

sansuiso
fuente
Estaba buscando una solución que fuera un poco más rápida y sucia de lo que propones. Además, solo puedo determinar el tiempo en que una coincidencia es buena o mala después de extraer mis puntos clave y combinarlos con algo. Incluso si las combino totalmente al azar, obtengo algunas buenas coincidencias, por lo que su primera sugerencia no es tan útil. En cuanto a la segunda parte, más rápido y sucio: sé que no hay un parámetro perfecto, pero como dije, el aumento del tamaño a 12 ayudó: la calidad era comparable a la coincidencia SIFT y MSER. Simplemente no tengo ningún argumento para elegir 12 sobre 100 o sobre 34 ...
penelope
0

Para ayudarlo a determinar los mejores parámetros para los detectores, OpenCV tiene el AjusterAdapter para ese propósito. Nunca lo usé yo mismo, pero probablemente sea la forma estándar de determinar mediante programación los parámetros. También tenga en cuenta que aunque los puntos clave tienen varias propiedades, no todos tienen sentido para todos los algoritmos. Debido a que la estructura Keypoint se usa para diferentes algoritmos, tiene todos esos campos pero a veces no se usan, es por eso que obtienes esas octavas = 0; OMI

Rui Marques
fuente
Sé que algunos tipos de características no son el mejor tipo para algún propósito a veces, pero trabajos recientes han estado probando enfoques en los que usan más de 1 tipo de características v.características / regiones de interés y logran mejores resultados con la combinación que con cualquier tipo único por sí mismo (puedo agregar enlaces a trabajos si está interesado). Además, lo que estoy haciendo es al menos una parte de la investigación, por lo que se supone que debo probar y evaluar los resultados obtenidos con diferentes tipos de puntos clave, incluso si algunos de esos resultados no son tan buenos como el estado Arte. Investigaré el Adaptador Adjuster, gracias.
Penélope
Acabo de mirar a través de la función que proporciona la interfaz. Solo puede aumentar o disminuir la cantidad de características que detecta el detector. Además, no tengo ningún problema con las características que se detectan. Solo me gustaría una forma de ajustar su tamaño para que puedan usarse mejor en la coincidencia (aumentar el tamaño a 10 lo hace, pero no tengo ningún argumento concreto (suficiente) para esa elección)
penelope