Verständnis von binären robusten unabhängigen Grundfunktionen („BRIEF“)

14

Wie sind die Deskriptoren im BRIEF-Algorithmus aufeinander abgestimmt?

Wie wird das Vorlagenbild in einem anderen Bild gefunden? Wie vergleichen wir die Deskriptoren? Ich habe diesen Artikel gelesen, aber nicht verstanden, wie sie es gemacht haben.

Sie schrieben, dass sie Deskriptoren mit Hilfe der Hamming-Distanz verglichen, aber wie wird eine Invarianz gegenüber Änderungen in der Beleuchtung, Größe usw. erreicht?

maximus
quelle

Antworten:

15

Erstens gibt es in diesem Dokument keine Vorlage - das Wort Vorlage (n) hat in Computer Vision eine andere Bedeutung.

Die in diesem Artikel verwendete Methode ist relativ einfach. Lass es mich für dich aufschlüsseln. Es gibt drei wichtige Dinge, die Sie tun müssen, wenn Sie Aufgaben wie Objekterkennung, Bildanpassung, Bildzusammenfügung und ähnliche andere unter Verwendung lokaler Funktionen ausführen

Das erste wichtige ist die Erkennung; In diesem Schritt möchten Sie Points-of-Interest oder Keypoints erkennen. Dies bedeutet, dass Sie lokale Punkte (im Grunde genommen kleine Patches) auswählen möchten, die für das Bild interessant sind. Es gibt viele Möglichkeiten, dies zu tun. Dieses Papier trägt nicht in diesem Bereich bei. Es scheint jedoch, dass sie den SURF-Feature-Detektor und die CenSurE-Schlüsselpunkte verwenden (Sie können sie nachschlagen, wenn Sie mehr über sie erfahren möchten. Ich werde nicht über diesen Schritt sprechen, außer dass sie Features wie Farbverläufe und so verwenden, was bedeutet, dass Wenn Sie ein Foto haben, ist es unwahrscheinlich, dass ein Punkt in der Mitte des Himmels als Interessenpunkt ausgewählt wird. Dies liegt daran, dass die Pixel um diesen Punkt alle die gleiche Intensität haben. Dinge, die "beschäftigt" sind, werden in der Regel als Interessenpunkte ausgewählt (zB Tisch / Gebäudekanten / Ecken).

Nachdem die Erkennung abgeschlossen ist, wird die Funktionsbeschreibung angezeigtfolgt. Sie kennen die interessanten Punkte im Bild und möchten sie nun beschreiben (im Grunde möchten Sie die Punkte / Flecken um die interessanten Punkte beschreiben). SIFT ist ein beliebter Feature-Deskriptor. In diesem Artikel haben sie eine neue mit dem Namen BRIEF entwickelt. KURZ basiert auf Vergleichen. Nehmen wir also an, wir haben einen Patch (50 x 50 Pixel), wählen zwei Punkte aus und vergleichen die Intensitäten der beiden Punkte. Wenn der erste Punkt größer als der zweite Punkt ist, weisen wir den Wert zu. ' 1 ', sonst' 0 ', machen wir das für eine Reihe von Paaren und erhalten eine Folge von Booleschen Werten. Jetzt lautet die große Frage: Wie wählen Sie das Punktepaar aus? In dem Artikel werden 5 Arten erläutert, die relativ ähnlich sind. Ich werde die erste beschreiben. Was Sie tun, ist, dass Sie einheitlich (mit gleicher Wahrscheinlichkeit) einen Punkt von -S / 2 bis S / 2 wählen, In unserem Beispiel haben wir angegeben, dass die Patchgröße 50 beträgt. Daher wählen wir einen Punkt zwischen -25 und 25. Angenommen, die 0,0-Koordinate befindet sich in der Mitte des Patches. Also hier ist ein Beispiel;

Wir wollen das erste Paar auswählen, jeder Punkt besteht aus (X, Y) -Koordinaten, also wählen wir einheitlich die X-Koordinate des ersten Punktes und dann die Y-Koordinate des ersten Punktes. Nehmen wir an, es ist (10, -1). , jetzt der zweite Punkt; Wir wählen einheitlich die X-Koordinate für den zweiten Punkt und die Y-Koordinate für den zweiten Punkt. Nehmen wir an, es ist (-2,20). Jetzt erhalten wir die Intensitätswerte für jeden Punkt und sehen, welcher die größeren Intensitätswerte hat - Wenn first größer ist, weisen wir den ersten booleschen Wert '1' zu, andernfalls weisen wir '0' zu. Wir machen das für viele Paare und erhalten am Ende einen Vektor von Booleschen Werten.

* Sehr wichtiger Punkt: Damit dies funktioniert, müssen Sie vor dem Zufallsgenerator einen Startwert angeben. Das bedeutet, dass Sie für jeden Patch die gleichen Werte auswählen möchten - dies ist sehr wichtig, da beim Vergleichen / Abgleichen von Patches das gesamte System ausfällt, wenn sie nicht exakt auf die gleiche Weise ausgewählt werden. - Hoffentlich macht dies Sinn, wenn Sie den entsprechenden Schritt lesen.

Also machen wir das für jeden interessierenden Punkt, der vom Detektor erkannt wurde. Für jeden Interessenpunkt erhalten wir einen Vektor von Booleschen Werten.


Um nun zwei Bilder abzugleichen ( dritter Schritt; Abgleich ), machen wir genau dasselbe für das andere Bild, das wir erkennen und dann mit dem BRIEF beschreiben. Nehmen wir zum Beispiel an, wir haben 10 Interessenpunkte in jedem Bild (dies kann immer funktionieren, wenn wir die 10 interessantesten Punkte in jedem Bild erhalten). Wir verwenden BRIEF, um jeden Patch mit zum Beispiel 50 Paaren zu beschreiben, sodass jedes Bild durch beschrieben wird 10 Vektoren mit 50 Booleschen Werten.

Um die zwei Bilder zu vergleichen, finden wir den nächsten Nachbarn jedes Vektors vom ersten Bild zum anderen Vektor vom zweiten Bild. Wir verwenden Hamming-Distanz, was ziemlich schnell ist, zum Beispiel Hamming-Distanz

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

HammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Grundsätzlich wie viele falsche Entsprechungen

Ich hoffe, das hilft

Roronoa Zoro
quelle
Vielen Dank, ich konnte den Algorithmus verstehen. Aber ich habe noch einige Fragen, wie wäre es mit affinen Perspektivwechseln und Beleuchtungswechseln? Wird die Bitfolge ähnlich sein, wenn sich die Beleuchtung oder die Perspektive ändert?
Maximus
Wenn das Ausmaß der Beleuchtungsänderung für alle Pixel gleich ist, funktioniert es trotzdem, wenn es von Pixel zu Pixel unterschiedlich ist (einige Pixel werden stärker beleuchtet, andere werden schwächer), dann ist das ein Problem. Affinity scheint gut zu funktionieren (basierend auf ihren Ergebnissen), aber es wird definitiv einen Punkt erreichen, an dem es nicht mehr funktioniert (tatsächlich zeigen sie in ihren Ergebnissen (Abb. 3), dass - Sie die Bilder herunterladen und sehen können, was Wall 1 | 2, Wand 1 | 3 entsprechen). Ihre Methode ist nicht rotationsinvariant (das ist nicht so schwer zu sehen) und sie erwähnen das ausdrücklich.
Roronoa Zoro
Vielen Dank für Ihre Erklärung. Ich verstehe den KURZEN Deskriptor wirklich sehr gut.