Descriptores geométricos

Analizan la forma estructural de objetos binarios y sus contornos. Se puede utilizar para identificar objetos y reconocer patrones.

  • Área: Mide el número de pixeles de la región de interés.
  • Bounding box(bbox): Rectángulo mas pequeño capaz de albergar la región de interés(rectángulo rojo).
  • Área de bbox: Número de pixeles de la bounding box.
  • Convex hull image: Polígono convexo mas pequeño capaz de albergar la región de interés(polígono cian).
  • Área de la convex image: Número de pixeles dentro de la convex image.
  • Excentricidad: Relación de la distancias entre los focos de la elipse y su longitud del eje principal. Una elipse con excentricidad = 0 es un circulo, una con excentricidad = 1 denota un segmento de línea.
  • Diámetro equivalente: Diámetro de un circulo cuya área sea la misma que la región de interés.
  • Extensión: Ratio de pixeles en la región con respecto al numero total de pixeles contenidos en la bounding box.
  • Longitud de eje mayor: Longitud del eje mayor de una elipse que tiene el mismo segundo momento central normalizado que la región.
  • Orientación: Angulo que forma la elipse anterior con respecto al eje horizontal. El valor se expresa en grados en un rango de -90, 90.
  • Perímetro: Numero de pixeles que forman parte del contorno del objeto de interés.
  • Solidez: Proporción de pixeles que contiene el área respecto a la convex hull image. En el caso de polígonos regulares su valor será 1.

A partir de estos descriptores se pueden extraer otros de interés como:

  • Compacidad: Mide la circularidad del objeto. Se calcula como cociente entre el área y el perímetro al cuadrado.
  • Rectangularidad: Cociente entre el área del objeto y la bounding box.

Descriptores de textura

Matriz de concurrencias

A partir de la imagen(matriz de pixeles), generamos una matriz midiendo la frecuencia en la que un pixel de intensidad i es adyacente a otro pixel de intensidad j. Se define a través de un número de pixeles vecinos d y una orientación(ángulo, \alpha). De estos valores podemos extraer características como:

  • contraste
  • correlación
  • homogeneidad
  • energía
  • segundo momento angular

Scale-Invariant Feature Transform(SIFT)

SIFT sirve para detección de esquinas, bordes o texturas; es estable frente a transformaciones de posición, escala, rotación, iluminación y contraste. Consta de las siguientes fases:

  1. Detección de extremos en la escala-espacio: Se crea aplicando convoluciones entre la imagen original(i) y un kernel gaussiano(G) con diferentes escalas(\sigma).
    L(x, y, \sigma)=G(x,y,\sigma)\cdot I(x,y),
    G(x,y,\sigma)=\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{-(x^2+y^2)/2\sigma^2}
    Todas las imágenes(L) generadas forman una octave. Este proceso se repite para obtener varios octaves, donde el tamaño de cada una de ellas es la mitad de la anterior.
  2. Diferencia de Gaussianas(DOG): Restar para cada octave la imagen original.
  3. Detección de posibles puntos de interés: Cada pixel de una imagen es comparada con los 8 pixeles vecinos de la misma imagen y también con los 9 pixeles en la misma posición de la imagen anterior y posterior. Si el valor del pixel es un extremo local(mayor o menor intensidad), ese pixel se convierte en un posible punto de interés.
  4. Localización de puntos de interés: En el anterior punto se crean muchos puntos de interés por lo que en este paso nos quedamos con los puntos útiles. Se aplican series de Tylor(segundo orden) sobre cada punto de interés, se rechaza si la intensidad es menor a un determinado umbral. También eliminamos los bordes o puntos de interés que no son robustos al ruido, esto se hace con una matriz Hessiana de 2×2 que permite obtener la curvatura principal.
  5. Asignación de la orientación: localizados los puntos de interés(keypoints) necesitamos hacerlos robustos frente a las transformaciones que mencionamos anteriormente. Se selecciona un vecindario alrededor del punto de interés, se calcula la magnitud y la dirección del gradiente. A partir de las magnitudes y las direcciones del gradiente podemos construir un histograma de 36 bins, es decir de diez en diez para cubrir todas las direcciones posibles(360^{\circ}). Sumamos la magnitud a la dirección correspondiente, esto teniendo en cuenta el bin correspondiente del histograma.
  6. Descriptor del punto de interés: Se coge una ventana alrededor del punto de interés de 16×16 pixeles, luego se subdivide en 4×4 para en cada uno de estos calcular la magnitud y orientación de los pixeles obteniendo un histograma de 8 bins por lo que obtendríamos 16 histogramas de o bins, resultando en un fingerprint de 128 características.
Imagen de https://towardsdatascience.com/sift-scale-invariant-feature-transform-c7233dc60f37

Speeded-Up Robust Features(SURF)

SURF es una versión mejorada de SIFT para la detección y descripción de puntos de interés, Su principal ventaja es que es hasta 3 veces mas rápido que el algoritmo SIFT, consta de los siguientes pasos:

  1. Cálculo de la matriz Hessiana: Permite sacar la segunda derivada, lo que hace es aproximar los filtros a una estructura mas simple.
  2. Cálculo de la orientación: Localizados los puntos de interés mediante la matriz Hessiana se calcula por bloque(wavelet) las derivadas verticales y horizontales.
  3. Cálculo del descriptor SURF: Se selecciona una ventana de 20×20, obteniendo 16 regiones de 5×5. Para cada subregión se calcula la derivada wavelet y se extraen las características en un vector v obteniendo 64 características para describir el punto de interés.

Histogram of oriented gradients(HOG)

HOG utiliza la distribución de los gradientes como características, muy similar al ultimo paso de SIFT. El algoritmo consta de los siguientes pasos:

  1. Cálculo de los gradientes de la imagen: Se calculan los gradientes verticales y horizontales con un kernel de tamaño 1, también se puede aplicando el algoritmo de Sobel. Una vez obtenidas las matrices G_x y G_y (representan las aproximaciones de las derivadas de intensidades) se calcula la magnitud y dirección del gradiente.
  2. Cálculo de gradientes en celdas mas grandes(8×8): tomamos celdas de 8×8 para obtener 128 características (64 magnitud, 64 dirección), se representan en un histograma de 9 bins en los ángulos correspondientes a los ángulos 0,20,40,60,80,100,120,140,160; esta representación es mas compacta y resistente al ruido.
  3. Cálculo del histograma de gradientes de 9 bins:
    • Si la dirección coincide con la etiqueta de un bin especifico, entonces se añade íntegramente el valor de su magnitud a dicho bin.
    • Si la dirección toma valores entre dos bins, la magnitud correspondiente se añadirá a los dos bins de manera proporcional.
    • En caso que la dirección sea mayor de 180^{\circ}, la magnitud se añadirá de manera proporcional entre los bins 160 y 0.
  4. Normalización del histograma de gradientes: La idea es que el descriptor sea invariante frente a cambios de contraste o luminosidad. Para esto recorremos con un celda de 16×16, lo que nos genera un vector de características de 36 elementos ya que estamos tomando 4 histogramas de 9 bins.
  5. Cálculo de HOG: El descriptor final tendrá un total de características igual a la cantidad de celdas de 16×16 en el eje horizontal por el total de celdas de 16×16 en el eje vertical.

Local Binary Patterns(LBP)

LBP describe patrones de la imagen a nivel local, dan buenos resultados en el reconocimiento de texturas, objetos y formas. Veamos los pasos del algoritmo:

  1. Se calcula la diferencia entre los pixeles vecinos y el central.
  2. Se construye una matriz auxiliar a partir de la umbralización de las diferencias con 0s en los valores negativos y 1s en los positivos.
  3. La matriz construida da lugar a una cadena binaria que se multiplica por una matriz de referencia.
  4. Se suman todos los valores que resultan de la multiplicación anterior y se establece el valor del pixel central.

Para hacer el descriptor invariante a transformaciones de intensidad podemos variar P(número de pixeles vecinos) y R(radio de la frecuencia). LBP_{P,R}, P determina el espacio angular y R la resolución espacial.

También lo podemos hacer invariante  las rotaciones asignándole un identificador único a todas aquellas cadenas binarias que presentan el mismo número de transiciones. LBP_{P,R}^{ri}

Además se demostró que los patrones con un número de transiciones menor o igual a 2 tenían una capacidad discriminativa mucho mayor que el resto, por lo que se definieron dichos patrones como LBP uniformes. LBP_{P,R}^{riu2}