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:
- 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.
- 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.
- 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.
- 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.
Comparación de SIFT con métodos relacionados#
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.










