Kantenerkennung ist eine Bildverarbeitungstechnik in der Computer Vision, bei der die Umrisse von Objekten in einem Bild identifiziert werden.
Canny Edge Detection ist eine der besten Techniken zur Kantenerkennung. Es wurde entwickelt, um saubere, gut definierte Kanten zu erkennen und gleichzeitig das Rauschen zu reduzieren und falsche Kanten zu vermeiden. Es verwendet eine doppelte Schwellenwertmethode, um Kanten in einem Bild zu erkennen: einen hohen und einen niedrigen Schwellenwert.
img = cv2.Canny('photo.jpg') img_edges = cv2.Canny(img, 100, 200) // 100 is the low threshold // 200 is the high threshold
Die Schwellenwerte entscheiden, was zur Kante wird und was nicht. Um diese Entscheidung zu treffen, verwenden wir Gradientenwerte:
Verlaufswerte sind nicht die Rohbildwerte. Dabei handelt es sich um berechnete Zahlen, die aus dem Rohbild abgeleitet werden, indem überprüft wird, wie stark sich die Pixelintensität in einem Bild ändert. Wir verwenden Verlaufswerte, da die Rohbildwerte uns nicht direkt sagen, wo sich die Kanten befinden.
Ein einfaches Beispiel zur Veranschaulichung von Änderungen in der Pixelintensität: Wenn zwei benachbarte Pixel sehr unterschiedliche Werte haben (z. B. 50 und 200 und der Gradientenwert 150 beträgt), gibt es eine große Änderung – es könnte sich um eine Kante handeln. Wenn jedoch zwei benachbarte Pixel ähnliche Werte haben (z. B. 50 und 52 und der Gradientenwert 2 ist), gibt es kaum Änderungen und eine sehr geringe Wahrscheinlichkeit, dass es sich um eine Kante handelt.
Nachdem die Gradientenwerte berechnet wurden, werden sie mit den Schwellenwerten verglichen, um zu entscheiden, was als starke Kante, potenzielle Kante oder Nichtkante gilt.
Durch die Verwendung einer Methode namens Kantenverfolgung durch Hysterese, die über Kanten entscheidet, die verbunden sind und beibehalten oder verworfen werden sollen. Dieser Algorithmus funktioniert, indem er die 8 Nachbarn (direkt benachbarte Pixel – oben, unten, links, rechts und diagonal) jedes potenziellen Kantenpixels betrachtet. Alle Pixel, die direkt oder indirekt mit einer starken Kante verbunden sind, werden im Endergebnis berücksichtigt.
50 80 110 90 70 250 190 120 60 180 150 70 40 60 80 50
Stellen Sie sich diese Verlaufskarte oben vor:
Nach dem Anwenden von Schwellenwerten (niedrig = 100, hoch = 200) werden die starken Kantenpixel (> 200) sofort als Kanten beibehalten. Hier wird nur das Pixel 250 als starke Kante markiert.
Die potenziellen Kantenpixel (100–200) sind 110, 190, 120, 180 und 150. Da wir nun über einen Pool potenzieller Kanten verfügen, führen wir eine Kantenverfolgung durch, um zu entscheiden, was übrig bleibt und was verworfen wird. Der Algorithmus prüft, ob eine der potenziellen Kanten direkt oder indirekt mit der starken Kante (250) verbunden ist.
Zum Beispiel:
Schwache Randpixel (< 100) wie 80, 90 und der Rest werden vollständig ignoriert, da sie als Rauschen betrachtet werden. Sie werden nicht Teil des endgültigen Bildes sein.
Das obige ist der detaillierte Inhalt vonClevere Kantenerkennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!