Zum Inhalt springen

„RANSAC-Algorithmus“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Sort-Fix - siehe hier; tippo
K Consensus set vereinheitlicht
(67 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''RANSAC''' ('''Ran'''dom '''Sa'''mple '''C'''onsensus, deutsch etwa ''Korrespondenzen von Zufallspunkten'') ist ein mathematischer Algorithmus zur Detektion von [[Ausreißer|Ausreißern]] beziehungsweise groben Fehlern innerhalb einer Menge von Datenpunkten. Er wurde offiziell 1981 von Martin A. Fischler und Robert C. Bolles in den [[Communications of the ACM]] vorgestellt. Eine interne Präsentation (beide Autoren arbeiteten im [[Stanford Research Institute]]) fand aber schon im März 1980 statt.
'''RANSAC''' ('''Ran'''dom '''Sa'''mple '''C'''onsensus, deutsch etwa „Übereinstimmung mit einer zufälligen Stichprobe“) ist ein [[Algorithmus]] zur Detektion von [[Ausreißer]]n und groben [[Messabweichung|Fehlern]] innerhalb einer Reihe von [[Messwert]]en. Er wurde offiziell 1981 von Martin A. Fischler und Robert C. Bolles in den [[Communications of the ACM]] vorgestellt. Eine interne Präsentation (beide Autoren arbeiten bis heute am [[Stanford Research Institute]]<ref>
{{Literatur|Autor=Robert C. Bolles|Titel=Homepage beim SRI|Jahr=|Monat=|Tag=|Online=[http://www.ai.sri.com/people/bolles/ online]|Zugriff=11. März 2008}}
<ref>
</ref><ref>
{{Literatur|Autor=Martin A. Fischler|Titel=Homepage beim SRI|Jahr=|Monat=|Tag=|Online=[http://www.ai.sri.com/people/fischler/ online]|Zugriff=11. März 2008}}
</ref>)
fand bereits im März 1980 statt.<ref>
{{Literatur
{{Literatur
|Autor=Martin A. Fischler und Robert C. Bolles
|Autor=Martin A. Fischler und Robert C. Bolles
Zeile 9: Zeile 13:
</ref>
</ref>


== Einleitung ==
== Einleitung und Prinzip ==
Oft liegen als Ergebnis einer Messung Datenpunkte vor, die physikalische Messwerte wie Druck, Entfernung oder Temperatur, wirtschaftliche Größen oder Ähnliches repräsentieren. In diese Punkte soll eine möglichst genau passende, parameterabhängige Modellkurve gelegt werden. Die gemessenen Datenpunkte können Ausreißer enthalten. Das sind diejenigen Werte, die nicht in die erwartete [[Messreihe]] passen oder allgemein nicht den [[Erwartungswert]] entsprechen.
[[Bild:Ausreißer.png|200px|thumb|'''Ausreißer''':<br /> Der Ausreißer zieht die Gerade nach oben]]
Oft liegen als Ergebnis einer Messung Datenpunkte vor, die physikalische Messwerte, wirtschaftliche Größen oder Ähnliches repräsentieren. In diese Punkte soll eine möglichst genau passende, parameterabhängige Modellkurve gelegt werden. Die gemessenen Datenpunkte können Ausreißer enthalten. Das sind diejenigen Werte, die nicht in die erwartete [[Messreihe]] passen oder allgemein nicht den Erwartungen entsprechen.


Messungen wurden bis zur Entwicklung der Digitaltechnologie im Allgemeinen manuell durchgeführt. Entsprechend war oft auf Grund des Aufwandes die Anzahl der Messwerte klein. Gleichzeitig war aber durch die Kontrolle durch den Operateur der prozentuale Anteil der Ausreißer meist gering. Die damals verwendeten Auswertealgorithmen wie die [[Methode der kleinsten Quadrate]] sind darauf angepasst: sie versuchen, mit der Gesamtheit der Datenpunkte das Modell zu bestimmen und im Nachhinein die wenigen Ausreißern zu detektieren und zu entfernen. Voraussetzung all dieser Verfahren ist, dass mehr Datenpunkte vorliegen als zur Ermittlung der Parameter notwendig sind, das Modell also [[Überbestimmung|überbestimmt]] ist.
Zum Anpassen der Modellkurve an die Datenpunkte dient zum Beispiel die [[Methode der kleinsten Quadrate]]. Dieses und andere Verfahren gehen von einer [[Normalverteilung]] der Messwerte aus und liefern zum Teil kein sinnvolles Ergebnis, wenn die Datenpunkte viele Ausreißer enthalten. Zusätzlich haben Außreißer meist einen überdurchschnittlich großen Einfluss auf die Modellparameter. Man erkennt in nebenstehender Zeichnung, wie ein einzelner Ausreißer unter 20 Datenpunkten die Lage der Ausgleichgsgerade beeinflusst. Mittels RANSAC können die Ausreißer detektiert werden. Somit ist es möglich, diese bei der Berechnung der Modellparameter auszuschließen und trotz vieler Fehler in den Daten ein richtiges Ergebnis zu erhalten.


[[Bild:Ausreißer.png|thumb|200px|'''Ausreißer:'''<br /> Der eine Ausreißer zieht die Ausgleichsgerade nach oben]]
== Vorgehensweise ==
Mit der Entwicklung der [[Digitaltechnik]] ab Anfang der 1980er Jahre (so stellten zum Beispiel im Jahre 1981 [[IBM]] den ersten [[Personal Computer]], [[Apple]] den [[Apple III]] und [[Sony]] mit der [[Mavica]] die erste Digitalkamera vor) änderten sich jedoch die Grundlagen. Durch die neuen Möglichkeiten wurden zunehmend automatische Messverfahren vor allem im Bereich des [[maschinelles Sehen|maschinellen Sehens]] eingesetzt. Als Ergebnis liegen hier oft eine große Anzahl an Werten vor, die jedoch meist viele Ausreißern enthalten. Die traditionellen Verfahren gehen jedoch von einer [[Normalverteilung]] der Messwerte aus und liefern zum Teil kein sinnvolles Ergebnis, wenn die Datenpunkte viele Ausreißer enthalten. Dies ist in nebenstehender Darstellung illustriert. Es soll eine Gerade (das Modell) an die Punkte (Messwerte) angepasst werden. Der einzelne Ausreißer unter den 20 Datenpunkten kann einerseits durch traditionelle Verfahren vor Bestimmung der Gerade nicht ausgeschlossen werden. Andererseits beeinflusst er auf Grund seiner Lage die Ausgleichgsgerade unverhältnismäßig groß (sogenannter Hebelpunkt). Die vorhandenen Algorithmen konnten somit bei automatisch durchgeführten Messungen nur begrenzt eingesetzt werden.
Voraussetzung für RANSAC ist, dass mehr Datenpunkte vorliegen, als zur Bestimmung der Modellparameter notwendig sind. Der Algorithmus besteht dann aus folgenden Schritten:


Der 1981 präsentierte RANSAC-Algorithmus verfolgt gegenüber den herkömmlichen Methoden einen neuen iterativen Ansatz. Anstelle alle Messwerte gemeinsam auszugleichen, werden lediglich so viele zufällig ausgewählte Messwerte benutzt, wie nötig sind, die Modellparameter zu berechnen (im Fall der Geraden rechts wären das zwei Punkte). Das geschieht in der Hoffnung, das die ausgewählten Werte frei von Ausreißern sind. Zur Überprüfung wird die Distanz jedes Messwertes (also nicht nur der ursprünglich ausgewählten) zum Modell berechnet. Ist diese kleiner als ein bestimmter Schwellwert, dann ist dieser Messwert in Bezug auf das Modell kein grober Fehler. Er ''unterstützt'' es somit. Je mehr Messwerte das Modell unterstützen, desto wahrscheinlicher enthielten die zufällig zur Modellberechnung ausgewählten Werte keine Ausreißer.
#Wähle zufällig so viele Punkte aus den Datenpunkten, wie nötig sind, die Modellkurve zu berechnen. Das geschieht in Erwartung, dass diese Menge frei von Ausreißern ist.
#Ermittle mit den gewählten Punkten die Modellparameter.
#Bestimme die Teilmenge S der Datenpunkte, deren Abstand zur Modellkurve kleiner als ein bestimmter Wert ''d'' ist (diese Teilmenge wird „Consensus set“ genannt). Alle Punkte, die einen größeren Abstand haben, werden für dieses Modell als grobe Fehler angesehen und sind nicht in der Teilmenge enthalten. Sind ausreichend Punkte in der Teilmenge, speichere diese.
#Wiederhole die Schritte 1–3 N mal.


Diese drei Schritte – zufällige Auswahl von Messwerten, Berechnung der Modellparameter und Bestimmung der Unterstützung – werden mehrmals wiederholt. In jeder Iteration wird gespeichert, welche Messwerte das jeweilige Modell unterstützen. Diese Menge wird ''Consensus set'' genannt. Aus dem größten ''Consensus set'', der im Idealfall keine Ausreißer mehr enthält, wird abschließend mit einem der traditionellen Ausgleichsverfahren die Lösung ermittelt.
Nach Durchführung der N Iterationen wählt man diejenige Teilmenge S, welche die meisten Punkte enthält (so denn eine gefunden wurde). Nur mit diesen berechnet man mit den üblichen Verfahren die Modellparameter.


== Anwendungen ==
Eine alternative Variante des Algorithmus prüft in Schritt 3 zusätzlich die Anzahl der Punkte im Consensus set. Sind es hinreichend viele, terminiert der Algorithmus und das Modell wird mit den gewählten Punkten berechnet. Diese Variante wird als präemptives – das heißt vorzeitig abbrechendes – RANSAC bezeichnet. Bei diesem Vorgehen muss im Vorfeld bekannt sein, wie groß der Ausreißeranteil etwa ist.
Wie erwähnt treten viele Ausreißer vor allem bei automatischen Messungen auf. Diese werden häufig im Bereich des [[Maschinelles Sehen|Maschinellen Sehens]] durchgeführt, so dass RANSAC vor allem hier weit verbreitet ist. Im Folgenden werden einige Anwendungen vorgestellt.


[[Bild:Alcatraz03182006.jpg|thumb|Panoramabild von Alcatraz]]
=== Pseudocode ===
In der [[Bildverarbeitung]] wird RANSAC bei der Bestimmung von homologen Punkten zwischen zwei Kamerabildern eingesetzt. Homolog sind die zwei Bildpunkte, die ein einzelner Objektpunkt in den beiden Bildern erzeugt. Die Zuordnung homologer Punkte wird [[Korrespondenzproblem]] genannt. Das Resultat einer automatischen Analyse enthält meist eine größere Anzahl Fehlzuordnungen. Verfahren, die auf dem Ergebnis der Korrespondenzanalyse aufsetzen, benutzen dann RANSAC, um die Fehlzuordnungen auszuschließen. Ein Beispiel für diese Vorgehensweise ist die Erstellung eines Panoramabildes aus verschiedenen kleineren Einzelaufnahmen (sogenanntes [[Stitching]]).<ref>{{Literatur|Autor=Dag Ewering|Titel=Modellbasiertes Tracking mittels Linien- und Punktkorrelationen|Jahr=2006|Monat=September|Tag=|Online=[http://kola.opus.hbz-nrw.de/volltexte/2006/38/pdf/DiplomarbeitEwering.pdf online]|Zugriff=2. August 2007}}</ref>
'''Eingabe''':
Ein weiteres ist die Berechnung der [[Epipolargeometrie]]. Das ist ein Modell aus der Geometrie, das die geometrischen Beziehungen zwischen verschiedenen Kamerabildern des gleichen Objekts darstellt. Hier dient RANSAC zur Bestimmung der mathematischen Beschreibung, Fundamentalmatrix genannt.
r - Die benötigte Anzahl von Punkten, um die Parameter eines Modelles zu berechnen
'''P''' - Eine Menge von Datenpunkten mit |'''P'''|>r
N - Die Anzahl der Iterationen
t - Die minimale Anzahl von passenden Punkte, die andeutet, dass ein gutes Modell gefunden wurde
''d'' - Fehlertoleranz zur Bestimmung, ob ein Punkt zum Modell passt.
'''Ausgabe'''
Parameter des Modells, welches am besten zu den Datenpunkten passt, oder '''false'''.
'''Ablauf'''
'''Wiederhole''', bis N Iterationen durchgeführt wurden
Ziehe eine Teilmenge '''S''' aus '''P''' mit |'''S'''|=r
Berechne mit '''S''' das Modell, benenne es '''M'''
Benutze '''M''', um eine Teilmenge '''C'''<sub>N</sub> von '''P''' zu bestimmen, deren Punkte einen kleineren
Abstand von '''M''' als ''d'' haben ('''C'''<sub>N</sub> wird ''consensus set'' von '''S''' genannt)
Speichere '''C'''<sub>N</sub>, wenn |'''C'''<sub>N</sub>|>t
'''Ende'''
'''Wenn''' mindestens ein '''C'''<sub>N</sub> gespeichert wurde, benutze das '''C'''<sub>N</sub> mit dem meisten Punkten und
berechne damit das Modell '''oder''' terminiere mit '''false'''.


Bei der [[DARPA Grand Challenge]], einem Wettbewerb für autonome Landfahrzeuge, wurde RANSAC dazu benutzt, die Fahrbahnebene zu bestimmen sowie die Bewegung des Fahrzeuges zu rekonstruieren.
== Parameter ==
<ref>
{{Literatur
|Autor=Martin A. Fischler und Robert C. Bolles
|Titel=RANSAC: An Historical Perspective
|Jahr=2006|Monat=Juni|Tag=6
|Online=[http://cmp.felk.cvut.cz/ransac-cvpr2006/tutorial/R25-Bolles.ppt online]
|Zugriff=11. März 2008}}
</ref>


Der Algorithmus wird auch dazu verwand, in verrauschten dreidimensionalen Punktmengen geometrische Körper wie [[Zylinder (Geometrie)|Zylinder]] oder ähnliches anzupassen oder automatisch Punktewolken [[Segmentierung (Bildverarbeitung)|zu segmentieren]]. Dabei werden alle Punkte, die nicht zum selben Segment gehören, als Ausreißer betrachtet. Nach einer Schätzung des dominantesten Körpers in der Punktwolke werden alle zu diesem Körper gehörenden Punkte entfernt. Dieser Vorgang wird solange wiederholt, bis alle Körper in der Punktmenge gefunden wurden.
Der RANSAC-Algorithmus hängt im wesentlichen von drei Parametern ab:
<ref>{{Literatur|Autor=Christian Beder und Wolfgang Förstner|Titel=Direkte Bestimmung von Zylindern aus 3D-Punkten ohne Nutzung von Oberflächennormalen|Jahr=2006|Monat=|Tag=|Online=[http://www.ipb.uni-bonn.de/papers/2006/beder06.direkte.pdf online]|Zugriff=1. August 2007}}</ref>
#der Größe des Consensus set ''t'' (Mindestanzahl der passenden Punkte, die keine groben Fehler sind und die andeuten, dass ein gutes Modell gefunden wurde),
#der Fehlergrenze ''d'' (maximaler Abstand eines Datenpunkts vom Modell, um nicht als grober Fehler zu gelten) und
#der Anzahl N der Iterationen.


== Vorgehensweise und Parameter ==
===Größe des Consensus set===
Voraussetzung für RANSAC ist, dass mehr Datenpunkte vorliegen, als zur Bestimmung der Modellparameter notwendig sind. Der Algorithmus besteht aus folgenden Schritten:
Die Größe des Consensus set ''t'' wird meist analytisch oder experimentell bestimmt. Sie spielt dann eine entscheidende Rolle, wenn die im Abschnitt [[RANSAC-Algorithmus#Vorgehensweise|Vorgehensweise]] dargestellte Variante benutzt wird, also bei entsprechenden Größe des Consensus set abgebrochen wird. Eine gute Näherung für ''t'' ist, den prozentualen Anteil von Ausreißer ε zu nutzen, der in den Daten vermutet wird. Für n Datenpunkte gilt dann ''t''=(1-ε)·n. Bei 12 Datenpunkten und 20% Ausreißern ist ''t''=10.


# Wähle zufällig so viele Punkte aus den Datenpunkten, wie nötig sind, die Parameter des Modells zu berechnen. Das geschieht in Erwartung, dass diese Menge frei von Ausreißern ist.
===Fehlergrenze===
# Ermittle mit den gewählten Punkten die Modellparameter.
# Bestimme die Teilmenge Messwerte, deren Abstand zur Modellkurve kleiner als ein bestimmter Grenzwert ist (diese Teilmenge wird „Consensus set“ genannt). Alle Punkte, die einen größeren Abstand haben, werden als grobe Fehler angesehen. Enthält die Teilmenge eine gewisse Modestanzahl an Werten, wurde vermutlich ein gutes Modell gefunden und der ''Consensus set'' gespeichert.
# Wiederhole die Schritte 1–3 mehrmals.


Nach Durchführung von mehreren Iterationen wird diejenige Teilmenge gewählt, welche die meisten Punkte enthält (so denn eine gefunden wurde). Nur mit diesen werden mit einem der üblichen Ausgleichsverfahren die Modellparameter berechnet. Eine alternative Variante des Algorithmus beendet die Iterationen vorzeitig, wenn im Schritt&nbsp;3 genügend Punkte das Modell unterstützen. Diese Variante wird als präemptives – das heißt vorzeitig abbrechendes – RANSAC bezeichnet. Bei diesem Vorgehen muss im Vorfeld bekannt sein, wie groß in etwa der Ausreißeranteil ist, damit eingeschätzt werden kann, ob genügend Messwerte das Model unterstützen.
Auch diese Größe wird im Allgemeinen [[Empirie|empirisch]] festgelegt. Unterliegt der Messfehler jedoch einer mittelwertfreien [[Normalverteilung]] mit der [[Standardabweichung]] σ, kann man die Fehlergrenze ''d'' berechnen. In diesem Fall ist das Quadrat des Punktabstandes eine Summe von quadrierten normalverteilten Variablen und unterliegt einer [[Chi-Quadrat-Verteilung]] mit ''m'' Freiheitsgraden. ''m'' ist dabei die [[Kodimension]] des Modells. Für eine Linie ist die Kodimension 1, da nur der senkrechte Abstand zur Linie gemessen wird. Ist das Modell ein Punkt, so ist die Kodimension 2, und das Quadrat der Distanz ist die Summe des quadrierten Abstandes in ''x''- und ''y''-Richtung. Soll nun ein Punkt mit einer Wahrscheinlichkeit α kein Ausreißer sein, so ergibt sich für ''d''


Der Algorithmus hängt im Wesentlichen von drei Parametern ab:
:<math>
# der Größe des ''Consensus set'', also der Mindestanzahl der mit dem Modell konsistenten Punkte, die keine groben Fehler sind und die andeuten, dass ein gutes Modell gefunden wurde,
d^2=F^{-1}_m(\alpha)\sigma^2
# den maximaler Abstand eines Datenpunkts vom Modell, um nicht als grober Fehler zu gelten und
</math>.
# der Anzahl der Iterationen.


=== Größe des Consensus set ===
''F'' ist dabei die kumulierte Chi-Quadrat-Verteilung: <math>F_m(k^2)=\int_0^{k^2}\chi^2_m(\xi)d\xi</math>.
Die Mindestgröße des ''Consensus set'' wird meist analytisch oder experimentell bestimmt. Eine gute Näherung ist die Gesamtmenge der Messwerte abzüglich des prozentualen Anteils an Ausreißern <math>\epsilon</math>, der in den Daten vermutet wird. Für <math>n</math> Datenpunkte ist die Mindestgröße gleich <math>(1-\epsilon)\cdot n</math>. Beispielsweise ist bei 12 Datenpunkten und 20 % Ausreißern die Mindestgröße näherungsweise 10.


=== Maximaler Abstand eines Datenpunkts vom Modell ===
===Anzahl der Iterationen===
Auch diese Größe wird im Allgemeinen [[Empirie|empirisch]] festgelegt. Unterliegt der Messfehler jedoch einer mittelwertfreien [[Normalverteilung]] mit einer bekannten [[Standardabweichung]], kann die Fehlergrenze mittels den Gesetzen der [[Wahrscheinlichkeitsverteilung]] berechnet werden.
Man kann die Anzahl von Wiederholungen N so festlegen, dass mit der Wahrscheinlichkeit ''p'' mindestens einmal eine ausreißerfreie Teilmenge aus den Datenpunkten gezogen wird. Dabei ist s die Anzahl der Datenpunkte, die für ein gültiges Modell notwendig sind. Bezeichnet man mit ε den Anteil an Ausreißern in den Daten, benötigt man mindestens

=== Anzahl der Iterationen ===
Die Anzahl von Wiederholungen kann so festgelegt werden, dass mit einer bestimmten Wahrscheinlichkeit <math>p</math> mindestens einmal eine ausreißerfreie Teilmenge aus den Datenpunkten gezogen wird. Ist <math>s</math> die Anzahl der Datenpunkte, die zur Berechnung eines gültigen Modells notwendig sind und <math>\epsilon</math> der Anteil an Ausreißern in den Daten, werden mindestens
:<math>
:<math>
\text{N}=\frac{\log(1-p)}{\log(1-(1-\epsilon)^s)}
\frac{\log(1-p)}{\log(1-(1-\epsilon)^s)}
</math> Wiederholungen.
</math>
Wiederholungen benötigt.


In nachstehender Tabelle ist die notwendige Anzahl von Wiederholungen bei einer bestimmten Anzahl von Datenpunkten und Ausreißeranteil dargestellt. Die Wahrscheinlichkeit, eine ausreißerfreie Teilmenge aus allen Datenpunkten auszuwählen, ist dabei mit ''p''=99% festgelegt.
In nachstehender Tabelle ist die notwendige Anzahl von Wiederholungen bei einer bestimmten Anzahl von Datenpunkten und Ausreißeranteil dargestellt. Die Wahrscheinlichkeit, eine ausreißerfreie Teilmenge aus allen Datenpunkten auszuwählen, ist dabei mit 99 % festgelegt.
{| class="prettytable" style=" width:40%;"
{| class="prettytable" style="width:40%;"
|-style="background:#CEDAF2"
|-style="background:#CEDAF2"
! rowspan="2" style="width:30%;" | Beispiel
! rowspan="2" style="width:22%;" | Beispiel
! rowspan="2" style="width:30%;" | Anzahl der Datenpunkte
! rowspan="2" style="width:22%;" | Anzahl der Datenpunkte
! colspan="7" style="width:70%;" | Ausreißeranteil
! colspan="7" style="width:56%;" | Ausreißeranteil
|-style="background:#CEDAF2"
|-style="background:#CEDAF2"
! style="width:10%;" | 10%
! style="width:8%;" | 10 %
! style="width:10%;" | 20%
! style="width:8%;" | 20 %
! style="width:10%;" | 30%
! style="width:8%;" | 30 %
! style="width:10%;" | 40%
! style="width:8%;" | 40 %
! style="width:10%;" | 50%
! style="width:8%;" | 50 %
! style="width:10%;" | 60%
! style="width:8%;" | 60 %
! style="width:10%;" | 70%
! style="width:8%;" | 70 %
|-
|-align="center"
|-align="center"
| Linie
| Linie
Zeile 98: Zeile 97:
| 27
| 27
| 49
| 49
|-
|-align="center"
|-align="center"
| Fläche
| Fläche
Zeile 109: Zeile 107:
| 70
| 70
| 169
| 169
|-
|-align="center"
|-align="center"
| [[Epipolargeometrie#Die_Fundamentalmatrix|Fundamentalmatrix]]
| [[Epipolargeometrie#Die Fundamentalmatrix|Fundamentalmatrix]]
| 8
| 8
| 9
| 9
Zeile 120: Zeile 117:
| 7025
| 7025
| 70188
| 70188
|-
|}
|}


===Adaptive Bestimmung der Parameter===
== Adaptive Bestimmung der Parameter ==
Der Anteil an Ausreißern in der Gesamtmenge der Datenpunkte ist oft unbekannt. Somit ist es nicht möglich, die benötigte Zahl der Iterationen N und die Größe des Consensus set ''t'' zu bestimmen. In diesem Fall wird der Algorithmus mit der [[Worst-Case]]-Annahme eines Ausreißeranteils von 50&nbsp;% initialisiert. Nach jeder Iteration passt man dann diesen Wert an, wenn eine größere konsistente Mengen gefunden wurde. Beginnt man zum Beispiel die Iterationen mit einem ε = 50&nbsp;% und enthält der damit berechnete Consensus set aber 80&nbsp;% aller Datenpunkte, ergibt sich für die nächste Iteration ein verbessertes ε von 20&nbsp;%. Analog legt man N und ''t'' fest. Beide werden unter der Worst-Case-Annahme von ε = 50&nbsp;% berechnet und nach jeder Änderung von ε neu bestimmt.
Der Anteil der Ausreißern an der Gesamtmenge der Datenpunkte ist oft unbekannt. Somit ist es nicht möglich, die benötigte Zahl der Iterationen und die Mindestgröße eines ''Consensus set'' zu bestimmen. In diesem Fall wird der Algorithmus mit der [[Worst-Case]]-Annahme eines Ausreißeranteils von beispielsweise 50 % initialisiert und die Zahl der Iterationen und die Größe des ''Consensus set'' entsprechend berechnet. Nach jeder Iteration werden die beiden Werte angepasst, wenn eine größere konsistente Menge gefunden wurde. Wird zum Beispiel der Algorithmus mit einem Ausreißeranteil von 50 % gestartet und enthält der berechnete ''Consensus set'' aber 80 % aller Datenpunkte, ergibt sich ein verbesserter Wert für den Ausreißeranteil von 20 %. Die Zahl der Iterationen und die Größe des ''Consensus set'' werden dann neu berechnet.


==Beispiel==
== Beispiel ==
An eine Menge von Punkten in der Ebene soll eine Gerade angepasst werden. Die Punkte sind im ersten Bild dargestellt. Es werden in jeder Iteration zufällig zwei Punkte ausgesucht und aus diesen eine Gerade berechnet. Im Bild&nbsp;2 ist diese bei verschiedenen Durchgängen eingezeichnet. Rote Punkte sind zu der Gerade passende Punkte (Inliers) und blaue Punkte diejenigen, deren Abstand zur Gerade größer ist als die Fehlerschranke. Das dritte Bild zeigt die Lösung nach 1000&nbsp;Iterationsschritten.

An eine Menge von Punkten in der Ebene soll eine Gerade angepasst werden. Die Punkte sind im ersten Bild dargestellt. Es werden in jeder Iteration zufällig zwei Punkte ausgesucht und aus diesen eine Gerade berechnet. Im Bild 2 ist diese bei verschiedenen Durchgängen eingezeichnet. Rote Punkte sind dann zu der Gerade passende Punkte (Inliers) und blaue Punkte diejenigen, deren Abstand zur Gerade größer ist als die Fehlerschranke. Das dritte Bild zeigt die Lösung nach 1000 Iterationsschritten.


<gallery widths="180" caption="RANSAC zum Anpassen einer Geraden an Datenpunkte">
<gallery widths="180" caption="RANSAC zum Anpassen einer Geraden an Datenpunkte">
Zeile 136: Zeile 131:
</gallery>
</gallery>


== Weiterentwicklungen ==
==Anwendungen==

Ausreißer treten vor allem bei automatischen Messungen auf. Automatische Messungen und Analysen werden häufig im Bereich des [[Maschinelles Sehen|Maschinellen Sehens]] durchgeführt, so dass RANSAC vor allem hier weite Verbreitung gefunden hat.

In der [[Bildverarbeitung]] wird RANSAC bei der Bestimmung von homologen Punkten zwischen zwei Bildern eingesetzt. Homolog sind zwei Punkte, wenn sie in zwei Bildern jeweils den gleichen Objektpunkt (z.B. die gleiche Hausecke) darstellen (sogenanntes [[Korrespondenzproblem]]). Zum Finden von homologen Punkten werden häufig automatische Verfahren eingesetzt, die im Allgemeinen viele Ausreißer produzieren. Hier dient RANSAC als Lösung, um diese auszufiltern. Das Ergebnis wird unter anderem dazu verwendet, Fotografien so zu modifizieren, dass ein Gesamtbild daraus zusammengesetzt werden kann (sogenanntes [[Stitching]]).<ref>{{Literatur|Autor=Dag Ewering|Titel=Modellbasiertes Tracking mittels Linien- und Punktkorrelationen|Jahr=2006|Monat=September|Tag=|Online=[http://kola.opus.hbz-nrw.de/volltexte/2006/38/pdf/DiplomarbeitEwering.pdf online]|Zugriff=2. August 2007}}</ref> Auch dient es zur Berechnung der [[Epipolargeometrie#Die_Fundamentalmatrix|Fundamentalmatrix]].

RANSAC wird auch dazu benutzt, in verrauschten dreidimensionalen Punktmengen geometrische Körper wie [[Zylinder (Geometrie)|Zylinder]] oder ähnliches anzupassen oder automatisch Punktewolken [[Segmentierung (Bildverarbeitung)|zu segmentieren]]. Dabei betrachtet man alle Punkte, die nicht zum selben Segment gehören, als Ausreißer. Im ersten Schritt schätzt man zunächst robust den dominantesten Körper in der Punktwolke und entfernt alle zu diesem gehörende Punkte. Dieser Vorgang wird solange wiederholt, bis alle Körper in der Punktmenge gefunden wurden.
<ref>{{Literatur|Autor=Christian Beder und Wolfgang Förstner|Titel=Direkte Bestimmung von Zylindern aus 3D-Punkten ohne Nutzung von Oberflächennormalen|Jahr=2006|Monat=|Tag=|Online=[http://www.ipb.uni-bonn.de/papers/2006/beder06.direkte.pdf online]|Zugriff=1. August 2007}}</ref>

== Erweiterung==

Es existieren einige Erweiterungen von RANSAC, von denen hier zwei wichtige vorgestellt werden.
Es existieren einige Erweiterungen von RANSAC, von denen hier zwei wichtige vorgestellt werden.


===LO-RANSAC===
=== LO-RANSAC ===
[[Bild:RANSAC PROBLEM INLIENER.png|180px|thumb|Modellgerade wird nicht durch alle Inlier unterstützt.]]
[[Bild:RANSAC PROBLEM INLIENER.png|thumb|180px|Modellgerade wird nicht durch alle Inlier unterstützt.]]
Es hat sich in Experimenten gezeigt, dass man im Allgemeinen mehr Iterationsschritte N als die theoretisch ausreichende Anzahl benötigt. Berechnet man mit der minimalen Zahl von Punkten, von denen alle keine Ausreißer sind, ein Modell, so müssen nicht alle Inlier dieses Modell unterstützen (also einen kleineren Abstand als ''d'' zum Modell haben). Das Problem ist in nebenstehender Abbildung illustriert. Obwohl die Gerade mittels zweier Inlier berechnet wurde (schwarze Punkte), werden einige andere offensichtlich richtige Punkte rechts oben im Bild als Ausreißer (blaue Sterne) klassifiziert.
Es hat sich in Experimenten gezeigt, dass im Allgemeinen mehr Iterationsschritte als die theoretisch ausreichende Anzahl nötig sind: wird mit einer fehlerfreien Menge von Punkten ein Modell berechnet, so müssen nicht alle anderen fehlerfreien Werte dieses Modell unterstützen. Das Problem ist in nebenstehender Abbildung illustriert. Obwohl die Gerade mittels zweier fehlerfreier Werte berechnet wurde (schwarze Punkte), werden einige andere offensichtlich richtige Punkte rechts oben im Bild als Ausreißer (blaue Sterne) klassifiziert.


Aus diesem Grund wird der ursprüngliche Algorithmus bei LO-RANSAC (local optimised RANSAC) im Schritt 3 erweitert. Es wird die Teilmenge der Punkte bestimmt, die keine Ausreißer sind, und mit diesen eine Optimierung durchgeführt. Von diesem optimierten Modell wird nochmals die Teilmenge berechnet, deren Abstand zum Modell kleiner ''d'' ist. Erst diese wird gespeichert.
Aus diesem Grund wird der ursprüngliche Algorithmus bei LO-RANSAC (local optimised RANSAC) im Schritt 3 erweitert. Es wird die Teilmenge der Punkte bestimmt, die keine Ausreißer sind, und mit diesen eine Optimierung durchgeführt. Von diesem optimierten Modell wird nochmals die Teilmenge berechnet, deren Abstand zum Modell kleiner als die Fehlerschranke ist. Erst diese wird gespeichert.
<ref>{{Literatur|Autor=Ondřej Chum, Jiři Matas and Štěpàn Obdržàlek|Titel=ENHANCING RANSAC BY GENERALIZED MODEL OPTIMIZATION|Jahr=2004|Monat=|Tag=|Online=[ftp://cmp.felk.cvut.cz/pub/cmp/articles/chum/chum-accv04.pdf online]|Zugriff=7. August 2007}}</ref>
<ref>{{Literatur|Autor=Ondřej Chum, Jiři Matas and Štěpàn Obdržàlek|Titel=ENHANCING RANSAC BY GENERALIZED MODEL OPTIMIZATION|Jahr=2004|Monat=|Tag=|Online=[ftp://cmp.felk.cvut.cz/pub/cmp/articles/chum/chum-accv04.pdf online]|Zugriff=7. August 2007}}</ref>


===MLESAC===
=== MSAC ===
Bei RANSAC wird das Modell ausgewählt, welches durch die meisten Messwerte unterstützt wird. Dies entspricht der Minimierung einer Summe <math>C</math>, bei der alle fehlerfreien Werte mit 0 und alle Ausreißer mit einem konstanten Wert eingehen:
Ein Problem von RANSAC ist, dass das berechnete Modell sehr ungenau sein kann, wenn die Fehlerschranke ''d'' zu hoch angesetzt wurde. Das wird schon dadurch ersichtlich, dass RANSAC versucht, folgende Kostenfunktion zu minimieren:

:<math>
:<math>
C=\sum_ip(e^2_1) \quad \text{mit} \quad p=\left\{ \begin{array}{ll}
C=\sum_ip(\text{Fehler}) \quad \text{mit} \quad p=\left\{ \begin{array}{ll}
0 & e^2<d^2 \\
0, \text{wenn} & \text{Fehler}<\text{Fehlerschranke} \\
\text{konstant} & e^2 \geq d^2
\text{konstant, wenn} & \text{Fehler} \geq \text{Fehlerschranke}
\end{array}
\end{array}
\right.
\right.
</math>
</math>
Das berechnete Modell kann sehr ungenau sein kann, wenn die Fehlerschranke zu hoch angesetzt wurde – je höher diese ist, desto mehr Lösungen haben gleiche Werte für <math>C</math>. Im Extremfall, wenn alle Werte einen Fehler kleiner als die Fehlerschranke besitzen, ist die Summe immer 0. Damit tendiert RANSAC zu einer schlechten Schätzung.
(''e'' ist dabei der Fehler des Messpunktes.) Das heißt, Inlier zählen nicht und Ausreißer zählen einen konstanten Wert. Je höher also ''d'' ist, desto mehr Lösungen haben gleiche Werte für C, was zu einer schlechten Schätzung tendiert. MLESAC (Maximum Likelihood Estimation SAmple Consensus) ist eine Erweiterung von RANSAC. Dabei wird nicht nur die Zahl der Inlier maximiert, sondern auch deren Fehler mit in die Berechnung mit einbezogen. Dazu wird eine neue Minimierungsfunktion definiert:

MSAC ('''M'''-Estimator '''SA'''mple '''C'''onsensus) ist eine Erweiterung von RANSAC. Dabei wird nicht nur die Zahl der fehlerfreien Messwerte maximiert, sondern deren Fehler mit in die Berechnung mit einbezogen. Dazu wird eine neue Minimierungsfunktion definiert:
:<math>
:<math>
C=\sum_ip(e^2_1) \quad \text{mit} \quad p=\left\{ \begin{array}{ll}
C=\sum_ip(\text{Fehler}) \quad \text{mit} \quad p=\left\{ \begin{array}{ll}
e^2 & e^2<d^2 \\
\text{Fehler, wenn} & \text{Fehler}<\text{Fehlerschranke} \\
d^2 & e^2 \geq d^2
\text{konstant, wenn} & \text{Fehler} \geq \text{Fehlerschranke}
\end{array}
\end{array}
\right.
\right.
</math>
</math>
Mit dieser Funktion erhalten Ausreißer eine bestimmte Strafe, doch werden Inlier jetzt danach gewichtet, wie gut sie zu den Messwerten passen.
Mit dieser Funktion erhalten Ausreißer eine bestimmte Strafe (die größer als die Fehlerschranke sein muss). Fehlerfreie Werte werden jetzt danach gewichtet, wie gut sie zu den Messwerten passen. Dadurch wird das angesprochene Problem beseitigt.
<ref>{{Literatur|Autor=P.H.S. Torr und A. Zisserman|Titel=MLESAC: A new robust estimator with application to estimating image geometry|Jahr=1996|Monat=|Tag=|Online=[http://www.robots.ox.ac.uk/~vgg/publications/papers/torr00.pdf online]|Zugriff=7. August 2007}}</ref>
<ref>{{Literatur|Autor=P.H.S. Torr und A. Zisserman|Titel=MLESAC: A new robust estimator with application to estimating image geometry|Jahr=1996|Monat=|Tag=|Online=[http://www.robots.ox.ac.uk/~vgg/publications/papers/torr00.pdf online]|Zugriff=7. August 2007}}</ref>


==Alternativen==
== Alternativen ==
Eine Alternative zu RANSAC ist die Verwendung von [[M-Schätzer]]n. Diese sind im Vergleich zu anderen Schätzern wie etwa den [[Maximum-Likelihood-Methode|Maximum-Likelihood-Schätzern]] [[Robustheit|robuster]] gegenüber Ausreißern.

Eine Alternative zu RANSAC ist die Verwendung von [[M-Schätzer|M-Schätzern]]. Diese sind im Vergleich zu anderen Schätzern wie etwa den [[Maximum-Likelihood-Methode|Maximum-Likelihood-Schätzern]] [[Robustheit|robuster]] gegenüber Ausreißern.


== Einzelnachweise ==
== Einzelnachweise ==
<references/>
<references/>


== Literatur==
== Literatur ==
*{{internetquelle|autor=Martin A. Fischler und Robert C. Bolles|url=http://www.tu-chemnitz.de/etit/proaut/paperdb/download/fischler81.pdf|titel=Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography|datum=1981|zugriff=6. August 2007}}
* {{internetquelle|autor=Martin A. Fischler und Robert C. Bolles|url=http://www.tu-chemnitz.de/etit/proaut/paperdb/download/fischler81.pdf|titel=Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography|datum=1981|zugriff=11. März 2008}}
* {{internetquelle|autor=Verschiedene Autoren|url=http://cmp.felk.cvut.cz/ransac-cvpr2006/|titel=25 Years of RANSAC, Workshop in conjunction with CVPR 2006|datum=2006|zugriff=11. März 2008}}

*{{internetquelle|autor=Verschiedene Autoren|url=http://cmp.felk.cvut.cz/ransac-cvpr2006/|titel=25 Years of RANSAC, Workshop in conjunction with CVPR 2006|datum=2006|zugriff=7. August 2007}}
* {{internetquelle|autor=Peter Kovesi|url=http://www.csse.uwa.edu.au/~pk/research/matlabfns/Robust/ransac.m|titel=RANSAC Robustly fits a model to data with the RANSAC algorithm (Matlab-Implementation)|datum=2007|zugriff=11. März 2008}}
* {{Literatur

*{{internetquelle|autor=Peter Kovesi|url=http://www.csse.uwa.edu.au/~pk/research/matlabfns/Robust/ransac.m|titel=RANSAC – Robustly fits a model to data with the RANSAC algorithm (Matlab-Implementation)|datum=2007|zugriff=6. August 2007}}

*{{Literatur
|Autor=Richard Hartley and Andrew Zisserman
|Autor=Richard Hartley and Andrew Zisserman
|Titel=Multiple View Geometry in computer vision
|Titel=Multiple View Geometry in computer vision
|Verlag=Cambridge University Press
|Verlag=Cambridge University Press
|Ort=Cambridge
|Ort=Cambridge
|Jahr=2003
|Jahr=2003
|ISBN=ISBN 0-521-54051-8
|ISBN=0-521-54051-8
}}
}}
* {{Literatur

*{{Literatur
|Autor=Volker Rodehorst
|Autor=Volker Rodehorst
|Titel=Photogrammetrische 3D-Rekonstruktion
|Titel=Photogrammetrische 3D-Rekonstruktion
Zeile 206: Zeile 187:
|Ort=Berlin
|Ort=Berlin
|Jahr=2004
|Jahr=2004
|ISBN=ISBN 3-936846-83-9
|ISBN=3-936846-83-9
}}
}}


{{Lesenswert}}
{{DEFAULTSORT:Ransac Algorithmus}}
{{Review|N}}

{{DEFAULTSORT:Ransac-Algorithmus}}
[[Kategorie:Algorithmus]]
[[Kategorie:Algorithmus]]


[[en:RANSAC]]
[[en:RANSAC]]

{{Lesenswert}}

Version vom 13. März 2008, 20:41 Uhr

RANSAC (Random Sample Consensus, deutsch etwa „Übereinstimmung mit einer zufälligen Stichprobe“) ist ein Algorithmus zur Detektion von Ausreißern und groben Fehlern innerhalb einer Reihe von Messwerten. Er wurde offiziell 1981 von Martin A. Fischler und Robert C. Bolles in den Communications of the ACM vorgestellt. Eine interne Präsentation (beide Autoren arbeiten bis heute am Stanford Research Institute[1][2]) fand bereits im März 1980 statt.[3]

Einleitung und Prinzip

Oft liegen als Ergebnis einer Messung Datenpunkte vor, die physikalische Messwerte wie Druck, Entfernung oder Temperatur, wirtschaftliche Größen oder Ähnliches repräsentieren. In diese Punkte soll eine möglichst genau passende, parameterabhängige Modellkurve gelegt werden. Die gemessenen Datenpunkte können Ausreißer enthalten. Das sind diejenigen Werte, die nicht in die erwartete Messreihe passen oder allgemein nicht den Erwartungswert entsprechen.

Messungen wurden bis zur Entwicklung der Digitaltechnologie im Allgemeinen manuell durchgeführt. Entsprechend war oft auf Grund des Aufwandes die Anzahl der Messwerte klein. Gleichzeitig war aber durch die Kontrolle durch den Operateur der prozentuale Anteil der Ausreißer meist gering. Die damals verwendeten Auswertealgorithmen wie die Methode der kleinsten Quadrate sind darauf angepasst: sie versuchen, mit der Gesamtheit der Datenpunkte das Modell zu bestimmen und im Nachhinein die wenigen Ausreißern zu detektieren und zu entfernen. Voraussetzung all dieser Verfahren ist, dass mehr Datenpunkte vorliegen als zur Ermittlung der Parameter notwendig sind, das Modell also überbestimmt ist.

Ausreißer:
Der eine Ausreißer zieht die Ausgleichsgerade nach oben

Mit der Entwicklung der Digitaltechnik ab Anfang der 1980er Jahre (so stellten zum Beispiel im Jahre 1981 IBM den ersten Personal Computer, Apple den Apple III und Sony mit der Mavica die erste Digitalkamera vor) änderten sich jedoch die Grundlagen. Durch die neuen Möglichkeiten wurden zunehmend automatische Messverfahren vor allem im Bereich des maschinellen Sehens eingesetzt. Als Ergebnis liegen hier oft eine große Anzahl an Werten vor, die jedoch meist viele Ausreißern enthalten. Die traditionellen Verfahren gehen jedoch von einer Normalverteilung der Messwerte aus und liefern zum Teil kein sinnvolles Ergebnis, wenn die Datenpunkte viele Ausreißer enthalten. Dies ist in nebenstehender Darstellung illustriert. Es soll eine Gerade (das Modell) an die Punkte (Messwerte) angepasst werden. Der einzelne Ausreißer unter den 20 Datenpunkten kann einerseits durch traditionelle Verfahren vor Bestimmung der Gerade nicht ausgeschlossen werden. Andererseits beeinflusst er auf Grund seiner Lage die Ausgleichgsgerade unverhältnismäßig groß (sogenannter Hebelpunkt). Die vorhandenen Algorithmen konnten somit bei automatisch durchgeführten Messungen nur begrenzt eingesetzt werden.

Der 1981 präsentierte RANSAC-Algorithmus verfolgt gegenüber den herkömmlichen Methoden einen neuen iterativen Ansatz. Anstelle alle Messwerte gemeinsam auszugleichen, werden lediglich so viele zufällig ausgewählte Messwerte benutzt, wie nötig sind, die Modellparameter zu berechnen (im Fall der Geraden rechts wären das zwei Punkte). Das geschieht in der Hoffnung, das die ausgewählten Werte frei von Ausreißern sind. Zur Überprüfung wird die Distanz jedes Messwertes (also nicht nur der ursprünglich ausgewählten) zum Modell berechnet. Ist diese kleiner als ein bestimmter Schwellwert, dann ist dieser Messwert in Bezug auf das Modell kein grober Fehler. Er unterstützt es somit. Je mehr Messwerte das Modell unterstützen, desto wahrscheinlicher enthielten die zufällig zur Modellberechnung ausgewählten Werte keine Ausreißer.

Diese drei Schritte – zufällige Auswahl von Messwerten, Berechnung der Modellparameter und Bestimmung der Unterstützung – werden mehrmals wiederholt. In jeder Iteration wird gespeichert, welche Messwerte das jeweilige Modell unterstützen. Diese Menge wird Consensus set genannt. Aus dem größten Consensus set, der im Idealfall keine Ausreißer mehr enthält, wird abschließend mit einem der traditionellen Ausgleichsverfahren die Lösung ermittelt.

Anwendungen

Wie erwähnt treten viele Ausreißer vor allem bei automatischen Messungen auf. Diese werden häufig im Bereich des Maschinellen Sehens durchgeführt, so dass RANSAC vor allem hier weit verbreitet ist. Im Folgenden werden einige Anwendungen vorgestellt.

Panoramabild von Alcatraz

In der Bildverarbeitung wird RANSAC bei der Bestimmung von homologen Punkten zwischen zwei Kamerabildern eingesetzt. Homolog sind die zwei Bildpunkte, die ein einzelner Objektpunkt in den beiden Bildern erzeugt. Die Zuordnung homologer Punkte wird Korrespondenzproblem genannt. Das Resultat einer automatischen Analyse enthält meist eine größere Anzahl Fehlzuordnungen. Verfahren, die auf dem Ergebnis der Korrespondenzanalyse aufsetzen, benutzen dann RANSAC, um die Fehlzuordnungen auszuschließen. Ein Beispiel für diese Vorgehensweise ist die Erstellung eines Panoramabildes aus verschiedenen kleineren Einzelaufnahmen (sogenanntes Stitching).[4] Ein weiteres ist die Berechnung der Epipolargeometrie. Das ist ein Modell aus der Geometrie, das die geometrischen Beziehungen zwischen verschiedenen Kamerabildern des gleichen Objekts darstellt. Hier dient RANSAC zur Bestimmung der mathematischen Beschreibung, Fundamentalmatrix genannt.

Bei der DARPA Grand Challenge, einem Wettbewerb für autonome Landfahrzeuge, wurde RANSAC dazu benutzt, die Fahrbahnebene zu bestimmen sowie die Bewegung des Fahrzeuges zu rekonstruieren. [5]

Der Algorithmus wird auch dazu verwand, in verrauschten dreidimensionalen Punktmengen geometrische Körper wie Zylinder oder ähnliches anzupassen oder automatisch Punktewolken zu segmentieren. Dabei werden alle Punkte, die nicht zum selben Segment gehören, als Ausreißer betrachtet. Nach einer Schätzung des dominantesten Körpers in der Punktwolke werden alle zu diesem Körper gehörenden Punkte entfernt. Dieser Vorgang wird solange wiederholt, bis alle Körper in der Punktmenge gefunden wurden. [6]

Vorgehensweise und Parameter

Voraussetzung für RANSAC ist, dass mehr Datenpunkte vorliegen, als zur Bestimmung der Modellparameter notwendig sind. Der Algorithmus besteht aus folgenden Schritten:

  1. Wähle zufällig so viele Punkte aus den Datenpunkten, wie nötig sind, die Parameter des Modells zu berechnen. Das geschieht in Erwartung, dass diese Menge frei von Ausreißern ist.
  2. Ermittle mit den gewählten Punkten die Modellparameter.
  3. Bestimme die Teilmenge Messwerte, deren Abstand zur Modellkurve kleiner als ein bestimmter Grenzwert ist (diese Teilmenge wird „Consensus set“ genannt). Alle Punkte, die einen größeren Abstand haben, werden als grobe Fehler angesehen. Enthält die Teilmenge eine gewisse Modestanzahl an Werten, wurde vermutlich ein gutes Modell gefunden und der Consensus set gespeichert.
  4. Wiederhole die Schritte 1–3 mehrmals.

Nach Durchführung von mehreren Iterationen wird diejenige Teilmenge gewählt, welche die meisten Punkte enthält (so denn eine gefunden wurde). Nur mit diesen werden mit einem der üblichen Ausgleichsverfahren die Modellparameter berechnet. Eine alternative Variante des Algorithmus beendet die Iterationen vorzeitig, wenn im Schritt 3 genügend Punkte das Modell unterstützen. Diese Variante wird als präemptives – das heißt vorzeitig abbrechendes – RANSAC bezeichnet. Bei diesem Vorgehen muss im Vorfeld bekannt sein, wie groß in etwa der Ausreißeranteil ist, damit eingeschätzt werden kann, ob genügend Messwerte das Model unterstützen.

Der Algorithmus hängt im Wesentlichen von drei Parametern ab:

  1. der Größe des Consensus set, also der Mindestanzahl der mit dem Modell konsistenten Punkte, die keine groben Fehler sind und die andeuten, dass ein gutes Modell gefunden wurde,
  2. den maximaler Abstand eines Datenpunkts vom Modell, um nicht als grober Fehler zu gelten und
  3. der Anzahl der Iterationen.

Größe des Consensus set

Die Mindestgröße des Consensus set wird meist analytisch oder experimentell bestimmt. Eine gute Näherung ist die Gesamtmenge der Messwerte abzüglich des prozentualen Anteils an Ausreißern , der in den Daten vermutet wird. Für Datenpunkte ist die Mindestgröße gleich . Beispielsweise ist bei 12 Datenpunkten und 20 % Ausreißern die Mindestgröße näherungsweise 10.

Maximaler Abstand eines Datenpunkts vom Modell

Auch diese Größe wird im Allgemeinen empirisch festgelegt. Unterliegt der Messfehler jedoch einer mittelwertfreien Normalverteilung mit einer bekannten Standardabweichung, kann die Fehlergrenze mittels den Gesetzen der Wahrscheinlichkeitsverteilung berechnet werden.

Anzahl der Iterationen

Die Anzahl von Wiederholungen kann so festgelegt werden, dass mit einer bestimmten Wahrscheinlichkeit mindestens einmal eine ausreißerfreie Teilmenge aus den Datenpunkten gezogen wird. Ist die Anzahl der Datenpunkte, die zur Berechnung eines gültigen Modells notwendig sind und der Anteil an Ausreißern in den Daten, werden mindestens

Wiederholungen benötigt.

In nachstehender Tabelle ist die notwendige Anzahl von Wiederholungen bei einer bestimmten Anzahl von Datenpunkten und Ausreißeranteil dargestellt. Die Wahrscheinlichkeit, eine ausreißerfreie Teilmenge aus allen Datenpunkten auszuwählen, ist dabei mit 99 % festgelegt.

Beispiel Anzahl der Datenpunkte Ausreißeranteil
10 % 20 % 30 % 40 % 50 % 60 % 70 %
Linie 2 3 5 7 11 17 27 49
Fläche 3 4 7 11 19 35 70 169
Fundamentalmatrix 8 9 26 78 272 1177 7025 70188

Adaptive Bestimmung der Parameter

Der Anteil der Ausreißern an der Gesamtmenge der Datenpunkte ist oft unbekannt. Somit ist es nicht möglich, die benötigte Zahl der Iterationen und die Mindestgröße eines Consensus set zu bestimmen. In diesem Fall wird der Algorithmus mit der Worst-Case-Annahme eines Ausreißeranteils von beispielsweise 50 % initialisiert und die Zahl der Iterationen und die Größe des Consensus set entsprechend berechnet. Nach jeder Iteration werden die beiden Werte angepasst, wenn eine größere konsistente Menge gefunden wurde. Wird zum Beispiel der Algorithmus mit einem Ausreißeranteil von 50 % gestartet und enthält der berechnete Consensus set aber 80 % aller Datenpunkte, ergibt sich ein verbesserter Wert für den Ausreißeranteil von 20 %. Die Zahl der Iterationen und die Größe des Consensus set werden dann neu berechnet.

Beispiel

An eine Menge von Punkten in der Ebene soll eine Gerade angepasst werden. Die Punkte sind im ersten Bild dargestellt. Es werden in jeder Iteration zufällig zwei Punkte ausgesucht und aus diesen eine Gerade berechnet. Im Bild 2 ist diese bei verschiedenen Durchgängen eingezeichnet. Rote Punkte sind zu der Gerade passende Punkte (Inliers) und blaue Punkte diejenigen, deren Abstand zur Gerade größer ist als die Fehlerschranke. Das dritte Bild zeigt die Lösung nach 1000 Iterationsschritten.

Weiterentwicklungen

Es existieren einige Erweiterungen von RANSAC, von denen hier zwei wichtige vorgestellt werden.

LO-RANSAC

Modellgerade wird nicht durch alle Inlier unterstützt.

Es hat sich in Experimenten gezeigt, dass im Allgemeinen mehr Iterationsschritte als die theoretisch ausreichende Anzahl nötig sind: wird mit einer fehlerfreien Menge von Punkten ein Modell berechnet, so müssen nicht alle anderen fehlerfreien Werte dieses Modell unterstützen. Das Problem ist in nebenstehender Abbildung illustriert. Obwohl die Gerade mittels zweier fehlerfreier Werte berechnet wurde (schwarze Punkte), werden einige andere offensichtlich richtige Punkte rechts oben im Bild als Ausreißer (blaue Sterne) klassifiziert.

Aus diesem Grund wird der ursprüngliche Algorithmus bei LO-RANSAC (local optimised RANSAC) im Schritt 3 erweitert. Es wird die Teilmenge der Punkte bestimmt, die keine Ausreißer sind, und mit diesen eine Optimierung durchgeführt. Von diesem optimierten Modell wird nochmals die Teilmenge berechnet, deren Abstand zum Modell kleiner als die Fehlerschranke ist. Erst diese wird gespeichert. [7]

MSAC

Bei RANSAC wird das Modell ausgewählt, welches durch die meisten Messwerte unterstützt wird. Dies entspricht der Minimierung einer Summe , bei der alle fehlerfreien Werte mit 0 und alle Ausreißer mit einem konstanten Wert eingehen:

Das berechnete Modell kann sehr ungenau sein kann, wenn die Fehlerschranke zu hoch angesetzt wurde – je höher diese ist, desto mehr Lösungen haben gleiche Werte für . Im Extremfall, wenn alle Werte einen Fehler kleiner als die Fehlerschranke besitzen, ist die Summe immer 0. Damit tendiert RANSAC zu einer schlechten Schätzung.

MSAC (M-Estimator SAmple Consensus) ist eine Erweiterung von RANSAC. Dabei wird nicht nur die Zahl der fehlerfreien Messwerte maximiert, sondern deren Fehler mit in die Berechnung mit einbezogen. Dazu wird eine neue Minimierungsfunktion definiert:

Mit dieser Funktion erhalten Ausreißer eine bestimmte Strafe (die größer als die Fehlerschranke sein muss). Fehlerfreie Werte werden jetzt danach gewichtet, wie gut sie zu den Messwerten passen. Dadurch wird das angesprochene Problem beseitigt. [8]

Alternativen

Eine Alternative zu RANSAC ist die Verwendung von M-Schätzern. Diese sind im Vergleich zu anderen Schätzern wie etwa den Maximum-Likelihood-Schätzern robuster gegenüber Ausreißern.

Einzelnachweise

  1. Robert C. Bolles: Homepage beim SRI. (online [abgerufen am 11. März 2008]).
  2. Martin A. Fischler: Homepage beim SRI. (online [abgerufen am 11. März 2008]).
  3. Martin A. Fischler und Robert C. Bolles: Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography. März 1980 (online [PDF; abgerufen am 13. September 2007]).
  4. Dag Ewering: Modellbasiertes Tracking mittels Linien- und Punktkorrelationen. September 2006 (online [PDF; abgerufen am 2. August 2007]).
  5. Martin A. Fischler und Robert C. Bolles: RANSAC: An Historical Perspective. 6. Juni 2006 (online [abgerufen am 11. März 2008]).
  6. Christian Beder und Wolfgang Förstner: Direkte Bestimmung von Zylindern aus 3D-Punkten ohne Nutzung von Oberflächennormalen. 2006 (online [PDF; abgerufen am 1. August 2007]).
  7. Ondřej Chum, Jiři Matas and Štěpàn Obdržàlek: ENHANCING RANSAC BY GENERALIZED MODEL OPTIMIZATION. 2004 (online [PDF; abgerufen am 7. August 2007]).
  8. P.H.S. Torr und A. Zisserman: MLESAC: A new robust estimator with application to estimating image geometry. 1996 (online [PDF; abgerufen am 7. August 2007]).

Literatur