RANSAC
Random Sample Consensus. Algoritmo iterativo para estimar de forma robusta los parámetros de un modelo a partir de datos con valores atípicos. Esencial para la estimación de homografías y el ajuste de nubes de puntos 3D en visión por computador.
RANSAC (Random Sample Consensus), propuesto por Fischler y Bolles en 1981, es un algoritmo de estimación robusta diseñado para ajustar modelos a datos contaminados con una proporción significativa de valores atípicos (outliers). A diferencia de los métodos de mínimos cuadrados que tratan todos los puntos por igual y se corrompen fácilmente por outliers, RANSAC identifica iterativamente el subconjunto más grande de datos consistente con un modelo hipotético.
El algoritmo sigue un procedimiento directo: seleccionar aleatoriamente el número mínimo de puntos necesarios para definir el modelo, calcular los parámetros del modelo a partir de este conjunto mínimo, y luego contar cuántos puntos restantes (inliers) caen dentro de un umbral de distancia del modelo. Este proceso se repite durante un número predeterminado de iteraciones, y el modelo con más inliers se selecciona como resultado final.
- Número de iteraciones: Se calcula como
k = log(1-p) / log(1-w^n), donde w es la proporción de inliers, n es el tamaño mínimo de muestra y p es la probabilidad de éxito deseada. Para una homografía (n=4) con 50% de inliers y 99% de confianza, se necesitan aproximadamente 72 iteraciones - Selección de umbral: El umbral de distancia para inliers depende del ruido de medición. Valores de 1-3 píxeles son típicos para correspondencias de imagen. Un umbral demasiado pequeño rechaza inliers válidos; demasiado grande admite outliers
- Variantes: MSAC puntúa los inliers por su distancia en lugar de clasificación binaria. PROSAC muestrea correspondencias en orden de calidad para una convergencia más rápida. LO-RANSAC aplica optimización local a hipótesis prometedoras
En visión por computador, RANSAC es el método estándar para estimar homografías y matrices fundamentales después del emparejamiento de características. La función cv2.findHomography() de OpenCV ejecuta internamente RANSAC y devuelve tanto la matriz de transformación como una máscara de outliers.