Zweck der Erkennung und Anpassung von Bildmerkmalen


8

Ich bin ein neuer Typ in Bildverarbeitung und Computer Vision, daher könnte diese Frage für Sie dumm sein.

Ich habe gerade einige Algorithmen zur Erkennung und Beschreibung von Merkmalen gelernt, wie Harris, Hessian, SIFT, SURF . Sie verarbeiten Bilder, um diese Schlüsselpunkte herauszufinden, und berechnen dann für jeden einen Deskriptor . Der Deskriptor wird für den Merkmalsabgleich verwendet.

Ich habe SIFT und SURF ausprobiert und festgestellt, dass sie nicht so robust sind, wie ich dachte, da sie für 2 Bilder (eines ist ein wenig gedreht und affiniert) nicht gut zu den Merkmalen passen, unter fast 100 Merkmalspunkten nur 10 Übereinstimmungen sind gut.

Also frage ich mich

  1. Wofür können wir diese Merkmalserkennungsalgorithmen in der Praxis verwenden? Gibt es robustere Algorithmen zur Erkennung und Anpassung von Merkmalen? Oder SIFT und SURF ist schon gut, ich muss es nur für die weitere Verwendung verfeinern?

  2. Ein weiteres Problem ist, dass ich dachte, diese Algorithmen sind nicht für Echtzeitanwendungen geeignet (ohne Berücksichtigung der Multi-Core-Implementierung), aber es gibt einige kommerzielle Produkte (wie Kinect), die in Echtzeit funktionieren und reagieren! Ich gehe davon aus diesen Produkten auch erkennen und Match - Funktion von dem, was sie sehen , haben sie die Algorithmen verwenden wie SIFT ? Wie konnten sie Merkmale so gut erkennen?

  3. Mit meinem begrenzten Wissen weiß ich, dass Feature Matching verwendet werden kann, um dieselben Objekte in zwei Bildern herauszufinden oder Homografien zu schätzen, aber einen anderen Zweck für Feature Feature Matching?


Hallo! Ich denke, Sie haben wahrscheinlich ein Problem mit Ihrer SIFT / SURF-Implementierung. Sie sollten beide viel besser als 10/100 arbeiten. Würde es Ihnen etwas ausmachen, Ihre Bilder und / oder übereinstimmende Ergebnisse hochzuladen?
Penelope

@penelope, eigentlich benutze ich SIFT / SURF von OpenCV. Außerdem denke ich, dass sie besser als 10/100 funktionieren sollten, vielleicht sollte ich den Feature-Matching-Teil sorgfältiger behandeln ;-).
Avocado

@penelope, übrigens, funktionieren sie gut mit affinierten Bildern?
Avocado

Oh ja. Schauen Sie sich dieses Papier an. Es ist ein Vergleich mehrerer Detektoren und zeigt ihre Robustheit gegenüber affinen Veränderungen, Unschärfe, Beleuchtung und vielen anderen Dingen. Eigentlich kein SIFT da, aber SIFT sollte im Vergleich zu keinem von diesen schlecht sein. Ich werde Ihnen später heute eine detailliertere Antwort geben, habe in dieser Sekunde keine Zeit
Penelope

Antworten:


9

Bildschlüsselpunkte sind ein Schlüsselmerkmal in vielen industriellen und akademischen Bild- und Videoverarbeitungssoftware. Das Prinzip dahinter ist immer dasselbe:

  • einige bedeutungsvolle Punkte in einigen Bildern erkennen;
  • [optional] eine stabile Beschreibung des Bildteils berechnen, der jeden Schlüsselpunkt umgibt;
  • Ordnen Sie Schlüsselpunkte von einem Bild (der Vorlage) einem anderen (der Abfrage) zu.

Nun noch etwas mehr Details.

Warum Punkte erkennen? Grundsätzlich, weil ein Punkt ein Schnittpunkt zweier Linien ist. Als solches wird es viel genauer (und stabiler) als Linien oder andere Merkmale (Fläche usw.) erkannt. Dies ist allgemein bekannt in Computer Vision, was später in einem Artikel von Mikolajczyk bewiesen wurde . Dies ist tief in jedem Punktdetektor verwurzelt: Beispielsweise stützt sich der Harris-Punktdetektor auf die hessische Matrix, um zu überprüfen, ob zwei Kreuzungslinien vorhanden sind.

Warum ist der Beschreibungsteil optional? Grundlegende Punktdetektoren (Harris, SUSAN, Moravec, FAST) werden ohne Deskriptor geliefert. Der Abgleich erfolgt rein ortsbezogen. Daher werden sie hauptsächlich für die Videoverarbeitung verwendet. Die Intuition dahinter ist, dass Sie viele, viele Punkte haben können, dann einen robusten Schätzprozess (z. B. RANSAC). Neuere Schlüsselpunkte (SIFT und die folgenden) enthalten jedoch einen Bild-Patch-Deskriptor, da sie in komplexeren Situationen (Objekterkennung, große Basislinienanpassung ...) verwendet werden sollen.

Was ist der Unterschied zwischen Harris / Hessian und SIFT / SURF? Neben dem Deskriptor enthält SIFT / SURF auch eine Lokalisierung im Maßstab . Wenn Sie also einen SIFT / SURF-Punkt erkennen, erwarten Sie, dass Sie ihn auch dann wiederfinden, wenn Ihr Bild vergrößert / verkleinert wurde usw.

Was ist der Unterschied zwischen SIF und SURF? Nun, SURF ist eigentlich meistens eine ungefähre Version von SIFT, die sich besser für schnelle Berechnungen eignet (unter Verwendung integraler Bilder). Folglich ist SURF unter affinen Transformationen nicht so stabil (so "gut") wie SIFT, aber es kostet ungefähr 1/10 der Rechenkosten.

Sind sie für Echtzeitsoftware geeignet? Ja, sicher für Harris. SURF wurde so konzipiert, dass es schnell ist, daher sollte eine gute Implementierung auch schnell sein. SIFT wurde nicht für Geschwindigkeit entwickelt, aber Sie können GPU-Implementierungen finden. Wenn Sie jedoch auch auf Geräten der unteren Preisklasse wirklich schnell sein möchten, müssen Sie aktuelle Punkte wie FAST (Detektor), BRIEF, ORB, BRISK, FREAK (Binärdeskriptoren) überprüfen.

Was kannst du mit ihnen machen? Nun, viele Dinge. Indem Sie Punkte in Videos verfolgen, können Sie sie stabilisieren, mit Objekten erweitern und Objekte verfolgen. Durch Abgleichen von Punkten zwischen Kameras können Sie den Kalibrierungsprozess von 3D-Rekonstruktionspipelines automatisieren. Durch Abgleichen von Punkten auf Teilen eines Objekts können Sie Objekte erkennen. Und wahrscheinlich noch viel mehr ...


Vielen Dank für diese ausführliche Antwort. Wie Sie bereits erwähnt haben, besteht die Intuition dahinter darin, dass Sie viele, viele Punkte haben können. Dann denke ich, dass ein robuster Schätzprozess (z. B. RANSAC) , um eine robuste Schätzung (wie Homographie) durchzuführen, ein Feature-Deskriptor unabdingbar ist, da nach meinem begrenzten Wissen Die Schätzung beinhaltet Merkmalskorrespondenzen, die einen Merkmalsdeskriptor für den Merkmalsabgleich benötigen, oder? Oder gibt es eine andere Schätzung ohne Feature-Matching?
Avocado

Bei der Videoverarbeitung haben Sie z. B. 25 fps, was 40 Millisekunden zwischen zwei Bildern bedeutet. Schlüsselpunkte bewegen sich nicht viel, und der Übereinstimmungsprozess ist ein räumlicher Prozess des nächsten Nachbarn. Wenn Punkte erschienen / verschwunden sind, hoffen Sie, dass RANSAC sich darum kümmert (was wahr ist, solange Sie noch 50% gute Übereinstimmungen haben). Beachten Sie auch, dass das Hinzufügen eines Deskriptors immer noch zum Matching des nächsten Nachbarn führt, jedoch im Merkmalsraum, nicht mehr im räumlichen Raum.
Sansuiso

Gute Antwort. Wenn ein Objekt starr ist und im Wesentlichen auf 3 Freiheitsgrade in 2D (x, y, Rotation) + Skalierung beschränkt ist, gibt es in kommerziellen Softwarepaketen einige feine "robuste Musteranpassungs" -Algorithmen, die für bestimmte Anwendungen sehr gut funktionieren. Beispiele hierfür sind Software von Cognex, Hexavision, DALSA und Halcon von MvTec. Diese Algorithmen sind möglicherweise nicht so verallgemeinert wie das Originalplakat, aber für starre Objekte können sie recht robust sein.
Überdenken

Vielleicht auch OCR?
FindOutIslamNow

2

Nun, das ist eine großartige Antwort von @sansuiso. Ich werde mich also auf verschiedene Verwendungsmöglichkeiten erkannter Schlüsselpunkte konzentrieren und einige Beispiele für Sie beschreiben. Es gibt sicherlich mehr Verwendungszwecke, die aufgeführten basieren nur auf dem, mit dem ich bisher in Kontakt gekommen bin.

Content Based Image Retrieval (CBIR) Sie behandeln die Features (die Feature-Vektoren, die Sie erhalten, nachdem Sie Feature-Deskriptoren auf die erkannten Punkte angewendet haben ) als visuelle Wörter . Auf diese visuellen Wörter wenden Sie Bag-of-Word- Techniken an, die zuerst für das Abrufen von Text eingeführt wurden (denken Sie an Google). Ich habe eine ziemlich detaillierte Antwort auf die hier (siehe auch Referenzen darin). So können Sie:

  • Finden Sie ähnliche Bilder in der Datenbank
  • Erkennen des Vorhandenseins eines bestimmten Objekts in Datenbankbildern
  • "Cluster" und organisieren Sie die Datenbank automatisch

("Grob") Homografieschätzung für Bildpaare Erkennen Sie Merkmale, führen Sie Übereinstimmungen durch, wählen Sie die robustesten Übereinstimmungen aus und schätzen Sie dann die Homografie basierend auf diesen Übereinstimmungen. Es gibt einige Techniken zur Verbesserung der Leistung: Zusätzlich zu nur übereinstimmenden Deskriptoren können auch räumliche Informationen verwendet werden (z. B. kann eine Übereinstimmung abgelehnt werden, wenn ihre Nachbarn aus Bild A nicht in derselben Nachbarschaft in der Bild B-Beispieltechnik in der Nähe übereinstimmen Das Ende dieses Artikels Kann zum Beispiel verwendet werden in:

  • Bildstiche - zB um mehrere "Panoramabilder" zu einem Bild zu verbinden
  • Grobposenschätzung - Wir haben diese in einem Projekt verwendet, in dem wir ein Roboterauto automatisch durch einen aufgezeichneten Kurs navigieren mussten (basierend auf der menschlichen Navigation). Die einzige Information, die wir hatten, waren "Schlüssel" -Bilder, die in bestimmten Entfernungen entlang des Pfades aufgenommen wurden. Zuerst haben wir CBIR verwendet, um das nächstgelegene Schlüsselbild zu finden, und dann wurde die anfängliche Lokalisierung und Positionierung basierend auf der Bildübereinstimmung zwischen der aktuellen Ansicht und dem Datenbankbild durchgeführt.
  • Videostabilisierung - Ich habe ein sehr schönes Beispiel für Aufnahmen einer Straßenkreuzung gesehen, die mit einer Kamera aufgenommen wurde, die an einem Hubschrauber hängt. Die Idee war, das Schwingen der Kamera zu "neutralisieren" - und das Endergebnis war ein sehr schönes, stabil aussehendes Video.

Feature-Tracking Ich kann Ihnen nicht so viel darüber erzählen, wie dies gemacht wird, da ich selbst nicht viel Tracking gemacht habe, aber ich kann Ihnen einige Beispiele geben, wann dies nützlich sein könnte. Die Idee ist, einige Punkte von Interesse auszuwählen und dann ihre Position im Video von Bild zu Bild zu verfolgen. Beispiele (ich habe gesehen):

  • Verkehrszeichen folgen: Könnte eine Hilfe beim Fahren sein, z. B. wenn ein Blick auf die Straße vor Ihnen liegt und der Fahrer ein verarbeitetes Bild erhalten kann, kann es nützlich sein, die Position eines Verkehrszeichens zu erkennen, zu markieren und zu verfolgen, das in angezeigt wird vor dem Fahrer (möglicherweise wird der Fahrer auf den Ort / die Entfernung des Schilds und die Bedeutung aufmerksam gemacht)
  • Feinlokalisierung und Positionierung: In der gleichen automatisierten Navigation des oben erwähnten Roboterautos war es viel präziser, eine Feinlokalisierung basierend auf verfolgten Merkmalen durchzuführen . Um die aktuelle Position zu aktualisieren und den Befehl für weitere Bewegungen zu geben, wurden bestimmte Merkmale im Rahmen verfolgt (daher ist keine Übereinstimmung erforderlich), und die Homographie wurde basierend auf diesen Merkmalen geschätzt.

Vielen Dank für diese Anwendungen und auch für das Papier und den Beitrag, den Sie verlinkt haben.
Avocado

1

Es gibt eine Website, auf der Sie viele Informationen zu Ihren Fragen finden: http://www.robots.ox.ac.uk/~vgg/research/affine/

Es enthält Informationen zu Feature-Detektoren und Deskriptoren, deren aktuelle Leistung und welche in welchem ​​Szenario am besten ist.

Dieses Feld hat noch viel zu tun.

Wenn Sie beispielsweise eine Stereorekonstruktion durchführen möchten, schlagen diese Algorithmen normalerweise bei Bildern mit mehreren Blickwinkeln fehl. Sie können etwas davon versuchen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.