Heim > Backend-Entwicklung > Python-Tutorial > Clevere Kantenerkennung

Clevere Kantenerkennung

Mary-Kate Olsen
Freigeben: 2024-11-24 19:01:20
Original
237 Leute haben es durchsucht

Kantenerkennung ist eine Bildverarbeitungstechnik in der Computer Vision, bei der die Umrisse von Objekten in einem Bild identifiziert werden.

Canny Edge Detection

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
Nach dem Login kopieren

Die Schwellenwerte entscheiden, was zur Kante wird und was nicht. Um diese Entscheidung zu treffen, verwenden wir Gradientenwerte:

  • Wenn ein Gradientenwert über dem oberen Schwellenwert liegt, wird er als starke Kante betrachtet und zur Kantenkarte hinzugefügt. (starke Kante)
  • Wenn es unter dem unteren Schwellenwert liegt, wird es ignoriert. (keine Kante)
  • Wenn es zwischen der oberen und unteren Schwelle liegt, wird es nur beibehalten, wenn es mit einer starken Kante verbunden ist. (potenzielle Kante)

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

Woher wissen wir, dass Werte zwischen Schwellenwerten mit einer starken Kante verbunden sind?

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.

So funktioniert Edge-Tracking:

   50   80  110   90
   70  250  190  120
   60  180  150   70
   40   60   80   50
Nach dem Login kopieren

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:

  • 190 ist ein Nachbar von 250, es ist direkt mit einer starken Kante verbunden und bleibt daher erhalten.
  • 150 ist ein Nachbar von 190, es ist indirekt mit einer starken Kante verbunden und wird daher auch beibehalten.

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage