¿Qué son los puntos clave en el procesamiento de imágenes?


Cuando se utiliza OpenCV,por ejemplo, algoritmos como SURF se utilizan a menudo para detectar puntos clave. Mi pregunta es ¿cuáles son realmente estos puntos clave?

Entiendo que son una especie de "puntos de interés" en una imagen. También sé que son invariantes de escala y son circulares.

Además, descubrí que tienen orientación, pero no podía entender qué es esto en realidad. Es un ángulo, pero entre el radio y algo? ¿Puedes dar alguna explicación? Creo que necesito lo que necesito primero es algo más simple, y después será más fácil entender los papeles.

Author: rayryeng, 2015-03-19

2 answers

Esas son algunas preguntas muy buenas. Vamos a abordar cada punto uno por uno:

Mi pregunta es ¿cuáles son realmente estos puntos clave?

Los puntos clave son lo mismo que los puntos de interés. Son ubicaciones espaciales, o puntos en la imagen que definen lo que es interesanteo lo que se destaca en la imagen. La razón por la que los puntos clave son especiales es porque no importa cómo cambie la imagen... si la imagen gira, se contrae/se expande, se traduce (todo de ellos sería una transformación afín por cierto...) o está sujeto a distorsión (es decir, una transformación proyectiva o homografía), debería ser capaz de encontrar los mismos puntos clave en esta imagen modificada cuando se compara con la imagen original. Aquí hay un ejemplo de un post que escribí hace un tiempo:

Source: module 'object has no attribute 'drawMatches' opencv python

La imagen de la derecha es una imagen rotada versión de la imagen de la izquierda. También solo he mostrado las 10 mejores coincidencias entre las dos imágenes. Si echas un vistazo a los 10 mejores partidos, estos son puntos en los que probablemente querríamos centrarnos y que nos permitirían recordar de qué se trataba la imagen. Nos gustaría centrarnos en la cara del camarógrafo, así como la cámara, el trípode y algunas de las texturas interesantes en los edificios en el fondo. Ves que estos mismos puntos fueron encontrados entre las dos imágenes y estos fueron emparejados con éxito.

Por lo tanto, lo que debe quitar de esto es que estos son puntos en la imagen que son interesantes y que deben encontrarse sin importar cómo se distorsione la imagen.

Entiendo que son una especie de "puntos de interés" de una imagen. También sé que son invariantes de escala y sé que son circulares.

Tienes razón. Invariante de escala significa que no importa cómo escala la imagen, usted debe todavía ser capaz de encontrar esos puntos.


Ahora vamos a aventurarnos en la parte descriptor. Lo que hace que los keypoints sean diferentes entre frameworks es la forma en que describe estos keypoints. Estos son los que se conocen como descriptores. Cada punto de clave que detecte tiene un descriptor asociado que lo acompaña. Algunos frameworks solo hacen una detección de puntos clave, mientras que otros frameworks son simplemente un framework de descripción y no detectan los puntos. También hay algunos que hacen ambos - detectan y describen los puntos clave. SIFT y SURF son ejemplos de frameworks que detectan y describen los puntos clave.

Los descriptores se refieren principalmente tanto a la escala como a la orientación del punto clave. Los puntos clave hemos clavado ese concepto abajo, pero necesitamos la parte descriptor si es nuestro propósito para tratar de coincidir entre los puntos clave en diferentes imágenes. Ahora, ¿qué quieres decir con "circular"... eso se correlaciona con la escala en la que se detectó el punto. Tomemos por ejemplo esta imagen tomada del tutorial de la caja de herramientas de VLFeat :

Ejemplo de VLFeat

Usted ve que cualquier punto que es amarillo son puntos de interés, pero algunos de estos puntos tienen un radio de círculo diferente. Estos se ocupan de escala. Cómo funcionan los puntos de interés en un sentido general es que descomponemos la imagen en múltiples escalas. Comprobamos los puntos de interés en cada uno escala, y combinamos todos estos puntos de interés juntos para crear la salida final. Cuanto mayor sea el "círculo", mayor es la escala en la que se detectó el punto. Además, hay una línea que irradia desde el centro del círculo hasta el borde. Esta es la orientación del punto clave, que cubriremos a continuación.

También descubrí que tienen orientación, pero no podía entender lo que realmente es. Es un ángulo, pero entre el radio y algo?

Básicamente, si desea detectar puntos de teclado independientemente de la escala y la orientación, cuando hablan de orientación de los puntos de teclado, lo que realmente quieren decir es que buscan un vecindario de píxeles que rodea el punto de teclado y averiguar cómo se orienta este vecindario de píxeles o en qué dirección se orienta este parche. Depende del marco de descriptores que se mire, pero la jist general es detectar la orientación más dominante del gradiente ángulos en el parche. Esto es importante para hacer coincidir para que pueda hacer coincidir los puntos clave juntos. Echa un vistazo a la primera cifra que tengo con los dos camarógrafos - uno girado mientras que el otro no. Si usted echa un vistazo a algunos de esos puntos, ¿cómo averiguar cómo un punto coincide con otro? Podemos identificar fácilmente que la parte superior del camarógrafo como un punto de interés coincide con la versión rotada porque echamos un vistazo a los puntos que rodean el punto clave y vemos en qué orientación están todos estos puntos... y a partir de ahí, así es como se calcula la orientación.

Por lo general, cuando queremos detectar los puntos clave, solo echamos un vistazo a las ubicaciones. Sin embargo, si desea que coincida con los puntos clave entre las imágenes, entonces definitivamente necesita la escala y la orientación para facilitar esto.


Espero que esto ayude!

 74
Author: rayryeng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:46

No estoy tan familiarizado con el SURF, pero puedo hablarles de SIFT, en el que se basa el SURF. Proporcioné algunas notas sobre el SURF al final, pero no conozco todos los detalles.


SIFT tiene como objetivo encontrar ubicaciones altamente distintivas (o puntos clave) en una imagen. Las ubicaciones no son meramente ubicaciones 2D en la imagen, sino ubicaciones en el espacio de escala de la imagen, lo que significa que tienen tres coordenadas: x, y, y escala. El proceso para encontrar puntos clave de TAMIZ es:

  1. desenfocar y remuestrear la imagen con diferentes anchos de desenfoque y frecuencias de muestreo para crear un espacio de escala
  2. use el método diferencia de gaussianas para detectar blobs a diferentes escalas; los centros blob se convierten en nuestros puntos clave en un x, y, y escala
  3. asigne a cada punto clave una orientación calculando un histograma de orientaciones de gradiente para cada píxel en su vecindad y escogiendo la bandeja de orientación con el mayor número de conteos
  4. asigne a cada punto clave un vector de entidad de 128 dimensiones basado en las orientaciones de gradiente de los píxeles en 16 vecindarios locales

El paso 2 nos da invariancia de escala, el paso 3 nos da invariancia de rotación, y el paso 4 nos da una "huella dactilar" de una especie que se puede utilizar para identificar el punto clave. Juntos se pueden usar para hacer coincidir las ocurrencias de la misma característica en cualquier orientación y escala en múltiples images.


SURF tiene como objetivo lograr los mismos objetivos que SIFT, pero utiliza algunos trucos inteligentes para aumentar la velocidad.

Para la detección de blob se utiliza el método determinante del Hessian. La orientación dominante se encuentra examinando las respuestas horizontales y verticales a harr wavelets . El descriptor de característica es similar a SIFT, mirando orientaciones de píxeles en 16 vecindarios locales, pero da como resultado un vector de 64 dimensiones.

SURF las funciones se pueden calcular hasta 3 veces más rápido que las funciones de TAMIZADO, pero son igual de robustas en la mayoría de las situaciones.


Para referencia:

Un buen tutorial de TAMIZADO

Una introducción al SURF

 14
Author: eigenchris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-19 05:29:18