2011-07-03 14 views
8

Estoy trabajando en el Histograma de Gradiente Orientado (HOG) y estoy tratando de implementar la interpolación trilineal de histogramas como se describe en la tesis de doctorado de Dalal. Y explica el proceso de interpolación como se cita a continuación:HOG Interpolación Trilineal de Histogram Bins

EDITAR: En general, las características HOG se extraen de una ventana de 64x128 píxeles que se divide en bloques. Cada bloque consta de 2x2 celdas y una celda tiene un área de 8x8 píxeles. La extracción comienza con el cálculo de las derivadas de primer orden de la imagen, luego se calculan la orientación y la magnitud de cada píxel. Se calcula un histograma de orientación dentro del bloque para cada celda de 8x8 píxeles donde los píxeles contribuyen al histograma con el valor de magnitud, en función de la orientación del píxel, y la magnitud se interpola entre los centros de contenedores vecinos tanto en orientación como en posición. El histograma contiene 9 contenedores representa 0-180 grados con zancada de 20 grados. Una pintura general del algoritmo se puede ver aquí: http://4.bp.blogspot.com/_7NBDeKCsVHg/TKBbldI8GmI/AAAAAAAAAG0/G-OXUz1ouPQ/s1600/a1.bmp

Primero se describe la interpolación lineal en un espacio de una dimensión y luego extenderlo a 3-D. Sea h un histograma con una distancia entre bandejas (ancho de banda) b. h (x) indica el valor del histograma para el contenedor centrado en x. Supongamos que queremos interpolar un peso w en el punto x en el histograma . Deje x1 y x2 ser los dos compartimientos vecinos más cercanos del punto x tales que x1 ≤ x < x2. Linear interpolación distribuye el peso w en dos vecinos más cercanos de la siguiente linear interpolation

Let w en el punto 3-D x = [x, y, z] ser el peso a interpolar. Sean x1 y x2 los dos vectores de esquina de el cubo de histograma que contiene x, donde en cada componente x1 ≤ x < x2. Suponga que el ancho de banda del histograma a lo largo del eje x, y y z viene dado por b = [bx, by, bz]. Trilinear interpolación distribuye el peso w a los 8 centros bin circundantes como sigue: trilinear interpolation formula

.

Calculamos el histograma de las celdas y cada píxel contribuye con su valor de magnitud al histograma. Lo que entiendo de la formulación es que xey representa la ubicación de las celdas en la ventana de detección y z es el número de bin. En una ventana de detección de 64x128, hay 8x16 celdas y 9 bandejas de orientación para que nuestro histograma se represente como h (8,16,9). Si las afirmaciones anteriores son correctas, ¿(x1, y1) y (x2, y2) representan celdas anteriores y letras, respectivamente? ¿Z1 y Z2 significan los contenedores de orientación previa y de carta? ¿Qué pasa con el ancho de banda b = [bx, by, bz]?

Sería muy apreciado si alguien puede aclarar estos problemas.

Gracias.

+1

Esta parece ser la referencia original: http://lear.inrialpes.fr/people/dalal/NavneetDalalThesis.pdf – whoplisp

+0

Sí, esta es la referencia original. ¡Gracias! –

+0

Vea la página de tesis 117 para la imagen de OPs. La construcción de los histogramas se muestra en la página 95. – whoplisp

Respuesta

4

Considere (x1, y1, z1) y (x2, y2, z2) como dos puntos que abarcan un cubo que rodea el punto (x, y, z) para el que desea interpolar un valor de h. El conjunto de ocho puntos (x1, y1, z1), (x2, y1, z1), (x1, y2, z1), (x1, y1, z2), (x2, y2, z1), (x2, y1 , z2), (x1, y2, z2), (x2, y2, z2) forma el cubo completo. ¡Así que la interpolación trilineal entre (x1, y1, z1) y (x2, y2, z2) en realidad significa la interpolación entre los 8 puntos en el espacio del histograma 3D que rodea el punto que le interesa! Ahora a sus preguntas:

(x1, y1), (x2, y2) (y (x1, y2) y (x2, y1) representan los centros de contenedores en el plano (x, y). estos serían los vectores de orientación.

z1 y z2 representan dos niveles bin en la dirección de orientación, como usted dice. en combinación con los cuatro puntos en el plano de imagen esto le da un total de 8 bins.

el ancho de banda b = [bx, by, bz] es básicamente la distancia entre los centros de los contenedores vecinos en la dirección x, y y z. En tu caso, con 8 contenedores en la dirección xy 64 píxeles en esa dirección, 16 contenedores en la dirección y y 128 píxeles en la dirección y:

bx = 8 pixels 
by = 8 pixels 

Esto deja bz, para lo cual realmente necesito más datos, porque no conozco el rango completo de su degradado (es decir, menor a mayor valor posible), pero si ese rango es rg a continuación:

bz = rg/9 

En general, el ancho de banda en cualquier dirección es igual a la gama completa disponible en esa dirección, dividido por el número de contenedores en esa dirección.

Para obtener una buena explicación de la interpolación trilineal con imágenes, consulte el enlace en whoplisp's answer.

+0

Gracias por la buena explicación. Por lo tanto, digamos que estamos calculando el histograma de (1,1) índice en el bloque, y la orientación del píxel es de 75 grados y la magnitud es 13. Si no hay interpolación, este píxel contribuye a la cuarta casilla en el bloque. histograma para que nuestras variables sean x = 1, y = 1, z = 4. Por lo tanto, x1 = 0, x2 = 2, y1 = 0, y2 = 2, z1 = 3, z2 = 5 porque x1 ≤ x

+0

Debe leer los "vecinos" no como los vecinos del contenedor el nuevo valor (x, y, z), sino como el conjunto de 8 contenedores cuyos centros son los más cercanos al nuevo (x, y, z valor) Entonces, está buscando un cubo formado por los ocho centros de depósito que rodean directamente su nuevo valor. –

3

Primero veamos HOG rectangular. Una imagen se divide en unas pocas fichas, como se muestra en la página 32. La página 46 muestra un descriptor R-HOG en (f). La página 49 explica cómo se agrupan los datos.

he aprendido cómo hacer la interpolación 3D mediante la lectura de escritura hasta de Paul Burke: http://paulbourke.net/miscellaneous/interpolation/

Lo sentimos, tendría que generar mis propias imágenes, con el fin de entender lo que está pasando. Sin duda es una técnica interesante.

+0

¡Agradable! La explicación de la interpolación trilineal a la mitad de la página es muy buena. –