Homography
La homografía es una transformación proyectiva que asigna planos entre vistas y permite corregir la perspectiva, registrar imágenes y unir panorámicas.
Una homografía es una transformación proyectiva invertible que asigna puntos de un plano a puntos de otro y conserva las líneas rectas. En visión artificial, describe cómo se ve una superficie plana desde distintos puntos de vista: una página rectangular fotografiada en ángulo puede transformarse en un rectángulo frontal. Las homografías permiten el registro de imágenes, la corrección de la perspectiva y la unión de panorámicas. «Transformación proyectiva» es un sinónimo; el término lingüístico «homógrafo» se refiere a palabras con la misma grafía.
Cómo funciona la matriz de homografía#
Una homografía se representa mediante una matriz de 3 x 3, normalmente denominada H. Opera sobre coordenadas homogéneas, que representan un punto bidimensional mediante tres valores. Tras multiplicar por la matriz, al dividir los dos primeros valores de salida por el tercero se obtienen las coordenadas habituales de la imagen.
Aunque H contiene nueve elementos, tiene ocho parámetros independientes, o grados de libertad: multiplicar todos los elementos por el mismo número distinto de cero no altera la asignación. Esta geometría de las asignaciones de imágenes planas explica por qué cuatro correspondencias de puntos adecuadas determinan una homografía.
Una transformación afín es una homografía restringida que conserva las líneas paralelas. Una homografía general también representa efectos de perspectiva, como los bordes paralelos que convergen hacia un punto de fuga. Las distancias y los ángulos suelen cambiar. Michel Chasles desarrolló el concepto en su memoria de 1837 sobre dualidad y homografía.
Cómo estimar una homografía#
La estimación comienza con puntos correspondientes: ubicaciones que representan las mismas características físicas en dos imágenes. Estos pueden ser esquinas seleccionadas manualmente o puntos clave emparejados mediante la extracción de características. Métodos como la transformada de características invariantes a la escala proporcionan descriptores —resúmenes numéricos de la apariencia local— para emparejar características entre vistas.
Se necesitan al menos cuatro pares de puntos, sin que haya tres puntos colineales en ninguno de los dos conjuntos. El algoritmo de la transformada lineal directa (DLT) convierte las relaciones entre sus coordenadas en un sistema lineal. Las correspondencias adicionales mejoran la estimación cuando las mediciones contienen ruido.
Las correspondencias incorrectas requieren un ajuste robusto. El consenso de muestras aleatorias (RANSAC) ajusta repetidamente transformaciones candidatas a pequeños subconjuntos e identifica los valores atípicos: correspondencias coherentes con una candidata. El error de reproyección mide la distancia entre un punto de origen transformado y su destino observado. La API de estimación de homografías de OpenCV ofrece este proceso mediante cv2.findHomography y devuelve tanto H como una máscara de valores atípicos.
Aplica una homografía en Python#
OpenCV proporciona operaciones independientes para estimar una matriz y deformar una imagen. Instala las dependencias con pip install opencv-python numpy. Este ejemplo transforma el contorno rectangular de la imagen de muestra en un trapecio:
from urllib.request import urlopen
import cv2
import numpy as np
image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]
# Mantén el mismo orden de esquinas en sentido horario en ambas matrices.
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)La imagen guardada muestra un acortamiento por perspectiva: su borde superior es más estrecho, mientras que los bordes rectos de la escena siguen siendo rectos.
Usos de la homografía#
- Procesamiento de documentos: La rectificación de perspectiva asigna las cuatro esquinas de un documento plano a un rectángulo. Este paso de preprocesamiento regulariza la disposición del texto antes del reconocimiento óptico de caracteres, siguiendo la misma geometría de deformación plana que se muestra en los ejemplos de corrección de perspectiva de OpenCV.
- Unión de panorámicas: Las fotografías superpuestas se alinean antes de fusionarlas. El sistema Autostitch de Matthew Brown y David Lowe utiliza características locales emparejadas para automatizar la creación de panorámicas, incluida la identificación de imágenes superpuestas en colecciones sin ordenar.
En Ultralytics YOLO, la transformación RandomPerspective aplica deformaciones proyectivas durante el entrenamiento y transforma conjuntamente las imágenes y sus cajas delimitadoras asociadas, los contornos de segmentación y los puntos clave. El ajuste perspective controla el componente de perspectiva de esta aumentación de datos.
Límites geométricos y conceptos relacionados#
Una única homografía relaciona exactamente las vistas ideales de cámara estenopeica de un plano, o las vistas capturadas al girar una cámara alrededor de su centro de proyección. Cuando la cámara se desplaza y los objetos están a distintas profundidades, el paralaje produce desplazamientos que dependen de la profundidad. Alinear un plano de fondo deja entonces desplazados los objetos del primer plano, lo que crea bordes duplicados o imágenes fantasma en las imágenes unidas.
La calibración de la cámara corrige la distorsión de la lente, cuya geometría curva de imagen debe corregirse antes de la alineación plana. En escenas tridimensionales generales, la geometría epipolar restringe un punto correspondiente a una línea; una homografía predice directamente su ubicación. En la visión estéreo, la posición restante a lo largo de la línea epipolar proporciona información de disparidad que se utiliza para la estimación de profundidad.










