Licencia YOLO
Volver al glosario de Ultralytics

Scale-Invariant Feature Transform (SIFT)

La Transformada de características invariante a la escala (SIFT) es un algoritmo clásico que detecta puntos clave y crea descriptores de 128 valores estables ante cambios de escala y rotación.

La Transformada de características invariante a la escala (SIFT) es un algoritmo clásico de visión artificial que detecta puntos clave locales distintivos en una imagen y describe cada uno con un vector de 128 números que se mantiene prácticamente igual cuando la imagen cambia de escala o gira. La correspondencia entre estos descriptores permite que el software vincule dos fotos de la misma escena tomadas desde distintas distancias y ángulos, lo que permite unir fotos superpuestas para crear una panorámica. SIFT es un método de extracción de características diseñado manualmente, a diferencia de los mapas de características aprendidos de una red neuronal convolucional.

Origen e idea principal#

David Lowe, de la Universidad de Columbia Británica, presentó SIFT en el artículo de ICCV de 1999 Reconocimiento de objetos a partir de características locales invariantes a la escala y desarrolló el método en profundidad en «Características distintivas de imagen a partir de puntos clave invariantes a la escala», publicado en la revista International Journal of Computer Vision en 2004. Las características SIFT son invariantes a la escala y la rotación, y permiten establecer correspondencias de forma robusta ante un rango considerable de distorsiones afines, cambios del punto de vista en 3D, ruido y cambios de iluminación. El método estaba patentado y la patente caducó en 2020. OpenCV trasladó SIFT de su repositorio contrib a la biblioteca principal en la versión 4.4.0.

Un objeto no tiene un tamaño fijo en una foto, así que un detector debe buscar estructuras de todos los tamaños. SIFT crea un espacio de escalas aplicando repetidamente un desenfoque gaussiano con intensidades crecientes y reduciendo la resolución en grupos llamados octavas.

Cómo funciona SIFT#

El algoritmo se ejecuta en cuatro etapas:

  1. Detección de extremos en el espacio de escalas: Las diferencias entre niveles de desenfoque adyacentes (diferencia de gaussianas) aproximan un detector de regiones. Un píxel es candidato si es el máximo o el mínimo entre sus 26 vecinos en el espacio y la escala.
  2. Localización de puntos clave: Los candidatos se refinan hasta alcanzar precisión subpíxel. Se descartan los puntos de bajo contraste y los puntos situados a lo largo de los bordes porque son inestables.
  3. Asignación de orientación: Un histograma de las direcciones del gradiente local alrededor de cada punto clave determina una orientación dominante, y todas las mediciones posteriores se realizan con respecto a ella. Esto proporciona invariancia a la rotación.
  4. Construcción del descriptor: El entorno se divide en una cuadrícula de 4 x 4, y cada celda contiene un histograma de gradientes de 8 intervalos. Así se obtienen 4 x 4 x 8 = 128 valores, que se normalizan para reducir la sensibilidad a la iluminación.

La correspondencia compara los descriptores mediante la distancia euclídea. La prueba de razón de Lowe conserva una correspondencia solo cuando el vecino más cercano está claramente más cerca que el segundo. Una búsqueda de k vecinos más cercanos con k = 2 proporciona ambas distancias.

import cv2
from ultralytics.utils import ASSETS

# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)

# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)

# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")

El recuento mostrado indica cuántos puntos clave detectados a media resolución vuelven a reconocerse en la imagen a resolución completa, lo que demuestra la invariancia a la escala.

Aplicaciones#

SIFT se convirtió en la característica local predeterminada para tareas de visión geométrica:

  • Unión de panorámicas: El método automático de unión de panorámicas de Brown y Lowe (IJCV 2007) establece correspondencias entre características SIFT de fotos superpuestas y calcula una homografía para alinearlas, un paso de alineación denominado registro de imágenes.
  • Reconstrucción 3D: Photo Tourism (Snavely, Seitz y Szeliski, 2006) establece correspondencias entre características SIFT de fotos turísticas y utiliza la geometría epipolar para recuperar las poses de la cámara y una estructura 3D dispersa.
  • Localización de robots: Se, Lowe y Little (2001) utilizaron puntos de referencia SIFT para la localización y el mapeo de robots móviles; su trabajo es un precursor del SLAM visual moderno.
  • Reconocimiento de instancias: En el artículo de Lowe de 2004 se reconoce un tren de juguete y una rana en una escena desordenada y parcialmente ocluida con tan solo 3 características con correspondencia.

En el seguimiento de objetos de Ultralytics YOLO, BoT-SORT compensa el movimiento de la cámara entre fotogramas, y al establecer gmc_method: sift en la configuración del seguidor se utilizan correspondencias SIFT para esa estimación en lugar del flujo óptico disperso predeterminado.

SIFT establece correspondencias entre los mismos puntos físicos desde distintas vistas, por lo que resulta adecuado para la correspondencia y la geometría. En cambio, la detección de objetos predice la categoría y la ubicación de los objetos. La búsqueda por plantilla desplaza una región fija y falla cuando cambia la escala o la rotación.

SIFT es lento en comparación con ORB, un descriptor binario presentado por Rublee y sus colaboradores en 2011 como alternativa a SIFT y SURF. También tiene dificultades con superficies sin textura y ante cambios muy grandes del punto de vista, y los modelos aprendidos lo han sustituido en gran medida para el reconocimiento por categorías.

En las pruebas de Lowe de 2004, descartar las correspondencias con una razón de distancias superior a 0,8 eliminó el 90 % de las correspondencias falsas y descartó menos del 5 % de las correctas, en imágenes con cambios aleatorios de escala y rotación, 30 grados de rotación en profundidad y un 2 % de ruido, comparadas con 40 000 puntos clave.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático