Das sind einige sehr gute Fragen. Lassen Sie uns jeden Punkt einzeln angehen:
Meine Frage ist, was sind eigentlich diese Schlüsselpunkte?
Schlüsselpunkte sind dasselbe wie Interessenpunkte. Sie sind räumliche Positionen oder Punkte in dem Bild , das zu definieren , was ist interessant oder was auffallen im Bild. Die Interessenpunkterkennung ist eigentlich eine Teilmenge der Blob-Erkennung , die darauf abzielt, interessante Regionen oder räumliche Bereiche in einem Bild zu finden. Der Grund, warum Schlüsselpunkte etwas Besonderes sind, liegt darin, dass unabhängig davon, wie sich das Bild ändert ... ob sich das Bild dreht, schrumpft / erweitert, übersetzt wird (all dies wäre übrigens eine affine Transformation ...) oder einer Verzerrung unterliegt ( dh eine projektive Transformation oder Homographie ), sollten Sie in der Lage sein, das gleiche zu findenSchlüsselpunkte in diesem modifizierten Bild beim Vergleich mit dem Originalbild. Hier ist ein Beispiel aus einem Beitrag, den ich vor einiger Zeit geschrieben habe:
Quelle: Modul 'Objekt hat kein Attribut' drawMatches 'opencv Python
Das Bild rechts ist eine gedrehte Version des linken Bildes. Ich habe auch nur die Top 10 Übereinstimmungen zwischen den beiden Bildern angezeigt. Wenn Sie sich die Top-10-Spiele ansehen, sind dies Punkte, auf die wir uns wahrscheinlich konzentrieren möchten, damit wir uns daran erinnern können, worum es in dem Bild ging. Wir möchten uns auf das Gesicht des Kameramanns sowie auf die Kamera, das Stativ und einige der interessanten Texturen auf den Gebäuden im Hintergrund konzentrieren. Sie sehen, dass dieselben Punkte zwischen den beiden Bildern gefunden wurden und diese erfolgreich abgeglichen wurden.
Daher sollten Sie davon Abstand nehmen, dass dies interessante Punkte im Bild sind und dass sie gefunden werden sollten, unabhängig davon, wie das Bild verzerrt ist.
Ich verstehe, dass es sich um eine Art "Points of Interest" eines Bildes handelt. Ich weiß auch, dass sie skalierungsinvariant sind und ich weiß, dass sie kreisförmig sind.
Du hast Recht. Invariante Skalierung bedeutet, dass Sie diese Punkte unabhängig von der Skalierung des Bildes finden können sollten.
Jetzt wagen wir uns in den Deskriptorteil . Was macht keypoints anders zwischen Frameworks ist so , wie Sie beschreiben diese keypoints. Dies sind sogenannte Deskriptoren . Jedem Schlüsselpunkt, den Sie erkennen, ist ein Deskriptor zugeordnet. Einige Frameworks führen nur eine Schlüsselpunkterkennung durch, während andere Frameworks lediglich ein Beschreibungsframework sind und die Punkte nicht erkennen. Es gibt auch einige, die beides tun - sie erkennen und beschreiben die Schlüsselpunkte. SIFT und SURF sind Beispiele für Frameworks, die die Schlüsselpunkte erkennen und beschreiben.
Deskriptoren befassen sich hauptsächlich mit der Skala und der Ausrichtung des Schlüsselpunkts. Die Schlüsselpunkte, auf die wir dieses Konzept festgelegt haben, aber wir benötigen den Deskriptorteil, wenn wir versuchen möchten, Schlüsselpunkte in verschiedenen Bildern abzugleichen. Was Sie nun mit "kreisförmig" meinen ... das korreliert mit der Skala, auf der der Punkt erkannt wurde. Nehmen Sie zum Beispiel dieses Bild aus dem VLFeat Toolbox-Tutorial :
Sie sehen, dass alle Punkte, die gelb sind, Interessenpunkte sind, aber einige dieser Punkte haben einen anderen Kreisradius. Diese befassen sich mit Skalierung . Im Allgemeinen funktionieren Interessenpunkte so, dass wir das Bild in mehrere Skalen zerlegen. Wir prüfen auf jeder Skala nach Interessenpunkten und kombinieren alle diese Interessenpunkte miteinander, um die endgültige Ausgabe zu erhalten. Je größer der "Kreis" ist, desto größer ist der Maßstab, an dem der Punkt erfasst wurde. Es gibt auch eine Linie, die vom Mittelpunkt des Kreises bis zur Kante ausstrahlt. Dies ist die Ausrichtung des Schlüsselpunkts, die wir als nächstes behandeln werden.
Ich fand auch heraus, dass sie Orientierung haben, aber ich konnte nicht verstehen, was es eigentlich ist. Es ist ein Winkel aber zwischen dem Radius und etwas?
Wenn Sie Schlüsselpunkte unabhängig von Skalierung und Ausrichtung erkennen möchten, wenn sie über die Ausrichtung von Schlüsselpunkten sprechen, bedeutet dies im Grunde, dass sie eine Pixelumgebung suchen, die den Schlüsselpunkt umgibt, und herausfinden, wie diese Pixelumgebung ausgerichtet ist oder in welche Richtung sich dieser Patch befindet Es hängt davon ab, welches Deskriptor-Framework Sie betrachten, aber das allgemeine Ziel ist es, die dominanteste Ausrichtung der Gradientenwinkel im Patch zu ermitteln. Dies ist wichtig für den Abgleichso dass Sie Schlüsselpunkte miteinander abgleichen können. Schauen Sie sich die erste Figur an, die ich mit den beiden Kameramännern habe - einer gedreht, der andere nicht. Wenn Sie sich einige dieser Punkte ansehen, wie können wir herausfinden, wie ein Punkt mit einem anderen übereinstimmt? Wir können leicht erkennen, dass die Oberseite des Kameramanns als Interessenpunkt mit der gedrehten Version übereinstimmt, da wir uns die Punkte ansehen, die den Schlüsselpunkt umgeben, und sehen, in welcher Ausrichtung sich all diese Punkte befinden ... und von dort aus ist das so Orientierung wird berechnet.
Wenn wir Schlüsselpunkte erkennen möchten, schauen wir uns normalerweise nur die Standorte an. Allerdings, wenn Sie möchten , passen keypoints zwischen den Bildern, dann müssen Sie auf jeden Fall den Umfang und die Ausrichtung dies zu erleichtern.
Hoffe das hilft!