1-1. Suchen Sie nach Kandidatenpunkten, die Feature-Punkte sein werden 1-2 Kandidatenpunkte eingrenzen
2-1. Ermitteln Sie den Gradienten jedes Merkmalspunkts 2-2. Berechnung des Gradientenrichtungshistogramms für jeden Merkmalspunkt
Im Differenzbild (DoG-Bild) in Skalenrichtung wird ein Punkt, der einen Extremwert annimmt, als Merkmalspunkt verwendet. Kurz zusammengefasst wird einem zweidimensionalen (x, y) Bild eine Dimension mit der Bezeichnung ** Skala ** hinzugefügt, um es dreidimensional zu machen. Betrachten Sie zur Bestimmung des Maßstabs (x, y, σ), in dem das Bild (x, y) um einen bestimmten Betrag σ ** geglättet ** wird. Verwenden Sie zum Glätten den ** Gaußschen Filter **. Verwenden Sie diese Daten, um potenzielle Feature-Punkte zu identifizieren. Eine große Menge an Änderungen bedeutet eine große Menge an Informationen.
Da der Ausgabewert des DoG-Bildes eine Funktion ist, die (x, y, σ) als Variable verwendet, approximieren Sie ihn um die Merkmalspunkte und berechnen Sie den Punkt, der den Extremwert annimmt, mithilfe der Ableitung des ungefähren Ausdrucks neu. Das ist es. Schließt Punkte am Rand aus. Schließt diejenigen mit einem kleinen DoG-Ausgabewert aus.
--Erstellen Sie ein Helligkeitsverlaufshistogramm um die Feature-Punkte
Punkt Die Intensität wird mit einem Gaußschen Filter auf der Merkmalspunktskala gewichtet. ⇒ Wird resistent gegen Skalenänderungen.
--Erstellen Sie erneut ein Helligkeitsgradientenhistogramm mit der Richtung des Merkmalspunkts als Referenzrichtung (stark gegen Drehung).
Dies ist ein Beispielcode.
import cv2
import numpy as np
img = cv2.imread('dog.jpg')
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(img, None)
img_sift = cv2.drawKeypoints(img, keypoints, None, flags=4)
cv2.imwrite("sift_img.jpg ",img_sift)
--image: Eingabebild --keypoints: Aus dem Eingabebild erhaltene Schlüsselpunkte --flags: Identifikationseinstellung der Zeichenfunktion
Bild eingeben
Ausgabebild
Recommended Posts