Kante bezieht sich auf die Grenze zwischen Objekten und Hintergrund, und Kantenerkennung bezieht sich im Allgemeinen auf Bildverarbeitung, die Kanten erkennt, indem Änderungen der Pixelwerte im Bild und in Bereichen mit einem großen Helligkeitsgradienten erkannt werden.
(Das Bild stammt von [Free Image Site](https://www.pakutaso.com/20191228360post-24995.html))Kantenerkennungsfunktion implementiert und bereitgestellt von opencv. Kantenbilder können einfach erstellt werden, aber zwei Parameter müssen (hauptsächlich) für die ordnungsgemäße Verwendung angepasst werden.
Offizielle Seite: Dokument、チュートリアル
Ich habe versucht, "cv2.Canny ()" zu verwenden, während ich den Schwellenwert irgendwie angepasst habe, aber es hat nicht wie erwartet funktioniert. Ich weiß nicht, ob das Bild eingeschränkt oder schlecht eingestellt ist. Lassen Sie uns die Bedeutung der Parameter richtig verstehen.
cv2.Canny(gray_img, threshold1, threshold2)
Einfach gesagt, stellen sowohl "Schwelle1" als auch "Schwelle2" den Schwellenwert dar, um zu bestimmen, ob eine Kante vorhanden ist. ** Je größer der Wert ist, desto schwieriger ist es, die Kante zu erkennen, und je kleiner der Wert ist, desto einfacher ist es, die Kante zu erkennen. ** **. (Wenn der Schwellenwert groß ist, wird er nur dann als Kante beurteilt, wenn sich die Helligkeit größer ändert.)
import cv2
gray_img = cv2.imread('sample.jpg', cv2.IMREAD_GRAYSCALE)
threshold1 = 0
threshold2 = 360
edge_img = cv2.Canny(gray_img, threshold1, threshold2)
cv2.imwrite('sample_edge.jpg', edge_img)
threshold2: maxVal Schwelle2 ist der intuitivere Wert, ** die Schwelle selbst, um zu bestimmen, ob es sich um eine Kante handelt **.
Wenn Sie den Schwellenwert 2 tatsächlich schrittweise senken, ist dies wie folgt. (Zum leichteren Verständnis hat Schwelle1 den gleichen Wert wie Schwelle2.)
threshold1: minVal Als Voraussetzung für die Erklärung des Arguments betrachtet die Canny-Methode die Kante als lange Linie, und ** der Teil neben der Kante ist tendenziell eine Kante **. (Siehe Abbildung unten)
Aus dieser Idee heraus haben wir einen zweiten Schwellenwert (Schwellenwert1) eingeführt, und in einfachen Worten lautet die Rolle "** Ein loser Schwellenwert für die Beurteilung, ob es sich um eine Kante in dem Teil handelt, der an eine andere Kante angrenzt (der Teil, der dazu neigt, eine Kante zu werden) * * ".
Mit anderen Worten, selbst wenn Sie versuchen, Schwellenwert 1 zu lockern (kleiner), werden Kanten an Stellen nicht erkannt, an denen ursprünglich nichts erkannt wurde.
Durch das Lösen wird der benachbarte Teil der Kante, der ursprünglich von Schwelle2 erfasst wurde, tendenziell zu einer Kante, dh intuitiv fühlt es sich an, als würde ** die Linie der Kante, die ursprünglich von Schwelle2 erfasst wurde **, verlängert. ..
Wenn Sie den Schwellenwert 1 tatsächlich schrittweise verringern, ist dies wie folgt.
cv2.Canny(gray_img, threshold1, threshold2)
--schwelle 1: Lose Schwelle für die Beurteilung, ob es sich um eine Kante in einem Teil neben einer anderen Kante handelt (ein Teil, der dazu neigt, eine Kante zu sein) --threshold2: Schwelle selbst, um zu beurteilen, ob es sich um eine Kante handelt
Aus dem oben Gesagten wird die oben erläuterte Reihenfolge empfohlen.
Recommended Posts