¿Qué es un ‘descriptor’ en el contexto de una transformación de característica invariante de escala (SIFT)?

Como persona sin entrenamiento formal real en visión artificial, pero que pasa básicamente toda su vida en ella, intentaré explicar los algoritmos de búsqueda basados ​​en SIFT en términos técnicos básicos y luego con una analogía simple:

Proceso técnico
Queremos identificar de qué es una imagen
1) Identificar puntos clave, generalmente esquinas.
2) Construya un descriptor que describa el espacio alrededor del punto clave en una materia invariable (es decir, no importa cuánto acerque o aleje, gire, traduzca la imagen, permanece igual)
3) Haga coincidir los descriptores entre imágenes para descubrir de qué está tomando una foto.

Analogía
Queremos identificar a las personas en función de sus manos.
1) Identificar las yemas de los dedos
2) Mira las ranuras en tu piel alrededor de estas yemas de los dedos, las llamaremos “huellas digitales”
3) Consulte estas “huellas digitales” de una base de datos para averiguar a quién pertenecen.

El “algoritmo” SIFT define específicamente cómo se construye el descriptor en (2) en las imágenes. La razón por la que es famosa es porque si lo piensas, es difícil encontrar un algoritmo que pueda reconocer un punto independientemente de su orientación / traducción / tamaño.

Como comentario: el documento original (http://www.cs.ubc.ca/~lowe/paper…) en realidad explica cómo hacer todos los pasos anteriores, pero el segundo paso es el que se usa continuamente ( ejemplo técnico: el uso del espacio de escala extrema para encontrar esquinas a menudo se reemplaza con la detección de esquinas FAST o la detección de esquinas harris

Hay muchas cosas que intervienen en la extracción de características SIFT. Sin realmente leer sobre SIFT, dudo que nuestras respuestas rápidas ayuden mucho. Por lo tanto, le sugiero que eche un vistazo a la página de Wikipedia para un buen punto de partida ( http://en.wikipedia.org/wiki/Sca …). Sin embargo, si tuviera que dar una respuesta rápida y de alto nivel, sería algo como lo siguiente.

Intuitivamente, en el contexto de SIFT, un descriptor es un vector de histogramas de valores de gradiente orientados localmente en diferentes puntos del espacio de escala de la imagen. El algoritmo SIFT primero determina un subconjunto “pequeño” de puntos clave en la imagen mediante la detección de los extremos del espacio de escala. Luego, a cada uno de estos puntos clave se le asigna un descriptor que explica cómo se alinean y distribuyen los gradientes locales alrededor de ese punto clave en diferentes escalas.

En pocas palabras, un descriptor SIFT es un vector de 128 elementos que describe los bordes en una subregión de la imagen. Por lo tanto, ejecutar SIFT en una imagen devolverá muchos puntos clave, cada uno de los cuales tiene un descriptor / vector asociado que describe la región alrededor de ese punto. Eche un vistazo a esta figura (que estoy seguro tiene copyright de IEEE y / o David Lowe, presumiblemente este es un uso justo). Obviamente, he omitido muchos detalles técnicos, pero creo que estabas buscando una respuesta de alto nivel.