image processing - machine - ¿Cómo se representan gráficamente las características de HoG?
opencv sift python (5)
Aquí quiero hacer una pregunta sobre los dos cuadros de secuencia de una persona que camina y extraemos el HOG de cada imagen y luego tomamos la diferencia de ambos HOG. Quiero saber qué información obtenemos en la visualización final (Diferencia) de HOG.
Gracias
Estoy implementando las características de Histograma de gradiente orientado de "Histogramas de gradientes orientados para detección humana" y me gustaría visualizar el resultado. Todos los documentos sobre estas características utilizan una visualización estándar, pero no puedo encontrar ninguna descripción de cómo se generan. Estaría agradecido por una explicación o enlace útil.
Hay un artículo reciente (HOGles) publicado en iccv 2013 sobre la visualización de las características de HOG que puede ser bastante útil, el código está disponible aquí http://web.mit.edu/vondrick/ihog/#code
Las visualizaciones que ve en los artículos se pueden interpretar de la siguiente manera:
El descriptor está formado por celdas M * N que cubren la ventana de la imagen en una cuadrícula. Cada celda está representada por un histograma de orientaciones de borde, donde el número de orientaciones de borde discretizadas es un parámetro (generalmente 9). El histograma celular se visualiza mediante una "estrella" que muestra la fuerza de las orientaciones de los bordes en el histograma: cuanto más fuerte es una orientación específica, más larga es en relación con las demás.
Tenga en cuenta que hay varios esquemas de normalización: esquemas locales, en los que la celda se normaliza solo con respecto a las celdas vecinas (como en el documento original de Dalal-Triggs), o esquemas globales, en los que la longitud de la orientación está normalizada por todas las celdas . También tenga en cuenta que algunos autores utilizan múltiples normalizaciones locales por celda (por ejemplo, la que me refiero a continuación), pero la visualización solo muestra una (o un promedio de ellas).
El código de Matlab para el trabajo seminal de Felzenszwalb et al. visualiza las celdas pintándolas sobre una imagen, donde la fuerza se visualiza por la intensidad del borde en lugar de la longitud. Lo puedes encontrar en el paquete que dan aquí (DPM) . Busque una función llamada HOGpicture.m
El siguiente ejemplo muestra un modelo de una bicicleta (de Felzenszwalb et al.) Con HoG que consta de 7 * 11 celdas, cada una con 8 orientaciones
scikit-image también proporciona visualización HOG: http://scikit-image.org/docs/dev/auto_examples/plot_hog.html
Un blog llamado Jurgenwiki tiene algún código de ejemplo (llamado get_hogdescriptor_visu()
) para visualizar los descriptores HOG en OpenCV. En el pasado, copié / pegué el código Jurgenwiki en un archivo C ++, pasé las funciones de mi HOG a get_hogdescriptor_visu()
, y la visualización se veía bastante bien. Aquí hay un ejemplo:
Una advertencia del código de Jurgenwiki es que espera que uses los HOGDescriptor()
predeterminados de HOGDescriptor()
(por ejemplo, 16x16 bloques, 8x8 celdas, 9 bandejas de orientación). Sin embargo, si está utilizando parámetros personalizados en su HOGDescriptor
, puede modificar el código de Jurgenwiki para que coincida con sus parámetros HOG.
Esta publicación de es bastante útil también.