Comprensión de características elementales independientes binarias robustas ("BREVE")

14

¿Cómo se relacionan los descriptores en el algoritmo BREVE ?

¿Cómo se encuentra la imagen de la plantilla en la otra imagen? ¿Cómo comparamos los descriptores? He leído ese artículo pero no entiendo cómo lo han hecho.

Escribieron que compararon los descriptores usando la distancia de Hamming, pero ¿cómo se logra la invariancia a los cambios en la iluminación, el tamaño, etc.?

maximus
fuente

Respuestas:

15

En primer lugar, no hay tal cosa como 'plantilla' en este documento: la palabra 'plantilla (s)' tiene un significado diferente en Computer Vision.

El método utilizado en este documento es relativamente sencillo. Deja que te lo explique. Hay tres cosas importantes que debe hacer al realizar tareas como el reconocimiento de objetos, la coincidencia de imágenes, la unión de imágenes y otras similares, utilizando Características locales.

Lo primero importante es la detección ; en este paso, desea detectar puntos de interés o puntos clave, y lo que eso significa es que desea elegir puntos locales (básicamente pequeños parches) que considere interesantes en la imagen, hay muchas maneras de hacerlo; Este documento no contribuye en esta área. Sin embargo, parece que usan el detector de funciones SURF y los puntos clave CenSurE (puede buscarlos si desea obtener más información sobre ellos, no hablaré sobre este paso, excepto que usan funciones como gradientes, etc., lo que significa que si tiene una foto, es poco probable que se elija un punto en el medio del cielo como punto de interés, porque los píxeles alrededor de ese punto tienen la misma intensidad, las cosas que están 'ocupadas' tienden a elegirse como puntos de interés (p. ej. mesa / bordes de construcción / esquinas)).

Una vez realizada la detección, Descripción de la característicasigue. Conoces los puntos interesantes de la imagen y ahora quieres describirlos (básicamente quieres describir los puntos / parche alrededor de los puntos interesantes). SIFT es un descriptor de características popular. En este documento, se les ocurre uno nuevo, llamado BREVE. BREVE se basa en comparaciones, así que digamos que tenemos un parche (50 píxeles por 50 píxeles), elegimos dos puntos y comparamos las intensidades de los dos puntos, si el primer punto es más grande que el segundo, asignamos el valor ' 1 ', sino' 0 ', lo hacemos para varios pares y terminamos con una cadena de valores booleanos. Ahora la gran pregunta es "¿cómo elegir el par de puntos?", En el documento explicaron 5 formas, relativamente similares, describiré la primera. Lo que haces es elegir uniformemente (igual probabilidad) un punto de -S / 2 a S / 2, en nuestro ejemplo, dijimos que el tamaño del parche es 50, por lo que elegimos un punto entre -25 y 25. Suponiendo que la coordenada 0,0 se encuentra en el centro del parche. Así que aquí hay un ejemplo;

Queremos seleccionar el primer par, cada punto consta de coordenadas (X, Y), por lo que seleccionamos uniformemente la coordenada X del primer punto, luego la coordenada Y del primer punto, supongamos que es (10, -1) , ahora el segundo punto; seleccionamos uniformemente la coordenada X para el segundo punto y la coordenada Y para el segundo punto, supongamos que es (-2,20), ahora obtenemos los valores de intensidad para cada punto y vemos cuál tiene los valores de intensidad más grandes - si primero es mayor, asignamos el primer valor booleano a '1'; de lo contrario, asignamos '0'. Hacemos eso para muchos pares, y terminamos con un vector de valores booleanos.

* Punto muy importante: supongo que para que esto funcione, tendrá que especificar un valor semilla antes del generador aleatorio. Lo que eso significa es que desea elegir los mismos valores para cada parche; esto es muy importante porque cuando compara / empareja parches, todo el sistema se descompondrá si no se eligen exactamente de la misma manera. - espero que esto tenga sentido cuando leas el paso correspondiente.

Entonces, hacemos eso para cada punto de interés que fue detectado por el detector. Para cada punto de interés, obtendremos un vector de valores booleanos.


Ahora, para hacer coincidir dos imágenes ( tercer paso; coincidencia ), hacemos exactamente lo mismo para la otra imagen, detectamos y luego describimos el uso del BREVE. Por ejemplo, digamos que tenemos 10 puntos de interés en cada imagen (esto siempre puede funcionar si obtenemos los 10 puntos más interesantes en cada imagen), usamos BREVE para describir cada parche utilizando, por ejemplo, 50 pares, por lo que cada imagen se describirá por 10 vectores de 50 valores booleanos.

Para comparar las dos imágenes, encontramos el vecino más cercano de cada vector de la primera imagen al otro vector de la segunda imagen. Usamos la distancia de Hamming que es bastante rápida, ejemplo de distancia de Hamming

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

hammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Básicamente cuántas correspondencias incorrectas

Espero que ayude

Roronoa Zoro
fuente
Muchas gracias, pude entender el algoritmo. Pero todavía tengo algunas preguntas, ¿qué tal afines, cambios de perspectiva y cambios de iluminación? ¿La cadena de bits será similar en caso de que haya un cambio en la iluminación o en la perspectiva?
maximus
Si la cantidad de cambio de iluminación es igual para todos los píxeles, sí, seguirá funcionando, si es diferente de píxel a píxel (la iluminación de algunos píxeles aumenta, la de otros disminuye), entonces eso es un problema. La afinidad parece estar funcionando bien (en función de sus resultados), pero definitivamente llegará a un punto en el que dejará de funcionar (en realidad, en sus resultados (Fig. 3) muestran que: puede descargar las imágenes y ver lo que Wall 1 | 2, Muro 1 | 3 corresponden a). Su método no es invariante de rotación (eso no es tan difícil de ver) y lo mencionan explícitamente.
Roronoa Zoro
Gracias por tu explicación. Realmente entiendo muy bien el BREVE descriptor.