Articulo de referencia

Consenso de muestra aleatoria

El consenso de muestra aleatoria ( RANSAC ) es un método iterativo para estimar parámetros de un modelo matemático a partir de un conjunto de datos observados que contiene valor...

El consenso de muestra aleatoria ( RANSAC ) es un método iterativo para estimar parámetros de un modelo matemático a partir de un conjunto de datos observados que contiene valores atípicos , cuando estos no afectan los valores de las estimaciones. Por lo tanto, también puede interpretarse como un método de detección de valores atípicos. [ 1 ] Es un algoritmo no determinista en el sentido de que produce un resultado razonable solo con cierta probabilidad, la cual aumenta a medida que se permiten más iteraciones. El algoritmo fue publicado por primera vez por Fischler y Bolles en SRI International en 1981. Utilizaron RANSAC para resolver el problema de determinación de ubicación (LDP), cuyo objetivo es determinar los puntos en el espacio que se proyectan sobre una imagen en un conjunto de puntos de referencia con ubicaciones conocidas.

RANSAC utiliza submuestreo aleatorio repetido . [ 2 ] Una suposición básica es que los datos consisten en "valores válidos", es decir, datos cuya distribución puede explicarse mediante algún conjunto de parámetros del modelo, aunque pueden estar sujetos a ruido, y "valores atípicos", que son datos que no se ajustan al modelo. Los valores atípicos pueden provenir, por ejemplo, de valores extremos del ruido o de mediciones erróneas o hipótesis incorrectas sobre la interpretación de los datos. RANSAC también supone que, dado un conjunto (generalmente pequeño) de valores válidos, existe un procedimiento que puede estimar los parámetros de un modelo que explique o se ajuste de manera óptima a estos datos.

Ejemplo

Un ejemplo sencillo es ajustar una línea bidimensional a un conjunto de observaciones. Suponiendo que este conjunto contiene tanto puntos internos (inliers) , es decir, puntos que se ajustan aproximadamente a la línea, como puntos externos (outliers) , un método simple de mínimos cuadrados para el ajuste de la línea generalmente producirá una línea con un ajuste deficiente a los datos, incluyendo tanto los puntos internos como los externos. Esto se debe a que el ajuste óptimo se realiza a todos los puntos, incluidos los externos. RANSAC, por otro lado, intenta excluir los puntos externos y encontrar un modelo lineal que solo utilice los puntos internos en su cálculo. Esto se logra ajustando modelos lineales a varias muestras aleatorias de los datos y devolviendo el modelo que mejor se ajusta a un subconjunto de los datos. Dado que los puntos internos tienden a estar más linealmente relacionados que una mezcla aleatoria de puntos internos y externos, un subconjunto aleatorio compuesto exclusivamente por puntos internos tendrá el mejor ajuste del modelo. En la práctica, no hay garantía de que se seleccione aleatoriamente un subconjunto de valores coincidentes, y la probabilidad de que el algoritmo tenga éxito depende de la proporción de valores coincidentes en los datos, así como de la elección de varios parámetros del algoritmo.

Descripción general

El algoritmo RANSAC es una técnica de aprendizaje para estimar los parámetros de un modelo mediante el muestreo aleatorio de datos observados. Dado un conjunto de datos cuyos elementos contienen tanto valores atípicos como inliers, RANSAC utiliza un esquema de votación para encontrar el ajuste óptimo. Los elementos del conjunto de datos se utilizan para votar por uno o varios modelos. La implementación de este esquema de votación se basa en dos supuestos: que las características ruidosas no votarán consistentemente por ningún modelo en particular (pocos valores atípicos) y que hay suficientes características para llegar a un consenso sobre un buen modelo (pocos datos faltantes). El algoritmo RANSAC se compone esencialmente de dos pasos que se repiten iterativamente:

  1. Se selecciona aleatoriamente un subconjunto de muestra con el número mínimo de elementos del conjunto de datos de entrada. Se calcula un modelo de ajuste con parámetros específicos utilizando únicamente los elementos de este subconjunto. La cardinalidad del subconjunto (es decir, la cantidad de datos que contiene) es suficiente para determinar los parámetros del modelo.
  2. El algoritmo comprueba qué elementos del conjunto de datos completo son consistentes con el modelo instanciado por los parámetros estimados obtenidos en el primer paso. Un elemento de datos se considerará un valor atípico si no se ajusta al modelo dentro de un umbral de error que define la desviación máxima de los datos dentro del rango normal (los elementos de datos que superan esta desviación se consideran valores atípicos).

El conjunto de valores coincidentes obtenido para el modelo de ajuste se denomina conjunto de consenso . El algoritmo RANSAC repetirá iterativamente los dos pasos anteriores hasta que el conjunto de consenso obtenido en una iteración determinada tenga suficientes valores coincidentes.

La entrada al algoritmo RANSAC consiste en un conjunto de valores de datos observados, un modelo para ajustar a las observaciones y algunos parámetros de confianza que definen los valores atípicos. Con mayor detalle que en la descripción general del algoritmo RANSAC mencionada anteriormente, este logra su objetivo repitiendo los siguientes pasos:

  1. Seleccione un subconjunto aleatorio de los datos originales. Llame a este subconjunto los valores hipotéticos que no se correlacionan .
  2. Se ajusta un modelo al conjunto de valores hipotéticos que coinciden con los datos reales.
  3. Todos los datos se comparan con el modelo ajustado. Todos los puntos de datos (de los datos originales) que se ajustan bien al modelo estimado, según una función de pérdida específica del modelo , se denominan conjunto de consenso (es decir, el conjunto de valores válidos para el modelo).
  4. El modelo estimado es razonablemente bueno si se han clasificado suficientes puntos de datos como parte del conjunto de consenso.
  5. El modelo puede mejorarse reestimándolo mediante el uso de todos los miembros del conjunto de consenso. La calidad del ajuste, como medida de qué tan bien se ajusta el modelo al conjunto de consenso, se utilizará para refinar el ajuste del modelo a medida que avanzan las iteraciones (por ejemplo, estableciendo esta medida como criterio de calidad de ajuste en la siguiente iteración).

Para converger hacia un conjunto de parámetros del modelo suficientemente bueno, este procedimiento se repite un número fijo de veces, produciendo cada vez o bien el rechazo de un modelo porque hay muy pocos puntos en el conjunto de consenso, o bien un modelo refinado con un tamaño de conjunto de consenso mayor que el conjunto de consenso anterior.

RANSAC: puntos de datos atípicos y no atípicos. El ajuste lineal a los puntos de datos en este ejemplo se realiza con 7 puntos de datos atípicos (puntos que se ajustan bien al modelo según ciertos criterios). No es un buen ajuste, ya que existe una línea recta cerca de la cual se distribuye la mayoría de los puntos de datos (es decir, hay más puntos de datos atípicos).

Pseudocódigo

El algoritmo RANSAC genérico funciona según el siguiente pseudocódigo :

Dado: datos – Un conjunto de observaciones. modelo – Un modelo para explicar los puntos de datos observados. n – El número mínimo de puntos de datos necesarios para estimar los parámetros del modelo. k – El número máximo de iteraciones permitidas en el algoritmo. t – Un valor umbral para determinar los puntos de datos que se ajustan bien al modelo (puntos interiores). d – El número de puntos de datos cercanos (puntos de inliers) necesarios para afirmar que el modelo se ajusta bien a los datos. Devolver: bestFit: Los parámetros del modelo que mejor se ajustan a los datos (o null si no se encuentra ningún modelo adecuado). iteraciones = 0 mejorAjuste = nulo bestErr = algo realmente grande // Este parámetro se utiliza para ajustar los parámetros del modelo al mejor ajuste de datos a medida que avanzan las iteraciones. mientras iteraciones < k hacer maybeInliers := n valores seleccionados aleatoriamente de los datos maybeModel := parámetros del modelo ajustados a maybeInliers confirmadosInliers := conjunto vacío para cada punto en los datos hacer si el punto se ajusta a maybeModel con un error menor que t entonces agregar punto a confirmedInliers fin si fin para si el número de elementos en confirmedInliers es > d entonces // Esto implica que podríamos haber encontrado un buen modelo. // Ahora prueba qué tan bueno es. betterModel := parámetros del modelo ajustados a todos los puntos en confirmedInliers thisErr := una medida de qué tan bien betterModel se ajusta a estos puntos si thisErr < bestErr entonces mejorAjuste := mejorModelo mejorError := esteError fin si fin si iteraciones de incremento fin mientrasdevolver bestFit

Código de ejemplo

Una implementación en Python que reproduce el pseudocódigo. Esta también define un LinearRegressormodelo basado en mínimos cuadrados, se aplica RANSACa un problema de regresión 2D y visualiza el resultado:

from copy import copy import numpy as np from numpy.random import default_rng rng = default_rng ()clase RANSAC : def __init__ ( self , n = 10 , k = 100 , t = 0.05 , d = 10 , model = None , loss = None , metric = None ): self.n = n # `n`: Número mínimo de puntos de datos para estimar parámetros self.k = k # `k`: Iteraciones máximas permitidas self.t = t # ` t`: Valor umbral para determinar si los puntos se ajustan bien self.d = d # ` d`: Número de puntos de datos cercanos necesarios para afirmar que el modelo se ajusta bien self.model = model # ` model` : clase que implementa `fit` y `predict` self.loss = loss # ` loss`: función de `y_true` y `y_pred` que devuelve un vector self.metric = metric # ` metric` : función de ` y_true` y `y_pred` y devuelve un float self . mejor_ajuste = Ninguno self.mejor_error = np.infdef ajuste ( self , X , y ) : para _ en rango ( self.k ) : ids = rng.permutación ( X.forma [ 0 ] )maybe_inliers = ids [ : self.n ] maybe_model = copy ( self.model ) .fit ( X [ maybe_inliers ] , y [ maybe_inliers ] )umbralizado = ( self . pérdida ( y [ ids ][ self . n :], maybe_model . predicción ( X [ ids ][ self . n :])) < self . t )inlier_ids = ids [ self.n : ] [ np.flatnonzero ( thresholded ) .flatten ( ) ]if inlier_ids . size > self . d : inlier_points = np . hstack ([ maybe_inliers , inlier_ids ]) better_model = copy ( self . model ) . fit ( X [ inlier_points ], y [ inlier_points ])este_error = self.metric ( y [ inlier_points ] , better_model.predict ( X [ inlier_points ] ) )Si this_error < self.best_error : self.best_error = this_error self.best_fit = better_modelregresar a uno mismodef predict ( self , X ) : return self.best_fit.predict ( X )def square_error_loss ( y_true , y_pred ): return ( y_true - y_pred ) ** 2def mean_square_error ( y_true , y_pred ): return np . sum ( square_error_loss ( y_true , y_pred )) / y_true . shape [ 0 ]clase LinearRegressor : def __init __ ( self ) : self.params = Nonedef fit ( self , X : np.ndarray , y : np.ndarray ) : r , _ = X.shape X = np.hstack ( [ np.ones ( ( r , 1 ) ) , X ] ) self.params = np.linalg.inv ( X.T@X ) @ X.T @ y return selfdef predict ( self , X : np.ndarray ) : r , _ = X.shape X = np.hstack ( [ np.ones ( ( r , 1 ) ) , X ] ) return X @ self.paramsSi __name__ == "__main__" :regresor = RANSAC ( modelo = LinearRegressor (), pérdida = square_error_loss , métrica = mean_square_error )X = np . matriz ([ - 0.848 , - 0.800 , - 0.704 , - 0.632 , - 0.488 , - 0.472 , - 0.368 , - 0.336 , - 0.280 , - 0.200 , - 0.00800 , - 0.0840 , 0.0240 , 0.100 , 0.124 , 0.148 , 0.232 , 0.236 , 0.324 , 0.356 , 0.368 , 0.440 , 0.512 , 0.548 , 0.660 , 0.640 , 0.712 , 0.752 , 0,776 , 0,880 , 0,920 , 0,944 , -0,108 , -0,168 , -0,720 , -0,784 , -0,224 , -0,604 , -0,740 , -0,0440 , 0,388 , -0,0200 , 0,752 , 0,416 , -0,0800 , -0,348 , 0,988 , 0,776 , 0,680 , 0,880 , -0,816 , -0,424 , -0,932 , 0,272 , -0,556 , -0,568 , -0.600 , - 0.716 , - 0.796 , - 0.880 , - 0.972 , - 0.916 , 0.816 , 0.892 , 0.956 , 0.980 , 0.988 , 0.992 , 0.00400 ]) . reshape ( - 1 , 1 ) y = np . array ([- 0,917 , - 0,833 , - 0,801 , - 0,665 , - 0,605 , - 0,545 , - 0,509 , - 0,433 , - 0,397 , - 0,281 , - 0,205 , - 0,169 , - 0,0531 , - 0,0651 , 0,0349 , 0,0829 , 0,0589 , 0,175 , 0,179 , 0,191 , 0,259 , 0,287 , 0,359 , 0,395 , 0,483 , 0,539 , 0,543 , 0,603 , 0,667 , 0,679 , 0,751 , 0,803 , -0,265 , -0,341 , 0,111 , -0,113 , 0,547 , 0,791 , 0,551 , 0,347 , 0,975 , 0,943 , -0,249 , -0,769 , -0,625 , -0,861 , -0,749 , -0,945 , -0,493 , 0,163 , -0,469 , 0,0669 , 0,891 , 0,623 , -0,609 , -0,677 , -0,721, - 0.745 , - 0.885 , - 0.897 , - 0.969 , - 0.949 , 0.707 , 0.783 , 0.859 , 0.979 , 0.811 , 0.891 , - 0.137 ]) . remodelar ( - 1 , 1 )regresor . ajuste ( X , y )import matplotlib.pyplot as plt plt . style . use ( "seaborn-darkgrid" ) fig , ax = plt . subplots ( 1 , 1 ) ax . set_box_aspect ( 1 )plt.scatter ( X , y )línea = np.linspace ( -1 , 1 , num = 100 ) .reshape ( -1 , 1 ) plt.plot ( línea , regressor.predict ( línea ) , c = " peru " ) plt.show ( )
Un diagrama de dispersión muestra una línea diagonal desde la esquina inferior izquierda hasta la esquina superior derecha de la figura. Una línea de tendencia se ajusta perfectamente a la diagonal, sin verse afectada por valores atípicos dispersos en otras partes de la figura.
Resultado de la ejecución de la RANSACimplementación. La línea naranja muestra los parámetros de mínimos cuadrados obtenidos mediante el método iterativo, que ignora con éxito los valores atípicos.

Parámetros

El valor umbral para determinar cuándo un punto de datos se ajusta a un modelo ( t ), y el número de puntos de datos que se ajustan al modelo dentro del intervalo t , necesarios para afirmar que el modelo se ajusta bien a los datos ( d ), se determinan en función de los requisitos específicos de la aplicación y del conjunto de datos, y posiblemente mediante una evaluación experimental. Sin embargo, el número de iteraciones ( k ) puede determinarse aproximadamente en función de la probabilidad de éxito deseada ( p ), como se muestra a continuación.

Sea p la probabilidad deseada de que el algoritmo RANSAC proporcione al menos un resultado útil después de su ejecución. En el extremo (para simplificar la derivación), RANSAC devuelve un resultado exitoso si en alguna iteración selecciona solo puntos válidos del conjunto de datos de entrada cuando elige n puntos del conjunto de datos a partir de los cuales se estiman los parámetros del modelo. (En otras palabras, todos los n puntos de datos seleccionados son puntos válidos del modelo estimado por estos puntos).w{\displaystyle w}sea ​​la probabilidad de elegir un valor cercano cada vez que se selecciona un solo punto de datos, es decir, aproximadamente,

w{\displaystyle w}= número de valores coincidentes en los datos / número de puntos en los datos

Un caso común es quew{\displaystyle w}no se conoce bien de antemano debido a un número desconocido de valores coincidentes en los datos antes de ejecutar el algoritmo RANSAC, pero se puede dar un valor aproximado. Con un valor aproximado dado dew{\displaystyle w}y suponiendo aproximadamente que los n puntos necesarios para estimar un modelo se seleccionan de forma independiente (es una suposición aproximada porque en realidad cada selección de punto de datos reduce el número de candidatos a puntos de datos a elegir en la siguiente selección),wnorte{\displaystyle w^{n}}es la probabilidad de que todos los n puntos sean puntos válidos y1wnorte{\displaystyle 1-w^{n}}es la probabilidad de que al menos uno de los n puntos sea un valor atípico, un caso que implica que se estimará un modelo malo a partir de este conjunto de puntos. Esa probabilidad elevada a la potencia de k (el número de iteraciones al ejecutar el algoritmo) es la probabilidad de que el algoritmo nunca seleccione un conjunto de n puntos que sean todos valores atípicos, y esto es lo mismo que1pag{\displaystyle 1-p}(la probabilidad de que el algoritmo no dé como resultado una estimación de modelo exitosa) en extremo. En consecuencia,

1pag=(1wnorte)k{\displaystyle 1-p=(1-w^{n})^{k}\,}

lo cual, después de tomar el logaritmo de ambos lados, conduce a

k=registro(1pag)registro(1wnorte){\displaystyle k={\frac {\log(1-p)}{\log(1-w^{n})}}}

Este resultado presupone que los n puntos de datos se seleccionan de forma independiente; es decir, un punto que se ha seleccionado una vez se reemplaza y puede volver a seleccionarse en la misma iteración. Este enfoque no suele ser razonable, y el valor obtenido para k debe considerarse como un límite superior en el caso de que los puntos se seleccionen sin reemplazo. Por ejemplo, al buscar una línea que se ajuste al conjunto de datos ilustrado en la figura anterior, el algoritmo RANSAC suele elegir dos puntos en cada iteración y calcula maybe_modella línea entre ellos; por lo tanto, es fundamental que los dos puntos sean distintos.

Para obtener mayor confianza, se puede agregar la desviación estándar o múltiplos de la misma a k . La desviación estándar de k se define como

DAKOTA DEL SUR(k)=1wnortewnorte{\displaystyle \operatorname {SD} (k)={\frac {\sqrt {1-w^{n}}}{w^{n}}}}

Ventajas y desventajas

Una ventaja de RANSAC es su capacidad para realizar una estimación robusta [ 3 ] de los parámetros del modelo, es decir, puede estimar los parámetros con un alto grado de precisión incluso cuando hay un número significativo de valores atípicos en el conjunto de datos. Una desventaja de RANSAC es que no hay un límite superior en el tiempo que tarda en calcular estos parámetros (excepto el agotamiento). Cuando el número de iteraciones calculadas es limitado, la solución obtenida puede no ser óptima, e incluso puede no ajustarse bien a los datos. De esta manera, RANSAC ofrece una compensación: al calcular un mayor número de iteraciones, aumenta la probabilidad de producir un modelo razonable. Además, RANSAC no siempre es capaz de encontrar el conjunto óptimo incluso para conjuntos moderadamente contaminados, y suele tener un rendimiento deficiente cuando el número de valores atípicos es inferior al 50 %. Se propuso RANSAC óptimo [ 4 ] para abordar ambos problemas y es capaz de encontrar el conjunto óptimo para conjuntos muy contaminados, incluso para una proporción de valores atípicos inferior al 5 %. Otra desventaja de RANSAC es que requiere la configuración de umbrales específicos para cada problema.

RANSAC solo puede estimar un modelo para un conjunto de datos particular. Al igual que con cualquier enfoque de un solo modelo, cuando existen dos (o más) instancias de modelo, RANSAC puede fallar al encontrar alguna. La transformada de Hough es una técnica de estimación robusta alternativa que puede ser útil cuando hay más de una instancia de modelo presente. Otro enfoque para el ajuste de múltiples modelos se conoce como PEARL, [ 5 ] que combina el muestreo de modelos a partir de puntos de datos como en RANSAC con la reestimación iterativa de los valores atípicos y el ajuste de múltiples modelos se formula como un problema de optimización con una función de energía global que describe la calidad de la solución general.

Aplicaciones

El algoritmo RANSAC se usa frecuentemente en visión artificial , por ejemplo, para resolver simultáneamente el problema de correspondencia y estimar la matriz fundamental relacionada con un par de cámaras estéreo; véase también: Estructura a partir del movimiento , transformación de características invariantes a la escala , unión de imágenes , segmentación de movimiento rígido .

Desarrollo y mejoras

Desde 1981, RANSAC se ha convertido en una herramienta fundamental en la comunidad de visión por computadora y procesamiento de imágenes. En 2006, con motivo del 25.º aniversario del algoritmo, se organizó un taller en la Conferencia Internacional sobre Visión por Computadora y Reconocimiento de Patrones (CVPR) para resumir las contribuciones y variaciones más recientes del algoritmo original, principalmente destinadas a mejorar su velocidad, la robustez y precisión de la solución estimada, así como a disminuir la dependencia de constantes definidas por el usuario.

RANSAC puede ser sensible a la elección del umbral de ruido correcto que define qué puntos de datos se ajustan a un modelo instanciado con un conjunto determinado de parámetros. Si dicho umbral es demasiado grande, entonces todas las hipótesis tienden a ser clasificadas por igual (buenas). Por otro lado, cuando el umbral de ruido es demasiado pequeño, los parámetros estimados tienden a ser inestables (es decir, con solo agregar o eliminar un dato al conjunto de valores válidos, la estimación de los parámetros puede fluctuar). Para compensar parcialmente este efecto indeseable, Torr et al. propusieron dos modificaciones de RANSAC llamadas MSAC (M-estimator SAmple and Consensus) y MLESAC (Maximum Likelihood Estimation SAmple and Consensus). [ 6 ] La idea principal es evaluar la calidad del conjunto de consenso (es decir, los datos que se ajustan a un modelo y un conjunto determinado de parámetros) calculando su verosimilitud (mientras que en la formulación original de Fischler y Bolles el rango era la cardinalidad de dicho conjunto). Tordoff propone una extensión de MLESAC que tiene en cuenta las probabilidades previas asociadas al conjunto de datos de entrada. [ 7 ] El algoritmo resultante se denomina Guided-MLESAC. En la misma línea, Chum propuso guiar el procedimiento de muestreo si se conoce información previa sobre los datos de entrada, es decir, si es probable que un dato sea un valor interno o un valor externo. El enfoque propuesto se denomina PROSAC, Consenso de Muestreo Progresivo. [ 8 ]

Chum et al. también propusieron una versión aleatoria de RANSAC llamada R-RANSAC [ 9 ] para reducir la carga computacional para identificar un buen conjunto de consenso. La idea básica es evaluar inicialmente la bondad del modelo actualmente instanciado usando solo un conjunto reducido de puntos en lugar del conjunto de datos completo. Una estrategia sólida dirá con alta confianza cuándo es el caso evaluar el ajuste del conjunto de datos completo o cuándo el modelo puede descartarse fácilmente. Es razonable pensar que el impacto de este enfoque es más relevante en casos donde el porcentaje de inliers es grande. El tipo de estrategia propuesto por Chum et al. se llama esquema de preempción. Nistér propuso un paradigma llamado Preemptive RANSAC [ 10 ] que permite la estimación robusta en tiempo real de la estructura de una escena y del movimiento de la cámara. La idea central del enfoque consiste en generar un número fijo de hipótesis de modo que la comparación se haga con respecto a la calidad de la hipótesis generada en lugar de contra alguna métrica de calidad absoluta.

Otros investigadores intentaron abordar situaciones difíciles donde se desconoce la escala del ruido y/o existen múltiples instancias de modelos. El primer problema se abordó en el trabajo de Wang y Suter. [ 11 ] Toldo et al. representan cada dato con la función característica del conjunto de modelos aleatorios que se ajustan al punto. Luego, los múltiples modelos se revelan como clústeres que agrupan los puntos que respaldan el mismo modelo. El algoritmo de agrupamiento, llamado J-linkage, no requiere la especificación previa del número de modelos, ni tampoco requiere el ajuste manual de parámetros. [ 12 ]

RANSAC también se ha adaptado para aplicaciones de estimación de estado recursivas, donde las mediciones de entrada están corrompidas por valores atípicos y los enfoques de filtro de Kalman , que se basan en una distribución gaussiana del error de medición, están condenados al fracaso. Este enfoque se denomina KALMANSAC. [ 13 ]

Véase también

Notas

  1. ^ Strutz, T. (2016). Ajuste de datos e incertidumbre (2  ed.). Springer Vieweg. ISBN 978-3-658-11455-8.
  2. Cantzler, H. «Consenso de muestra aleatoria (RANSAC)» . Instituto de Percepción, Acción y Comportamiento, División de Informática, Universidad de Edimburgo. CiteSeerX 10.1.1.106.3035 . Archivado del original el 4 de febrero de 2023. 
  3. Estadística robusta, Peter J. Huber, Wiley, 1981 (reeditado en rústica en 2004), página 1.
  4. Anders Hast, Johan Nysjö, Andrea Marchetti (2013). " RANSAC óptimo: hacia un algoritmo repetible para encontrar el conjunto óptimo ". Journal of WSCG 21 (1): 21–30.
  5. Hossam Isack, Yuri Boykov (2012). "Ajuste multimodelo geométrico basado en energía". International Journal of Computer Vision 97 (2: 1): 23–147. doi : 10.1007/s11263-011-0474-7 .
  6. PHS Torr y A. Zisserman, MLESAC: Un nuevo estimador robusto con aplicación a la estimación de la geometría de la imagen., Journal of Computer Vision and Image Understanding 78 (2000), no. 1, 138–156.
  7. BJ Tordoff y DW Murray, Guided-MLESAC: Estimación más rápida de la transformación de imágenes mediante el uso de priors coincidentes , IEEE Transactions on Pattern Analysis and Machine Intelligence 27 (2005), n.º 10, 1523–1535.
  8. Coincidencia con PROSAC – consenso de muestras progresivas , Actas de la Conferencia sobre Visión por Computadora y Reconocimiento de Patrones (San Diego), vol. 1, junio de 2005, págs. 220–226
  9. O. Chum y J. Matas, Randomized RANSAC with Td,d test, 13.ª Conferencia Británica de Visión por Computadora, septiembre de 2002. http://www.bmva.org/bmvc/2002/papers/50/
  10. D. Nistér, Preemptive RANSAC for live structure and motion estimation , IEEE International Conference on Computer Vision (Niza, Francia), octubre de 2003, pp. 199–206.
  11. H. Wang y D. Suter, Estimación robusta de modelos paramétricos de escala adaptativa para visión por computadora , IEEE Transactions on Pattern Analysis and Machine Intelligence 26 (2004), n.° 11, 1459–1474
  12. R. Toldo y A. Fusiello, Estimación robusta de múltiples estructuras con J-linkage , Conferencia Europea de Visión por Computadora (Marsella, Francia), octubre de 2008, págs. 537–547.
  13. A. Vedaldi, H. Jin, P. Favaro y S. Soatto, KALMANSAC: Filtrado robusto por consenso , Actas de la Conferencia Internacional sobre Visión por Computadora (ICCV), vol. 1, 2005, págs. 633–640
  14. Brahmachari, Aveek S.; Sarkar, Sudeep (marzo de 2013). "Monte Carlo de difusión por salto para la estimación de geometría epipolar entre imágenes de línea base muy ancha". IEEE Transactions on Pattern Analysis and Machine Intelligence . 35 (3): 755– 762. doi : 10.1109/TPAMI.2012.227 . PMID 26353140. S2CID 2524656 .  
  15. W. Ruoyan y W. Junfeng, " FSASAC: Consenso de muestra aleatoria basado en filtro de datos y recocido simulado ," en IEEE Access, vol. 9, pp. 164935-164948, 2021, doi: 10.1109/ACCESS.2021.3135416.

Referencias

  • Martin A. Fischler y Robert C. Bolles (junio de 1981). «Consenso de muestra aleatoria: un paradigma para el ajuste de modelos con aplicaciones al análisis de imágenes y cartografía automatizada» ( PDF) . Comm. ACM . 24 (6): 381–395 . doi : 10.1145/358669.358692 . S2CID 972888. Archivado (PDF) del original el 10 de diciembre de 2014. 
  • David A. Forsyth y Jean Ponce (2003). Visión por computadora: un enfoque moderno . Prentice Hall. ISBN 978-0-13-085198-7.
  • Richard Hartley y Andrew Zisserman (2003). Geometría de múltiples vistas en visión por computadora (2.ª  ed.). Cambridge University Press.
  • Strutz, T. (2016). Ajuste de datos e incertidumbre (Una introducción práctica a los mínimos cuadrados ponderados y más allá) . 2.ª edición, Springer Vieweg. ISBN 978-3-658-11455-8.
  • PHS Torr y DW Murray (1997). "Desarrollo y comparación de métodos robustos para estimar la matriz fundamental". International Journal of Computer Vision . 24 (3): 271– 300. doi : 10.1023/A:1007927408552 . S2CID 12031059 . 
  • Ondrej Chum (2005). "Estimación de geometría de dos vistas mediante muestreo aleatorio y consenso" (PDF) . Tesis doctoral .
  • Sunglok Choi; Taemin Kim y Wonpil Yu (2009). "Evaluación del rendimiento de la familia RANSAC" (PDF) . En Actas de la Conferencia Británica de Visión por Computadora (BMVC) . Archivado del original (PDF) el 31 de agosto de 2020. Recuperado el 1 de octubre de 2010 .
  • Anders Hast; Johan Nysjö; Andrea Marchetti (2013). "RANSAC óptimo: hacia un algoritmo repetible para encontrar el conjunto óptimo" (PDF) . Revista de WSCG . 21 (1): 21– 30.
  • Hossam Isack; Yuri Boykov (2012). "Ajuste multimodelo geométrico basado en energía" (PDF) . International Journal of Computer Vision . 97 (2: 1): 23– 147. CiteSeerX 10.1.1.381.2434 . doi : 10.1007/s11263-011-0474-7 . S2CID 5461268 .