fbpx
Wikipedia

SURF

Speeded-Up Robust Features (SURF) es un algoritmo de visión por computador, capaz de obtener una representación visual de una imagen y extraer una información detallada y específica del contenido. Esta información es tratada para realizar operaciones como por ejemplo la localización y reconocimiento de determinados objetos, personas o caras, realización de escenas 3D, seguimiento de objetos y extracción de puntos de interés. Este algoritmo forma parte de la mencionada inteligencia artificial, capaz de entrenar un sistema para que interprete imágenes y determine el contenido. El Algoritmo SURF se presentó por primera vez por Herbert Bay en ECCV 9.ª conferencia internacional de visión por computador celebrada en Austria en mayo de 2006.

Descripción

SURF, es un detector y un descriptor de alto rendimiento de los puntos de interés de una imagen, donde se transforma la imagen en coordenadas, utilizando una técnica llamada multi-resolución. Consiste en hacer una réplica de la imagen original de forma Piramidal Gaussiana o Piramidal Laplaciana, y obtener imágenes del mismo tamaño pero con el ancho de banda reducido. De esta manera se consigue un efecto de borrosidad sobre la imagen original, llamado Scale-Space. Esta técnica asegura que los puntos de interés son invariantes en el escalado. El algoritmo SURF está basado en el predecesor SIFT.

Etapas SURF

Detección

El algoritmo de SURF está basado en los mismos principios y pasos que el SIFT, pero utiliza un esquema diferente y esto debería proveer mejores resultados: más rapidez. Con el fin de detectar puntos característicos en una escala de manera invariable SIFT utiliza filtros de aproximación en cascada. Donde la Diferencia de Gaussianos, DOG, se calcula sobre imágenes re-escaladas progresivamente.

Imagen Integral

Semejante al SDoG.

En vez de utilizar gaussianas para promediar la imagen, se utilizan cuadrados (aproximaciones). Hacer la convolución de la imagen con un cuadrado es mucho más rápido si se utiliza la imagen integral.

La imagen integral se define como:

 

donde  .

La suma de la imagen original dentro de un rectángulo D de la imagen se puede evaluar rápidamente utilizando esta imagen integral. I (x, y) sumada sobre el área seleccionada requiere 4 evaluaciones de S (x, y) (A, B, C, D)

Puntos de interés en la matriz Hessiana

SURF utiliza un detector de BLOB (Binary Large Object) basado en el Hessiano para encontrar puntos de interés. El determinante de la matriz Hessiana expresa la extensión de la respuesta y es una expresión de un cambio local alrededor del área.

El detector se basa en la matriz Hessiana, debido a su buen desempeño en la precisión. Más precisamente, se detectan estructuras BLOB en lugares donde el factor determinante es el máximo. En contraste con el detector de Hess - Laplace para Mikolajczyk y Schmid, se basa en el determinante de la Hessiana también para la selección de escala, como se hace por Lindeberg. Dado un punto   en una imagen I, la matriz H Hessiana (x, σ) en x a escala σ se define de la siguiente manera:

 

Donde   es la convolución del segundo orden derivativo   con la imagen en el punto x, y de manera similar para   y  .

Los Filtros Gaussianos son óptimos para el análisis de la escala - espacio, pero en la práctica deben ser discretizados y recortados. Esto conduce a una pérdida en la repetibilidad en rotaciones de imagen en torno a los múltiples impares de π / 4. Esta debilidad que vale para los detectores basados en Hessiano en general. La repetibilidad alcanza un máximo alrededor de múltiplos de π / 2. Esto se debe a la forma cuadrada del filtro. Sin embargo, los detectores todavía funcionan bien, la discretización tiene un ligero efecto en el rendimiento. Como los filtros reales no son ideales, en todo caso, y dado el éxito de Lowe con sus aproximaciones logarítmicas, empujan a la aproximación de la matriz Hessiana aún más con los filtros cuadrados Estos filtros de segundo orden Gaussianos aproximados pueden ser evaluados con un coste computacional muy bajo con el uso de imágenes integrales. Por lo tanto, el tiempo de cálculo es independiente del tamaño del filtro. Estas son algunas aproximaciones: Gyy y Gxy (1)

Los box filters de 9x9 son aproximaciones de un Gaussiano con σ = 1.2 y representa la escala más baja (resolución espacial más alta) para computarizado los mapas de respuesta BLOB.

Se denota Dxx, Dyy, Dxy. Las ponderaciones aplicadas a las regiones rectangulares son mantenidas por la eficiencia de la CPU.

Se calculan las imágenes: -Dxx (x, y) a partir de I (x, y) y Gxx (x, y) -Dxy (x, y) a partir de I (x, y) y Gxy (x, y ) -Dyy (x, y) a partir de I (x, y) y Gxyyx, y)

Después se genera la siguiente imagen:

 

La ponderación relativa ( ) de la respuesta del filtro es utilizado para balancear la expresión por el determinante Hessiano. Es necesario para la conservación de la energía entre los kernels Gaussianos y los kernels Gaussianos aproximados.

 

El factor de 0,9 aparece como un factor de corrección al utilizar cuadrados en vez de gaussianos. Se pueden generar varias imágenes det (H) por varios tamaños de filtros. Esto se denomina análisis multi-resolución.

|x|F es la norma de Frobenius.

Los cambios de ponderación dependen de la escala σ. En la práctica, se mantiene este factor constante. Como se mantiene constante? Normalizando la respuesta del filtro respecto a su tamaño. Esto garantiza la norma de Frobenius por cualquier otro filtro.

La aproximación del determinante de la matriz Hessiana representa la respuesta BLOB en la imagen en la localización x. Estas respuestas son almacenadas en el mapa de respuestas BLOB sobre diferentes escalas.

Seguidamente se pasa a buscar los máximos locales.

Representación espacio escala y localización de los puntos de interés

Los puntos de interés deben ser encontrados en diferentes escalas, entre otras cosas porque la búsqueda de correspondencias a menudo requiere su comparación en las imágenes donde se les ve a diferentes escalas. Los espacios escala se aplican en general como una pirámide de imagen. Las imágenes se suavizan repetidamente con un filtro gaussiano y luego, se submuestrea a fin de conseguir un nivel superior de la pirámide. Por lo tanto, se calculan varios pisos o escaleras del "det H" con varias medidas de las máscaras:

 

Después se buscan los máximos 3D en (x, y, n) utilizando el cubo de vecindad 3x3x3. A partir de ahí se procede a hacer la interpolación del máximo. Lowe resto estas capas de la pirámide para conseguir que el DOG (Diferencia de gaussianas) encuentre en las imágenes los contornos y las manchas.

En concreto, se utiliza una variante rápida introducida por Neubecker y Van Gool. Los máximos del determinante de la matriz Hessiana interpolan en escala y espacio de la imagen con el método propuesto por Brown y Lowe. La aproximación del determinante de la matriz Hessiana representa la respuesta de BLOB en la imagen a la localización x. Estas respuestas son almacenadas en el mapa de respuestas de BLOB sobre diferentes escalas.

Descripción

El objetivo de un descriptor es proporcionar una descripción única y robusta de un conjunto. Describe la distribución de intensidad del contenido dentro del punto de interés de los puntos vecinos. Es generado basándose en el área circundante de un punto de interés, por lo que, realmente, se obtiene un vector descriptor para cada punto de interés.

La dimensión del descriptor tiene un impacto directo con el tiempo de adquisición que se toma. De modo que, pocas dimensiones son indeseables por el "matching" de los puntos de interés, aunque proporciona menos distinciones que una dimensión mayor.

 
Wavelet-Haar

A continuación se demuestra todo el procedimiento que se lleva a cabo con el fin de realizar el proceso del descriptor.

El primer paso para obtener el descriptor una vez calculado el escalado es el cálculo de la orientación del punto de interés. Para obtener un punto invariante a las rotaciones, iluminación y orientación se utiliza el wavelet de Haar sobre las direcciones de x e y en una región circular de radio 6s, siendo s es la escala del punto de interés. Los puntos de interés de SURF tienen la característica principal de repetibilidad, que quiere decir que si un punto es considerado fiable, el detector encontrará el mismo punto bajo diferentes puntos de vista (escala, orientación, rotación, etc).

Se tiene una posición (x, y) para cada punto de interés.

Realizadas las respuestas Wavelet Haar con un Gaussiano centrado en el punto de interés, las respuestas son representadas como puntos en el espacio, donde la respuesta horizontal la tenemos en la abscisa y la respuesta vertical en la ordenada.

Una vez calculados para todos los vecinos, se estima la orientación dominante calculando la suma de todos los resultados dentro de una ventana deslizante que cubre un ángulo de  .

Se suman la respuesta horizontal y vertical con la ventana. El vector más largo de las ventanas es lo que define la orientación del punto de interés. El tamaño de esta ventana debe tomarse en cuenta ya que si es demasiado pequeña, tendrá un solo gradiente dominante y si es demasiado grande, tenderá a dar tamaños de vector máximo que no representan la realidad correctamente.

Ahora, el cálculo del descriptor se realiza construyendo, primeramente, una región cuadrada centrada en el punto de interés y con un tamaño de 20s (figura)

La región de interés se divide regularmente en 4x4 subregiones cuadradas, y para cada una de ellas se calculan unas características simples, el Wavelet de Haar para x e y, y se suavizan los resultados mediante un filtro Gaussiano (para ofrecer una mayor robustez a deformaciones, ruido y traslaciones), obteniendo dx y dy. El tamaño de este es de 2s, La verticalidad (si es horizontal o vertical) se define ahora respecto la orientación del punto de interés.

Para cada sub-región se suman los resultados   i  , además de calcularse su valor absoluto | dx | y | dy |. De esta manera, cada subregión proporciona un vector  , que estará compuesto por:

 

El cual es distintivo y al mismo tiempo robusto al ruido, errores y deformaciones geométricas o fotométricas. El descriptor del SURF obtiene mediante la unión de los vectores de las subregiones.

Matching up

En este apartado se detalla el paso posterior a la busca de puntos característicos que nos proporciona el detector. De este modo se pueden comparar descriptores entre pares de imágenes y buscar correspondencias entre ellas. Hay dos maneras posibles para llevarlo a término:

  • Obtener los puntos característicos de la imagen primera y su descriptor y hacer el mismo con la segunda imagen. Así se podrán comparar los descriptores de las dos imágenes y establecer las correspondencias entre puntos con algún tipo de medida.
  • Obtener los puntos característicos de la primera imagen con el descriptor. Posteriormente comparar este descriptor con los puntos de la segunda imagen donde se cree que está su pareja correspondiente.

Desarrollo de un algoritmo utilizando el método SURF

1- INICIO:

Inicialización de todas las variables globales y las funciones necesarias para ejecutar el programa.

2- BUSCAR CÁMARA:

Si hay una cámara conectada, pasa a la etapa: Capturar secuencia y la almacena en el equipo. Si no es así, se comienza la etapa de buscar, si es una recibe de una secuencia de un vídeo almacenado en el equipo.

3-BUSCAR VIDEO:

Solo entra si el algoritmo no encontró ningún dispositivo de vídeo conectado al equipo. Si se recibe una ruta de secuencia de vídeo almacenado, se pasa a la etapa de capturar secuencia. Si no se recibe ruta, se cierra.

4-CAPTURA DE IMAGEN:

Puede capturar la imagen a partir de la cámara o del vídeo almacenado. Extrae por cada iteración un cuadro. Si no hay cuadro (apuntador de la imagen es NULLA), finaliza la ejecución del programa.

5- HAY IMAGEN:

Se revisa etapa anterior, si el apuntador no marca ninguna dirección de memoria, se acaba la ejecución. Si hay imagen, pasa a la etapa de aplicar filtro para suavizar la imagen. Pueden utilizarse filtros gaussianos (Son los más nítidos), de promedio, etc...

6-MOSTRAR VIDEO:

Muestra por pantalla para cada iteración del ciclo, la imagen obtenida en la etapa de captura de imagen.

7- PAUSA VÍDEO:

Se puede parar el vídeo, y la última imagen obtenida por la etapa de captura es mostrada por pantalla en una ventana distinta a la que pasaría a la siguiente etapa.

8-SELECCIÓN ROI (Region of interest):

Con la imagen en la ventana duplicada una vez hecha la pausa, se selecciona el área de la imagen o zona. La zona seleccionada, aparecerá en otra ventana para ser cogida como imagen base en la que se podrá analizar el resto del vídeo. Esta nueva imagen será almacenada temporalmente y paralelamente al algoritmo.

9-SELECCION DE LOS PUNTOS DE LA MASCARA:

La máscara es una imagen que contiene dos colores: Blanco y negro. Esta se toma como imagen base para la búsqueda de puntos de interés en el algoritmo de SURF en pasos posteriores.

10-CONVERSIÓN DE IMAGEN A ESCALA DE GRISES:

Se convierte la imagen a escala de grises, debido a que el algoritmo necesita de la primera imagen seleccionada por el usuario y tomando como límite el área en blanco de la selección de puntos de máscara.

11- EXTRACCIÓN DE PUNTOS SURF:

Esta etapa extrae los puntos de interés ( Descriptores de imagen) de la primera imagen seleccionada por el usuario y tomando como límite el área en blanco de la selección de puntos de máscara.

12- Almacenamiento De IMAGEN DE BASE:

Guarda temporalmente las imágenes que se cogerán por una futura comparación con el resto de la secuencia de vídeo. Estas serán:

-Imagen obtenida de la selección la *ROI en escalera de grises.

-Máscara de blanco y negro de la etapa de selección de puntos de máscara.

13-COMPARACIÓN ENTRE PLANTILLAS UTILIZANDO SURF:

Las imágenes anteriores, no se modifican y se comparan con las otras de la secuencia de vídeo. En esta etapa se podrá identificar los descriptores de imagen y los descriptores de la secuencia de vídeo, trazando una línea entre ellos.

El cambio entre estos descriptores, nos determinará si el objeto seleccionado se encuentra obstruido parcialmente o si ha sido removido.

14- *CONTADOR De OBSTRUCCIÓN:

Esta etapa se utiliza por si el objeto ha sido obstruido parcialmente o totalmente por un periodo corto de tiempo. Es tendrán dos *contadors temporales:

-*Contador de obstrucción: *Contador de tiempo o ciclos que indica si el objeto ha sido *encavalcat o obstruido. *Mentres el objeto está *encavalcat, el *contador va aumentando, cuando llega a el máximo , se activa el *contador fin de programa.

-*Contador de fin de programa: Apaga el programa o muestra advertencia de si se llega a un cierto tiempo o ciclos donde el objeto todavía no está. Después de haber llegado al máximo en el *contador de obstrucción. Si ha sido una obstrucción temporal, los *contadors se reinicializan.

15- ADVERTENCIA OBJETO OBSTRUIDO:

El vídeo se detiene si se confirma si el objeto se ha perdido o ha sido obstruido por un tiempo considerable. También indica el segundo en que el algoritmo lo detecta. Gastado muestra la imagen parada de el vídeo y finalmente, acaba el programa.

16- VALORES DE LOS DESCRIPTORS:

Teniendo ya, los valores tomados en la etapa de extracción de puntos SURF, se crea una condición para determinar si el objeto está presente o no. Si se cogen 4 descriptores, X < 4, siendo X el número de descriptores analizados en cada cuadro. De este modo, se revisa si el objeto está o no.

17- LOCALIZACIÓN OBJETO. UBICACIÓN PUNTOS *FLANN.

Se encuentran las relaciones entre los puntos descriptores tanto de la imagen como de la secuencia de vídeo y se traza una línea.

Localización objeto mediante homografía.

18- *ADELANTAR EL *VIDEO EN Tu

Surf vs Sift

Presentación de los algoritmos

El reconocimiento de imágenes u objetos, es una de las aplicaciones más importantes de la visión por computador, se hace una comparación de los descriptores locales SIFT( Scale Invariant Feature Transform) [David Lowe, 1999] y SURF (Speeded-UP Feature transform) [Bay y Tuytelaars 2006]. Estos dos descriptores locales permiten detectar estructuras o puntos muy significativos de una imagen para obtener una descripción discriminativa de estas zonas a partir de sus puntos vecinos, con el objetivo de compararlas con otros descriptores utilizando medidas similares. A continuación se dan algunas características básicas de estos dos algoritmos:

SIFT ( Scale Invariant Feature Transform)

Fue publicado por David Lower en 1999 con la idea de proponer un algoritmo capaz de extraer las características de una imagen y a partir de estas describir el conjunto de objetos que estaban contenidos en ella. Este algoritmo se puede desglosar en 4 etapas:

-Detección de los extremos en la escala: la primera etapa realiza una búsqueda en las diferentes escalas y dimensiones de la imagen identificando posibles puntos de interés, invariantes a los cambios de orientación y escalado. Este procedimiento se lleva a cabo con la función DoG (Difference-of-Gaussian) dando diferentes valores a la σ, en la siguiente ecuación:

 

Donde G es la función Gaussiana y la I es la imagen. Ahora las imágenes gaussianas se restan para poder producir el DoG, después de eso se submostrea la imagen Gaussiana por un factor 2 para obtener una DoG muestreo de la imagen. Cada píxel se fija con sus vecinos con una máscara 3x3 para encontrar los máximos y mínimos locales de D (x, y, σ).

- Localización de los keypoints: los puntos claves se eligen sobre la base de medidas de estabilidad, se eliminan los puntos claves con bajo contraste o se encuentran localizados en los márgenes.

- Asignación de la orientación: la invariancia respecto a la rotación se consigue mediante la asignación a cada uno de los puntos de la orientación basada en las propiedades locales de la imagen y que representa el descriptor respecto a esta orientación.

- Descriptor De keypoints: Los gradientes locales de la imagen se miden en la región que rodea el punto clave. Estos son transformados mediante una representación que permite medir niveles de distorsión y cambios en la iluminación de forma local.

Más información SIFT

SURF (Speeded-UP Feature Transform)

Como ya hemos visto en apartados anteriores, el SURF es un algoritmo desarrollado por Herbert Bay, Tinne Tuytelaars y Luc Van Gool (2008), trabaja como un detector y descriptor de puntos de interés enfocado al reconocimiento de objetos. Este algoritmo tiene 3 etapas:

- Detección de los puntos de interés, keypoints.

- Asignación de orientación.

- Extracción de los descriptos.

Más información en los apartados de características.

Diferencias teóricas

Las diferencias principales entre los algoritmos SIFT y SURF son la velocidad de aplicación de uno respecto al otro, pero con ambos obtenemos los puntos de interés invariantes de la imagen, en escala y orientación, y los cambios en la iluminación. Las principales diferencias de datos en múltiples experimentos son que en el SIFT se guarda la posición, la escala y la orientación, ya que es posible que en una misma posición (x,y), nos encontremos varios puntos de interés a diferente escala y/o orientación σ. Pero por otro lado en el SURF, en una posición (x,y) solo aparece un único punto de interés, por lo que no se guarda la escala y orientación, sin embargo sí que registra la matriz de segundo orden y el signo del Laplaciano.

Diferencias experimentales

Experimento 1

Al hacer comparaciones se debe tener en cuenta las versiones de los algoritmos que se utilizan en cada caso, en este artículo se obtienen conclusiones con la versión 4 del SIFT y la versión 1.0.9 del SURF con código C y analizando imágenes con escala de grises. También se extraen conclusiones de resultados de experimentos con robots y respuesta de los algoritmos en plataformas Android.

El resultado de las pruebas con 109 imágenes, como ya anunciábamos antes, se ha constatado que el método SURF es mucho más rápido que el SIFT. Desde el punto de vista de puntos invariantes detectados, el algoritmo SIFT sobrepasa al SURF con más del doble de puntos detectados. Esto es causado porque el SURF permite que haya varios puntos invariantes en una misma posición con diferente escala u orientación, mientras que en el SIFT si que es posible. Este hecho hace que la distancia entre el número de características detectadas disminuiría si el SIFT no hiciera la duplicación de puntos. Las gráficas muestran que el método SIFT tiene unos 2.68 puntos invariantes más que el SURF respecto al tiempo, el SIFT utiliza unos 1.646 ms para analizar una imagen y el SURF 485 ms, es casi una tercera parte del tiempo, la eficiencia en este factor es considerable. Este factor es importante de cara al objetivo de cada proyecto, si se desea un algoritmo con el que se pueda obtener una gran cantidad de datos sería más recomendable el SIFT, pero se necesita una respuesta rápida y no damos tanta importancia al número de características detectadas, el algoritmo SURF es el más adecuado.

SIFT SURF
   

Hay que detallar que el orden de las imágenes al comparar la foto es muy importante, ya que los resultados pueden variar si se escoge una comparación con X vs Y que si se hace con Y vs X. El método SIFT muestra más puntos cuando las imágenes que se comparan tienen más puntos en común, a diferencia del SURF da más valores cuando las imágenes están más diferenciadas, valores de falso positivos. Esto sucede con todas las fotografías y permite concluir que el algoritmo SIFT tiene más perdurabilidad en el tiempo que SURF, obteniendo emparejamientos más fiables.

109 IMATGES

SIFT SURF
Puntos detectados 1292 482
Media de tiempo 1646.53 ms 485.77 ms

*Datos extraídos de un análisis hecho por A. M. Romero y M. Cazorla, en el documento "Comparativa de detectores de características visuales y su aplicación al SLAM "

Experimento 2

El siguiente estudio es un experimento de rendimiento, consumo y eficacia de los algoritmos, en los que se han realizado 100 logotipos preparados y se ha ejecutado 10 veces cada prueba de funcionalidad, con el objetivo de ver si los algoritmos modifican su comportamiento según el estado del dispositivo móvil.

Las componentes del escenario de pruebas eran las siguientes:

Base de datos: aloja una tupla compuesta por un vector de características y otro de puntos de interés.

Componente de entrenamiento: permite guardar la base de datos y los puntos de interés generados por algoritmos.

Componente de prueba: permite obtener el vector de características y los puntos de interés generados por cada descriptor (SIFT, SURF) a partir de una imagen de entrada.

Componente de búsqueda (matching): permite obtener un conjunto de correspondencias entre la tupla obtenida y las tuplas de la base de datos.

SIFT SURF
Promedio de puntos de interés 222 431
Tiempo de ejecución 2887.13 ms 959.87 ms
Consumo de batería 0.04 % 0.02 %
Memoria utilizada 102.30 KB 385.02 KB
Eficacia 0.33 0.40

En la tabla anterior, los resultados obtenidos con respecto a los puntos de interés se observa la diferencia del promedio de puntos detectados por el método SIFT muy inferior al SURF, a causa de la diferencia en las imágenes comparadas. Respecto al tiempo de ejecución el SIFT es mucho más lento que el SURF, lo que indica que para aplicaciones en tiempo real este algoritmo debería descartarse. En el consumo de batería los resultados son proporcionales al tiempo de ejecución, así pues el SIFT consume el doble que el método SURF.

Respecto a la memoria utilizada, el método SURF supera ampliamente los recursos necesarios para almacenar los vectores de características de las imágenes, casi cuatro veces más que el método SIFT. En temas de eficacia el método SIFT también es menos eficaz que el SURF, pero ligeramente más bajo.

Implementación SURF OpenCV

Lenguaje y entorno C++

C++ es escogido por las siguientes razones:

Velocidad: Procesamiento de imágenes a bajo nivel se necesita ser rápido y C++ lo facilita.

Usabilidad: Es muy típico utilizar C++ en el procesamiento digital de imagen. Pero también es útil C o código Matlab.

Portabilidad: C++ es portable a múltiples plataformas, de esta manera se puede mover por diferentes plataformas y complidadores.

Librerías para el procesamiento de imagen: OpenCv es una librería de función en C++ que permite llegar a imágenes, videos y video en directo de la webcam o otros dispositivos. Soportado por windows y linux.

Un posible entorno es Visual Basic C++ juntamente con VC++, un potente IDE, que permite crear código fácilmente, así como organizar los proyectos. OpenCV se integra muy bien con e compilador. Visual C++ y OpenCV son gratuitos, cosa que permitirá a la librería ser distribuida sin restricciones de licencia.

Diseño de la arquitectura

Imagen Integral

Descripción: El módulo crea y manipula las imágenes integradas.

Entradas: Una Imagen.

Procesos: Crea la representación de la imagen integral de imagen de entrada suministrada. Calcula la suma de píxeles sobre áreas rectangulares.

Salidas: La representación de la imagen integral.

Fast Hessian

Descripción: Encuentra la Hessiana basada en los puntos de interés / regiones en una imagen integral.

Entradas: Una representación de la imagen integral de una imagen.

Procesos: Construye determinante del Mapa de respuestas Hessiano. Realiza una supresión no máxima para localizar puntos de interés en un espacio Escala. Interpola, detecta puntos a precisión sub - píxel.

Salidas: Un vector de puntos de interés localizados con precisión.

SURF Descriptor

Descripción: Extrae componentes descriptor para un conjunto dado de puntos de interés detectados.

Entradas: Una representación de la imagen integral de una imagen, vector de puntos de interés.

Procesos: Calcula les respuestas wavelet Haar. Calcula la orientación dominante de un punto de interés. Extrae 64 - dimensional vector descriptor basado en sumas de respuestas wavelet.

Salidas: Un vector de descriptores SURF, puntos de interés.

Puntos de interés

Descripción: Almacena los datos asociados en cada punto de interés individual.

Entradas: Datos específicos de interés.

Procesos: métodos de acceso / mutador para datos.

Salidas: Ninguna

Servicios

Descripción: Módulo que contiene todas las funciones específicas no SURF.

Otras implementaciones

Nombre Lenguaje Open
Source
Descripción
C++ No Implementación original.
C++, C# Si Implementación con la documentación detallada y documento de referencia.
OpenSurfCL C++ Si Implementación libre de OpenSURF en OpenCL. Contenedores para C # y Java.
C++ Si Implementación de la extracción de característicass del SURF (2,0 OpenCV).
Matlab Matlab Interface (MEX) a código OpenCV's SURF.
OpenSURF Matlab Matlab Si Interfaz OpenSURF para Matlab
libmv SURF C++ Si Implementación de extracción y comparación.
Python mahotas Python Pac de visión para ordenador que incluye una implementación en SURF.
Dlib C++ Library C++ Si Implementación de extracción de característicass del SURF.
Pan-o-matic C++ Si Software que incluye una implementación del algoritmo SURF.
Parallel SURF (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). C++ Si Implementación Multi-threaded basada en Pan-o-matic.
C# Si C# SURF plugin para Multi-Agent Serving System.
JavaSurf Java Si Implementación Java para SURF
JOpenSURF Java Si Traducción Java de OpenSURF
ImageJ SURF Java Si Implementación SURF como ImageJ plugin con GUI con una interfaz gráfica de usuario conveniente y producción de estadísticas.
BoofCV Java Si Librería Java de visión por ordenador Java que incluye SURF.
Speeded Up SURF Si GPU Implementación GPU
CUDA SURF (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). C++ CUDA Si GPU Implementación GPU usando CUDA
Mathematica Mathematica No Implementación matemàtica.
No GPU Implementación GPU.
FPGA SURF Si FPGA Implementación FPGA.
clsurf C++ Alto rendimiento de plataforma cruzada OpenCL implementada con SURF en comparación de los vecinos más cercanos.

Estudios e implementaciones

  • A. M. Romero and M. Cazorla, "Comparativa de detectores de característicasvisuales y su aplicación al SLAM ", X Workshop de agentes físicos, Setiembre 2009, Cáceres
  • P. M. Panchal, S. R. Panchal, S. K. Shah, "A Comparison of SIFT and SURF ", International Journal of Innovative Research in Computer and Communication Engineering

Vol. 1, Issue 2, April 2013

  • David Gossow, Peter Decker i Dietrich Paulus, "An Evaluation of Open Source SURF Implementations", Lecture Notes in Computer Science, 2011, Volume 6556/2011, 169-179
    • Libraries: dlib, OpenCV, and Pan-o-Matic
  • Peter Abeles, A comparison of several C/C++ and Java implementations for speed and stability. Nov. 2011
    • Libraries: OpenSURF, OpenCV, Pan-o-Matic, Original, BoofCV, JavaSURF, i JOpenSURF.

Véase también

Referencias

Enlaces externos

  • Herbert Bay, Tinne Tuytelaars, and Luc Van Gool, "Speeded Up Robust Features", ETH Zurich, Katholieke Universiteit Leuven
  • Andrea Maricela Plaza Cordero, Jorge Luis Zambrano Martínez, " Estudio y Selección de las Técnicas SIFT, SURF y ASIFT de Reconocimiento de Imágenes para el Diseño de un Prototipo en Dispositivos Móviles" , 15º Concurso de Trabajos Estudiantiles, EST 2012
  • A. M. Romero and M. Cazorla, "Comparativa de detectores de característicasvisuales y su aplicación al SLAM ", X Workshop de agentes físicos, Setiembre 2009, Cáceres
  • P. M. Panchal, S. R. Panchal, S. K. Shah, "A Comparison of SIFT and SURF ", International Journal of Innovative Research in Computer and Communication Engineering Vol. 1, Issue 2, April 2013
  • Andrea Maricela Plaza Cordero, Jorge Luis Zambrano-Martinez, " Estudio y Selección de las Técnicas SIFT, SURF y ASIFT de Reconocimiento de Imágenes para el Diseño de un Prototipo en Dispositivos Móviles", Ingeniería de Sistemas Cuenca - Tesis Pregrado, Universidad Politécnica Salesiana, Issue December 2011
  • Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool "SURF: Speeded Up Robust Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346--359, 2008
  • Christopher Evans "Notes on the OpenSURF Library", MSc Computer Science, University of Bristol
  • SURF on Github
  • (en inglés)
  • First publication of Speeded Up Robust Features (2006) (en inglés)
  • (en inglés)
  • OpenCv https://achuwilson.wordpress.com/2011/08/05/object-detection-using-surf-in-opencv-part-1/ (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  •   Datos: Q2208247

surf, este, artículo, sobre, informática, detectaron, varios, problemas, favor, edítalo, para, mejorarlo, carece, fuentes, referencias, aparezcan, fuente, acreditada, requiere, revisión, ortográfica, gramatical, este, aviso, puesto, mayo, 2017, speeded, robust. En este articulo sobre informatica se detectaron varios problemas Por favor editalo para mejorarlo Carece de fuentes o referencias que aparezcan en una fuente acreditada Requiere una revision ortografica y gramatical Este aviso fue puesto el 26 de mayo de 2017 Speeded Up Robust Features SURF es un algoritmo de vision por computador capaz de obtener una representacion visual de una imagen y extraer una informacion detallada y especifica del contenido Esta informacion es tratada para realizar operaciones como por ejemplo la localizacion y reconocimiento de determinados objetos personas o caras realizacion de escenas 3D seguimiento de objetos y extraccion de puntos de interes Este algoritmo forma parte de la mencionada inteligencia artificial capaz de entrenar un sistema para que interprete imagenes y determine el contenido El Algoritmo SURF se presento por primera vez por Herbert Bay en ECCV 9 ª conferencia internacional de vision por computador celebrada en Austria en mayo de 2006 Indice 1 Descripcion 2 Etapas SURF 2 1 Deteccion 2 1 1 Imagen Integral 2 1 2 Puntos de interes en la matriz Hessiana 2 1 3 Representacion espacio escala y localizacion de los puntos de interes 2 2 Descripcion 2 3 Matching up 3 Desarrollo de un algoritmo utilizando el metodo SURF 4 Surf vs Sift 4 1 Presentacion de los algoritmos 4 2 Diferencias teoricas 4 3 Diferencias experimentales 4 3 1 Experimento 1 4 3 2 Experimento 2 5 Implementacion SURF OpenCV 5 1 Lenguaje y entorno C 5 2 Diseno de la arquitectura 5 2 1 Imagen Integral 5 2 2 Fast Hessian 5 2 3 SURF Descriptor 5 2 4 Puntos de interes 5 2 5 Servicios 5 3 Otras implementaciones 6 Estudios e implementaciones 7 Vease tambien 8 Referencias 9 Enlaces externosDescripcion EditarSURF es un detector y un descriptor de alto rendimiento de los puntos de interes de una imagen donde se transforma la imagen en coordenadas utilizando una tecnica llamada multi resolucion Consiste en hacer una replica de la imagen original de forma Piramidal Gaussiana o Piramidal Laplaciana y obtener imagenes del mismo tamano pero con el ancho de banda reducido De esta manera se consigue un efecto de borrosidad sobre la imagen original llamado Scale Space Esta tecnica asegura que los puntos de interes son invariantes en el escalado El algoritmo SURF esta basado en el predecesor SIFT Etapas SURF EditarDeteccion Editar El algoritmo de SURF esta basado en los mismos principios y pasos que el SIFT pero utiliza un esquema diferente y esto deberia proveer mejores resultados mas rapidez Con el fin de detectar puntos caracteristicos en una escala de manera invariable SIFT utiliza filtros de aproximacion en cascada Donde la Diferencia de Gaussianos DOG se calcula sobre imagenes re escaladas progresivamente Imagen Integral Editar Semejante al SDoG En vez de utilizar gaussianas para promediar la imagen se utilizan cuadrados aproximaciones Hacer la convolucion de la imagen con un cuadrado es mucho mas rapido si se utiliza la imagen integral La imagen integral se define como I S x i 0 i lt x j 0 j lt y I x y displaystyle I Sigma mathbf x sum i 0 i lt x sum j 0 j lt y I x y donde x x y displaystyle mathbf x x y La suma de la imagen original dentro de un rectangulo D de la imagen se puede evaluar rapidamente utilizando esta imagen integral I x y sumada sobre el area seleccionada requiere 4 evaluaciones de S x y A B C D Puntos de interes en la matriz Hessiana Editar SURF utiliza un detector de BLOB Binary Large Object basado en el Hessiano para encontrar puntos de interes El determinante de la matriz Hessiana expresa la extension de la respuesta y es una expresion de un cambio local alrededor del area El detector se basa en la matriz Hessiana debido a su buen desempeno en la precision Mas precisamente se detectan estructuras BLOB en lugares donde el factor determinante es el maximo En contraste con el detector de Hess Laplace para Mikolajczyk y Schmid se basa en el determinante de la Hessiana tambien para la seleccion de escala como se hace por Lindeberg Dado un punto x x y displaystyle mathbf x x y en una imagen I la matriz H Hessiana x s en x a escala s se define de la siguiente manera H x s L x x x s L x y x s L x y x s L y y x s displaystyle H x sigma begin pmatrix Lxx x sigma amp Lxy x sigma Lxy x sigma amp Lyy x sigma end pmatrix Donde L x x x s displaystyle Lxx x sigma es la convolucion del segundo orden derivativo x x 2 g s displaystyle partial x partial x 2 g sigma con la imagen en el punto x y de manera similar para L x y x s displaystyle Lxy x sigma y L y y x s displaystyle Lyy x sigma Los Filtros Gaussianos son optimos para el analisis de la escala espacio pero en la practica deben ser discretizados y recortados Esto conduce a una perdida en la repetibilidad en rotaciones de imagen en torno a los multiples impares de p 4 Esta debilidad que vale para los detectores basados en Hessiano en general La repetibilidad alcanza un maximo alrededor de multiplos de p 2 Esto se debe a la forma cuadrada del filtro Sin embargo los detectores todavia funcionan bien la discretizacion tiene un ligero efecto en el rendimiento Como los filtros reales no son ideales en todo caso y dado el exito de Lowe con sus aproximaciones logaritmicas empujan a la aproximacion de la matriz Hessiana aun mas con los filtros cuadrados Estos filtros de segundo orden Gaussianos aproximados pueden ser evaluados con un coste computacional muy bajo con el uso de imagenes integrales Por lo tanto el tiempo de calculo es independiente del tamano del filtro Estas son algunas aproximaciones Gyy y Gxy 1 Los box filters de 9x9 son aproximaciones de un Gaussiano con s 1 2 y representa la escala mas baja resolucion espacial mas alta para computarizado los mapas de respuesta BLOB Se denota Dxx Dyy Dxy Las ponderaciones aplicadas a las regiones rectangulares son mantenidas por la eficiencia de la CPU Se calculan las imagenes Dxx x y a partir de I x y y Gxx x y Dxy x y a partir de I x y y Gxy x y Dyy x y a partir de I x y y Gxyyx y Despues se genera la siguiente imagen D e t H a p r o x D x x D y y w D x y 2 displaystyle Det Haprox DxxDyy wDxy 2 La ponderacion relativa w displaystyle w de la respuesta del filtro es utilizado para balancear la expresion por el determinante Hessiano Es necesario para la conservacion de la energia entre los kernels Gaussianos y los kernels Gaussianos aproximados w L x y 1 2 F D y y 9 F L y y 1 2 F D x y 9 F displaystyle w frac Lxy 1 2 F Dyy 9 F Lyy 1 2 F Dxy 9 F El factor de 0 9 aparece como un factor de correccion al utilizar cuadrados en vez de gaussianos Se pueden generar varias imagenes det H por varios tamanos de filtros Esto se denomina analisis multi resolucion x F es la norma de Frobenius Los cambios de ponderacion dependen de la escala s En la practica se mantiene este factor constante Como se mantiene constante Normalizando la respuesta del filtro respecto a su tamano Esto garantiza la norma de Frobenius por cualquier otro filtro La aproximacion del determinante de la matriz Hessiana representa la respuesta BLOB en la imagen en la localizacion x Estas respuestas son almacenadas en el mapa de respuestas BLOB sobre diferentes escalas Seguidamente se pasa a buscar los maximos locales Representacion espacio escala y localizacion de los puntos de interes Editar Los puntos de interes deben ser encontrados en diferentes escalas entre otras cosas porque la busqueda de correspondencias a menudo requiere su comparacion en las imagenes donde se les ve a diferentes escalas Los espacios escala se aplican en general como una piramide de imagen Las imagenes se suavizan repetidamente con un filtro gaussiano y luego se submuestrea a fin de conseguir un nivel superior de la piramide Por lo tanto se calculan varios pisos o escaleras del det H con varias medidas de las mascaras s a p p r o x C u r r e n t f i l t e r s i z e B a s e F i l t e r s c a l e B a s e F i l t e r S i z e displaystyle sigma approx Currentfiltersize left frac left BaseFilterscale right BaseFilterSize right Despues se buscan los maximos 3D en x y n utilizando el cubo de vecindad 3x3x3 A partir de ahi se procede a hacer la interpolacion del maximo Lowe resto estas capas de la piramide para conseguir que el DOG Diferencia de gaussianas encuentre en las imagenes los contornos y las manchas En concreto se utiliza una variante rapida introducida por Neubecker y Van Gool Los maximos del determinante de la matriz Hessiana interpolan en escala y espacio de la imagen con el metodo propuesto por Brown y Lowe La aproximacion del determinante de la matriz Hessiana representa la respuesta de BLOB en la imagen a la localizacion x Estas respuestas son almacenadas en el mapa de respuestas de BLOB sobre diferentes escalas Descripcion Editar El objetivo de un descriptor es proporcionar una descripcion unica y robusta de un conjunto Describe la distribucion de intensidad del contenido dentro del punto de interes de los puntos vecinos Es generado basandose en el area circundante de un punto de interes por lo que realmente se obtiene un vector descriptor para cada punto de interes La dimension del descriptor tiene un impacto directo con el tiempo de adquisicion que se toma De modo que pocas dimensiones son indeseables por el matching de los puntos de interes aunque proporciona menos distinciones que una dimension mayor Wavelet Haar A continuacion se demuestra todo el procedimiento que se lleva a cabo con el fin de realizar el proceso del descriptor El primer paso para obtener el descriptor una vez calculado el escalado es el calculo de la orientacion del punto de interes Para obtener un punto invariante a las rotaciones iluminacion y orientacion se utiliza el wavelet de Haar sobre las direcciones de x e y en una region circular de radio 6s siendo s es la escala del punto de interes Los puntos de interes de SURF tienen la caracteristica principal de repetibilidad que quiere decir que si un punto es considerado fiable el detector encontrara el mismo punto bajo diferentes puntos de vista escala orientacion rotacion etc Se tiene una posicion x y para cada punto de interes Realizadas las respuestas Wavelet Haar con un Gaussiano centrado en el punto de interes las respuestas son representadas como puntos en el espacio donde la respuesta horizontal la tenemos en la abscisa y la respuesta vertical en la ordenada Una vez calculados para todos los vecinos se estima la orientacion dominante calculando la suma de todos los resultados dentro de una ventana deslizante que cubre un angulo de p 3 displaystyle pi 3 Se suman la respuesta horizontal y vertical con la ventana El vector mas largo de las ventanas es lo que define la orientacion del punto de interes El tamano de esta ventana debe tomarse en cuenta ya que si es demasiado pequena tendra un solo gradiente dominante y si es demasiado grande tendera a dar tamanos de vector maximo que no representan la realidad correctamente Ahora el calculo del descriptor se realiza construyendo primeramente una region cuadrada centrada en el punto de interes y con un tamano de 20s figura La region de interes se divide regularmente en 4x4 subregiones cuadradas y para cada una de ellas se calculan unas caracteristicas simples el Wavelet de Haar para x e y y se suavizan los resultados mediante un filtro Gaussiano para ofrecer una mayor robustez a deformaciones ruido y traslaciones obteniendo dx y dy El tamano de este es de 2s La verticalidad si es horizontal o vertical se define ahora respecto la orientacion del punto de interes Para cada sub region se suman los resultados d x displaystyle dx i d y displaystyle dy ademas de calcularse su valor absoluto dx y dy De esta manera cada subregion proporciona un vector v displaystyle v que estara compuesto por v d x d y d x d y displaystyle v sum dx sum dy sum dx sum dy El cual es distintivo y al mismo tiempo robusto al ruido errores y deformaciones geometricas o fotometricas El descriptor del SURF obtiene mediante la union de los vectores de las subregiones Matching up Editar En este apartado se detalla el paso posterior a la busca de puntos caracteristicos que nos proporciona el detector De este modo se pueden comparar descriptores entre pares de imagenes y buscar correspondencias entre ellas Hay dos maneras posibles para llevarlo a termino Obtener los puntos caracteristicos de la imagen primera y su descriptor y hacer el mismo con la segunda imagen Asi se podran comparar los descriptores de las dos imagenes y establecer las correspondencias entre puntos con algun tipo de medida Obtener los puntos caracteristicos de la primera imagen con el descriptor Posteriormente comparar este descriptor con los puntos de la segunda imagen donde se cree que esta su pareja correspondiente Desarrollo de un algoritmo utilizando el metodo SURF Editar1 INICIO Inicializacion de todas las variables globales y las funciones necesarias para ejecutar el programa 2 BUSCAR CAMARA Si hay una camara conectada pasa a la etapa Capturar secuencia y la almacena en el equipo Si no es asi se comienza la etapa de buscar si es una recibe de una secuencia de un video almacenado en el equipo 3 BUSCAR VIDEO Solo entra si el algoritmo no encontro ningun dispositivo de video conectado al equipo Si se recibe una ruta de secuencia de video almacenado se pasa a la etapa de capturar secuencia Si no se recibe ruta se cierra 4 CAPTURA DE IMAGEN Puede capturar la imagen a partir de la camara o del video almacenado Extrae por cada iteracion un cuadro Si no hay cuadro apuntador de la imagen es NULLA finaliza la ejecucion del programa 5 HAY IMAGEN Se revisa etapa anterior si el apuntador no marca ninguna direccion de memoria se acaba la ejecucion Si hay imagen pasa a la etapa de aplicar filtro para suavizar la imagen Pueden utilizarse filtros gaussianos Son los mas nitidos de promedio etc 6 MOSTRAR VIDEO Muestra por pantalla para cada iteracion del ciclo la imagen obtenida en la etapa de captura de imagen 7 PAUSA VIDEO Se puede parar el video y la ultima imagen obtenida por la etapa de captura es mostrada por pantalla en una ventana distinta a la que pasaria a la siguiente etapa 8 SELECCIoN ROI Region of interest Con la imagen en la ventana duplicada una vez hecha la pausa se selecciona el area de la imagen o zona La zona seleccionada aparecera en otra ventana para ser cogida como imagen base en la que se podra analizar el resto del video Esta nueva imagen sera almacenada temporalmente y paralelamente al algoritmo 9 SELECCION DE LOS PUNTOS DE LA MASCARA La mascara es una imagen que contiene dos colores Blanco y negro Esta se toma como imagen base para la busqueda de puntos de interes en el algoritmo de SURF en pasos posteriores 10 CONVERSIoN DE IMAGEN A ESCALA DE GRISES Se convierte la imagen a escala de grises debido a que el algoritmo necesita de la primera imagen seleccionada por el usuario y tomando como limite el area en blanco de la seleccion de puntos de mascara 11 EXTRACCIoN DE PUNTOS SURF Esta etapa extrae los puntos de interes Descriptores de imagen de la primera imagen seleccionada por el usuario y tomando como limite el area en blanco de la seleccion de puntos de mascara 12 Almacenamiento De IMAGEN DE BASE Guarda temporalmente las imagenes que se cogeran por una futura comparacion con el resto de la secuencia de video Estas seran Imagen obtenida de la seleccion la ROI en escalera de grises Mascara de blanco y negro de la etapa de seleccion de puntos de mascara 13 COMPARACIoN ENTRE PLANTILLAS UTILIZANDO SURF Las imagenes anteriores no se modifican y se comparan con las otras de la secuencia de video En esta etapa se podra identificar los descriptores de imagen y los descriptores de la secuencia de video trazando una linea entre ellos El cambio entre estos descriptores nos determinara si el objeto seleccionado se encuentra obstruido parcialmente o si ha sido removido 14 CONTADOR De OBSTRUCCIoN Esta etapa se utiliza por si el objeto ha sido obstruido parcialmente o totalmente por un periodo corto de tiempo Es tendran dos contadors temporales Contador de obstruccion Contador de tiempo o ciclos que indica si el objeto ha sido encavalcat o obstruido Mentres el objeto esta encavalcat el contador va aumentando cuando llega a el maximo se activa el contador fin de programa Contador de fin de programa Apaga el programa o muestra advertencia de si se llega a un cierto tiempo o ciclos donde el objeto todavia no esta Despues de haber llegado al maximo en el contador de obstruccion Si ha sido una obstruccion temporal los contadors se reinicializan 15 ADVERTENCIA OBJETO OBSTRUIDO El video se detiene si se confirma si el objeto se ha perdido o ha sido obstruido por un tiempo considerable Tambien indica el segundo en que el algoritmo lo detecta Gastado muestra la imagen parada de el video y finalmente acaba el programa 16 VALORES DE LOS DESCRIPTORS Teniendo ya los valores tomados en la etapa de extraccion de puntos SURF se crea una condicion para determinar si el objeto esta presente o no Si se cogen 4 descriptores X lt 4 siendo X el numero de descriptores analizados en cada cuadro De este modo se revisa si el objeto esta o no 17 LOCALIZACIoN OBJETO UBICACIoN PUNTOS FLANN Se encuentran las relaciones entre los puntos descriptores tanto de la imagen como de la secuencia de video y se traza una linea Localizacion objeto mediante homografia 18 ADELANTAR EL VIDEO EN TuSurf vs Sift EditarPresentacion de los algoritmos Editar El reconocimiento de imagenes u objetos es una de las aplicaciones mas importantes de la vision por computador se hace una comparacion de los descriptores locales SIFT Scale Invariant Feature Transform David Lowe 1999 y SURF Speeded UP Feature transform Bay y Tuytelaars 2006 Estos dos descriptores locales permiten detectar estructuras o puntos muy significativos de una imagen para obtener una descripcion discriminativa de estas zonas a partir de sus puntos vecinos con el objetivo de compararlas con otros descriptores utilizando medidas similares A continuacion se dan algunas caracteristicas basicas de estos dos algoritmos SIFT Scale Invariant Feature Transform Fue publicado por David Lower en 1999 con la idea de proponer un algoritmo capaz de extraer las caracteristicas de una imagen y a partir de estas describir el conjunto de objetos que estaban contenidos en ella Este algoritmo se puede desglosar en 4 etapas Deteccion de los extremos en la escala la primera etapa realiza una busqueda en las diferentes escalas y dimensiones de la imagen identificando posibles puntos de interes invariantes a los cambios de orientacion y escalado Este procedimiento se lleva a cabo con la funcion DoG Difference of Gaussian dando diferentes valores a la s en la siguiente ecuacion D x y s L x y k i s L x y k j s displaystyle D left x y sigma right L left x y k i sigma right L left x y k j sigma right Donde G es la funcion Gaussiana y la I es la imagen Ahora las imagenes gaussianas se restan para poder producir el DoG despues de eso se submostrea la imagen Gaussiana por un factor 2 para obtener una DoG muestreo de la imagen Cada pixel se fija con sus vecinos con una mascara 3x3 para encontrar los maximos y minimos locales de D x y s Localizacion de los keypoints los puntos claves se eligen sobre la base de medidas de estabilidad se eliminan los puntos claves con bajo contraste o se encuentran localizados en los margenes Asignacion de la orientacion la invariancia respecto a la rotacion se consigue mediante la asignacion a cada uno de los puntos de la orientacion basada en las propiedades locales de la imagen y que representa el descriptor respecto a esta orientacion Descriptor De keypoints Los gradientes locales de la imagen se miden en la region que rodea el punto clave Estos son transformados mediante una representacion que permite medir niveles de distorsion y cambios en la iluminacion de forma local Mas informacion SIFTSURF Speeded UP Feature Transform Como ya hemos visto en apartados anteriores el SURF es un algoritmo desarrollado por Herbert Bay Tinne Tuytelaars y Luc Van Gool 2008 trabaja como un detector y descriptor de puntos de interes enfocado al reconocimiento de objetos Este algoritmo tiene 3 etapas Deteccion de los puntos de interes keypoints Asignacion de orientacion Extraccion de los descriptos Mas informacion en los apartados de caracteristicas Diferencias teoricas Editar Las diferencias principales entre los algoritmos SIFT y SURF son la velocidad de aplicacion de uno respecto al otro pero con ambos obtenemos los puntos de interes invariantes de la imagen en escala y orientacion y los cambios en la iluminacion Las principales diferencias de datos en multiples experimentos son que en el SIFT se guarda la posicion la escala y la orientacion ya que es posible que en una misma posicion x y nos encontremos varios puntos de interes a diferente escala y o orientacion s Pero por otro lado en el SURF en una posicion x y solo aparece un unico punto de interes por lo que no se guarda la escala y orientacion sin embargo si que registra la matriz de segundo orden y el signo del Laplaciano Diferencias experimentales Editar Experimento 1 Editar Al hacer comparaciones se debe tener en cuenta las versiones de los algoritmos que se utilizan en cada caso en este articulo se obtienen conclusiones con la version 4 del SIFT y la version 1 0 9 del SURF con codigo C y analizando imagenes con escala de grises Tambien se extraen conclusiones de resultados de experimentos con robots y respuesta de los algoritmos en plataformas Android El resultado de las pruebas con 109 imagenes como ya anunciabamos antes se ha constatado que el metodo SURF es mucho mas rapido que el SIFT Desde el punto de vista de puntos invariantes detectados el algoritmo SIFT sobrepasa al SURF con mas del doble de puntos detectados Esto es causado porque el SURF permite que haya varios puntos invariantes en una misma posicion con diferente escala u orientacion mientras que en el SIFT si que es posible Este hecho hace que la distancia entre el numero de caracteristicas detectadas disminuiria si el SIFT no hiciera la duplicacion de puntos Las graficas muestran que el metodo SIFT tiene unos 2 68 puntos invariantes mas que el SURF respecto al tiempo el SIFT utiliza unos 1 646 ms para analizar una imagen y el SURF 485 ms es casi una tercera parte del tiempo la eficiencia en este factor es considerable Este factor es importante de cara al objetivo de cada proyecto si se desea un algoritmo con el que se pueda obtener una gran cantidad de datos seria mas recomendable el SIFT pero se necesita una respuesta rapida y no damos tanta importancia al numero de caracteristicas detectadas el algoritmo SURF es el mas adecuado SIFT SURF Hay que detallar que el orden de las imagenes al comparar la foto es muy importante ya que los resultados pueden variar si se escoge una comparacion con X vs Y que si se hace con Y vs X El metodo SIFT muestra mas puntos cuando las imagenes que se comparan tienen mas puntos en comun a diferencia del SURF da mas valores cuando las imagenes estan mas diferenciadas valores de falso positivos Esto sucede con todas las fotografias y permite concluir que el algoritmo SIFT tiene mas perdurabilidad en el tiempo que SURF obteniendo emparejamientos mas fiables 109 IMATGES SIFT SURFPuntos detectados 1292 482Media de tiempo 1646 53 ms 485 77 ms Datos extraidos de un analisis hecho por A M Romero y M Cazorla en el documento Comparativa de detectores de caracteristicas visuales y su aplicacion al SLAM Experimento 2 Editar El siguiente estudio es un experimento de rendimiento consumo y eficacia de los algoritmos en los que se han realizado 100 logotipos preparados y se ha ejecutado 10 veces cada prueba de funcionalidad con el objetivo de ver si los algoritmos modifican su comportamiento segun el estado del dispositivo movil Las componentes del escenario de pruebas eran las siguientes Base de datos aloja una tupla compuesta por un vector de caracteristicas y otro de puntos de interes Componente de entrenamiento permite guardar la base de datos y los puntos de interes generados por algoritmos Componente de prueba permite obtener el vector de caracteristicas y los puntos de interes generados por cada descriptor SIFT SURF a partir de una imagen de entrada Componente de busqueda matching permite obtener un conjunto de correspondencias entre la tupla obtenida y las tuplas de la base de datos SIFT SURFPromedio de puntos de interes 222 431Tiempo de ejecucion 2887 13 ms 959 87 msConsumo de bateria 0 04 0 02 Memoria utilizada 102 30 KB 385 02 KBEficacia 0 33 0 40En la tabla anterior los resultados obtenidos con respecto a los puntos de interes se observa la diferencia del promedio de puntos detectados por el metodo SIFT muy inferior al SURF a causa de la diferencia en las imagenes comparadas Respecto al tiempo de ejecucion el SIFT es mucho mas lento que el SURF lo que indica que para aplicaciones en tiempo real este algoritmo deberia descartarse En el consumo de bateria los resultados son proporcionales al tiempo de ejecucion asi pues el SIFT consume el doble que el metodo SURF Respecto a la memoria utilizada el metodo SURF supera ampliamente los recursos necesarios para almacenar los vectores de caracteristicas de las imagenes casi cuatro veces mas que el metodo SIFT En temas de eficacia el metodo SIFT tambien es menos eficaz que el SURF pero ligeramente mas bajo Implementacion SURF OpenCV EditarLenguaje y entorno C Editar C es escogido por las siguientes razones Velocidad Procesamiento de imagenes a bajo nivel se necesita ser rapido y C lo facilita Usabilidad Es muy tipico utilizar C en el procesamiento digital de imagen Pero tambien es util C o codigo Matlab Portabilidad C es portable a multiples plataformas de esta manera se puede mover por diferentes plataformas y complidadores Librerias para el procesamiento de imagen OpenCv es una libreria de funcion en C que permite llegar a imagenes videos y video en directo de la webcam o otros dispositivos Soportado por windows y linux Un posible entorno es Visual Basic C juntamente con VC un potente IDE que permite crear codigo facilmente asi como organizar los proyectos OpenCV se integra muy bien con e compilador Visual C y OpenCV son gratuitos cosa que permitira a la libreria ser distribuida sin restricciones de licencia Diseno de la arquitectura Editar Imagen Integral Editar Descripcion El modulo crea y manipula las imagenes integradas Entradas Una Imagen Procesos Crea la representacion de la imagen integral de imagen de entrada suministrada Calcula la suma de pixeles sobre areas rectangulares Salidas La representacion de la imagen integral Fast Hessian Editar Descripcion Encuentra la Hessiana basada en los puntos de interes regiones en una imagen integral Entradas Una representacion de la imagen integral de una imagen Procesos Construye determinante del Mapa de respuestas Hessiano Realiza una supresion no maxima para localizar puntos de interes en un espacio Escala Interpola detecta puntos a precision sub pixel Salidas Un vector de puntos de interes localizados con precision SURF Descriptor Editar Descripcion Extrae componentes descriptor para un conjunto dado de puntos de interes detectados Entradas Una representacion de la imagen integral de una imagen vector de puntos de interes Procesos Calcula les respuestas wavelet Haar Calcula la orientacion dominante de un punto de interes Extrae 64 dimensional vector descriptor basado en sumas de respuestas wavelet Salidas Un vector de descriptores SURF puntos de interes Puntos de interes Editar Descripcion Almacena los datos asociados en cada punto de interes individual Entradas Datos especificos de interes Procesos metodos de acceso mutador para datos Salidas Ninguna Servicios Editar Descripcion Modulo que contiene todas las funciones especificas no SURF Otras implementaciones Editar Nombre Lenguaje OpenSource DescripcionOriginal C No Implementacion original OpenSURF C C Si Implementacion con la documentacion detallada y documento de referencia OpenSurfCL C Si Implementacion libre de OpenSURF en OpenCL Contenedores para C y Java OpenCV SURF C Si Implementacion de la extraccion de caracteristicass del SURF 2 0 OpenCV SURFmex Matlab Matlab Interface MEX a codigo OpenCV s SURF OpenSURF Matlab Matlab Si Interfaz OpenSURF para Matlablibmv SURF C Si Implementacion de extraccion y comparacion Python mahotas Python Pac de vision para ordenador que incluye una implementacion en SURF Dlib C Library C Si Implementacion de extraccion de caracteristicass del SURF Pan o matic C Si Software que incluye una implementacion del algoritmo SURF Parallel SURF enlace roto disponible en Internet Archive vease el historial la primera version y la ultima C Si Implementacion Multi threaded basada en Pan o matic ProcessorSURF C Si C SURF plugin para Multi Agent Serving System JavaSurf Java Si Implementacion Java para SURFJOpenSURF Java Si Traduccion Java de OpenSURFImageJ SURF Java Si Implementacion SURF como ImageJ plugin con GUI con una interfaz grafica de usuario conveniente y produccion de estadisticas BoofCV Java Si Libreria Java de vision por ordenador Java que incluye SURF Speeded Up SURF Si GPU Implementacion GPUCUDA SURF enlace roto disponible en Internet Archive vease el historial la primera version y la ultima C CUDA Si GPU Implementacion GPU usando CUDAMathematica Mathematica No Implementacion matematica GPU SURF No GPU Implementacion GPU FPGA SURF Si FPGA Implementacion FPGA clsurf C Alto rendimiento de plataforma cruzada OpenCL implementada con SURF en comparacion de los vecinos mas cercanos Estudios e implementaciones EditarA M Romero and M Cazorla Comparativa de detectores de caracteristicasvisuales y su aplicacion al SLAM X Workshop de agentes fisicos Setiembre 2009 Caceres P M Panchal S R Panchal S K Shah A Comparison of SIFT and SURF International Journal of Innovative Research in Computer and Communication EngineeringVol 1 Issue 2 April 2013 David Gossow Peter Decker i Dietrich Paulus An Evaluation of Open Source SURF Implementations Lecture Notes in Computer Science 2011 Volume 6556 2011 169 179 Libraries dlib OpenCV and Pan o Matic Peter Abeles A comparison of several C C and Java implementations for speed and stability Nov 2011 Libraries OpenSURF OpenCV Pan o Matic Original BoofCV JavaSURF i JOpenSURF Vease tambien EditarScale invariant feature transformReferencias EditarEnlaces externos EditarHerbert Bay Tinne Tuytelaars and Luc Van Gool Speeded Up Robust Features ETH Zurich Katholieke Universiteit Leuven Andrea Maricela Plaza Cordero Jorge Luis Zambrano Martinez Estudio y Seleccion de las Tecnicas SIFT SURF y ASIFT de Reconocimiento de Imagenes para el Diseno de un Prototipo en Dispositivos Moviles 15º Concurso de Trabajos Estudiantiles EST 2012 A M Romero and M Cazorla Comparativa de detectores de caracteristicasvisuales y su aplicacion al SLAM X Workshop de agentes fisicos Setiembre 2009 Caceres P M Panchal S R Panchal S K Shah A Comparison of SIFT and SURF International Journal of Innovative Research in Computer and Communication Engineering Vol 1 Issue 2 April 2013 Andrea Maricela Plaza Cordero Jorge Luis Zambrano Martinez Estudio y Seleccion de las Tecnicas SIFT SURF y ASIFT de Reconocimiento de Imagenes para el Diseno de un Prototipo en Dispositivos Moviles Ingenieria de Sistemas Cuenca Tesis Pregrado Universidad Politecnica Salesiana Issue December 2011Herbert Bay Andreas Ess Tinne Tuytelaars Luc Van Gool SURF Speeded Up Robust Features Computer Vision and Image Understanding CVIU Vol 110 No 3 pp 346 359 2008 Christopher Evans Notes on the OpenSURF Library MSc Computer Science University of Bristol SURF on Github Website of SURF Speeded Up Robust Features en ingles First publication of Speeded Up Robust Features 2006 en ingles Revised publication of SURF 2008 en ingles OpenCv https achuwilson wordpress com 2011 08 05 object detection using surf in opencv part 1 enlace roto disponible en Internet Archive vease el historial la primera version y la ultima Datos Q2208247Obtenido de https es wikipedia org w index php title SURF amp oldid 134692786, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos