[PYTHON] Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren

Was ist SIFT?

SIFT-Algorithmus

[Erkennung von Merkmalspunkten]

1-1. Suchen Sie nach Kandidatenpunkten, die Feature-Punkte sein werden 1-2 Kandidatenpunkte eingrenzen

[Beschreibung der Funktionsmenge]

2-1. Ermitteln Sie den Gradienten jedes Merkmalspunkts 2-2. Berechnung des Gradientenrichtungshistogramms für jeden Merkmalspunkt

1-1. Suchen Sie nach Kandidatenpunkten, die Feature-Punkte sein werden

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.

1-2 Kandidatenpunkte eingrenzen

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.

2-1. Ermitteln Sie den Gradienten jedes Merkmalspunkts

--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.

2-2. Berechnung des Gradientenrichtungshistogramms für jeden Merkmalspunkt

--Erstellen Sie erneut ein Helligkeitsgradientenhistogramm mit der Richtung des Merkmalspunkts als Referenzrichtung (stark gegen Drehung).

SIFT-Code

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 dog.jpeg

Ausgabebild

sift_img.jpg

Verweise

Recommended Posts

Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Ich habe versucht, die Bewegungen von Wiire-Playern automatisch mit Software zu extrahieren
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Ich habe versucht, das Bild mit Python + OpenCV "morphologisch zu konvertieren"
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Ich möchte Objekte mit OpenCV erkennen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht zu beheben "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren"
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Ich habe versucht, TSP mit QAOA zu lösen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, automatisch Bilder von Kanna Hashimoto mit Python zu sammeln! !!
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe versucht, Zeichen aus Untertiteln zu extrahieren (OpenCV: Google Cloud Vision API)
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Ich habe versucht, die Negativität von Nono Morikubo zu analysieren. [Vergleiche mit Posipa]
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, den Text des Romans "Wetterkind" mit Word Cloud zu visualisieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, alle Entscheidungsbäume des zufälligen Waldes mit SVG zu visualisieren
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, Runenfiguren mit Scikit-Learn handschriftlich zu erkennen
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, Bilder von CIFAR-10 mit Keras-Bilderkennung zu erkennen.
Ich habe versucht, Slack über das Update von Redmine zu informieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, das Umfangsverhältnis mit 100 Millionen Stellen zu ermitteln
Ich habe versucht, Keras in TFv1.1 zu integrieren
Ich habe Flask mit Remote-Containern von VS Code ausprobiert
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"