# HoG + SIFT # HoG: histogram of gradings Se sacan derivadas direccionales (gradientes) con los pixeles ![](https://i.imgur.com/9AZr5wj.png) Se piuede calcular R: magnitud y A: ángulo ![](https://i.imgur.com/jOw1M57.png) Se establece un histograma en 8 direcciones (una de cada gradiente): A partir de lo anterior se calcula un histograma ![](https://i.imgur.com/eJhoFVc.png) Dir 1: desde -22.5 a 22.5 (45), y se ve en la imagen cuales gradientes (pixeles) estan en ese ángulo Se define un ángulo, se busca los ángulos que están en ese rango y los gradientes que estén marcados como que estan en ese angulo y eso se suma ![](https://i.imgur.com/o445kQb.png) Esto me está dando información de los gradientes Lo que se propone es una partición de la imagen y se saca el HoG por cada parte de la imagen, para obtener un historgrama por cada parte Luego se concatenan bins son la cantidad de direcciones en las que se evalua por celda ![](https://i.imgur.com/azt9wG3.png) El gradiente se calcula como la diferencia con el pixel contiguo ## Detección de peatones Se usa sliding windows, en donde en cada parte se aplica un calsificador de si es o no un peatón ![](https://i.imgur.com/D15LGbh.png) # SIFT: scale invariant feature transform los keypoints son de 128 elementos ![](https://i.imgur.com/eisn7iZ.png) ![](https://i.imgur.com/1sw91Nk.png) Toma key points, de ciertos puntos, y la gracia es que el valor para imagenes similares en el mismo punto van a tener valores similares, es decir un SIFT parecido Son invariantes a: - escala: debido a que se pasan por el kernels y que se cambia el sigma, mientras que tambien se ajusta la ventana x1.5 - rotación: porque se usa la matriz de rotación y que se alinea a la dirección 1 - invariante a la iluminación: al calcular los gradientes, se mantienens (mas o menos) igual para toda la imagen proporcionalmente y la normalización - invariante al punto de vista, siempre y cuando no sea un cambio taaaan drástico (hata 20 grados): po rel punto clave y las particiones y la concatenación SIFT de diferentes puntos son muy dstintos ## Detección de puntos Consideremos la siguiente imagen ![](https://i.imgur.com/NnfpHvH.png) Se usa la máscara DoG (Gaussianas de diferente ancho) ![](https://i.imgur.com/Jb3ny09.png) Se hace una convolución de la máscara con la imagen y se hace para diferentes sigma, los resultados es que el punto blanco es más intenso La máscara me da la escala ![](https://i.imgur.com/bAQVuNx.png) ![](https://i.imgur.com/lyVlYyM.png) SIFT le pasa las convoluciones y donde encuentra los máximos los usa como puntos, es decir el punto es similar en la imagen y la máscara La máscara es más chica que la foto ## Cómo construir el descriptor Son 8 pasos 1. Encontrar keypoint, k(x,y , sigma^2) 2. Encontrar el ángulo A(x,y) de la matriz A (de la parte anterior) 3. Encontrar una ventana centrada en el punto clave de tamaño 1.5 signa centrada en el punto clave ![](https://i.imgur.com/TV6K6sM.png) 4. ALinear el vector a la orientación 1 ![](https://i.imgur.com/yhwF4Hw.png) 5. Definir 16 particiones para esa subparte 6. Hacerle un histograma de gradietnes para cada partición ![](https://i.imgur.com/G8GHGhl.png) 7. Concatener todos los histogramas (16x128) 8. Normalizar ![](https://i.imgur.com/pHLjbZq.png) Al tener dos fotos, buscamos cuáles pares de descriptores SIFT son parecidos ![](https://i.imgur.com/9BmQyys.png) Por ejemplo el 13 es un match falso, mientras que los otro no Para el match lo que se hace es minimizar la distancia (de algun tipo, no necesariamente euclidiana)