Detaillierte Erklärung und Routinen des Canny-Operators

Der Canny-Operator ist ein klassischer Kantenerkennungsalgorithmus, der 1986 von John Canny vorgeschlagen wurde. Im Vergleich zu anderen Kantenerkennungsalgorithmen weist der Canny-Operator die folgenden Eigenschaften auf:

  1. Hohe Genauigkeit: Der Canny-Operator kann echte Kanten im Bild genau erkennen und versuchen, Störungen durch Nichtkantenteile zu beseitigen.

  2. Geringe Fehlerquote: Der Canny-Operator kann eine fehlerhafte Kantenerkennung während des Kantenerkennungsprozesses minimieren, d. h. die Situation, in der Rauschen und Details fälschlicherweise als Kanten eingeschätzt werden.

  3. Einzelantwort: Für offensichtliche Kanten kann der Canny-Operator eine Kantenantwort mit einer einzelnen Pixelbreite erzeugen.

Die Schritte des Canny-Operators sind wie folgt:

  1. Rauschunterdrückung: Glätten Sie das Eingabebild mithilfe eines Gaußschen Filters, um Bildrauschen zu reduzieren.

  2. Gradientenberechnung: Berechnen Sie die Gradientengröße und -richtung jedes Pixels, indem Sie den Sobel- (oder Prewitt-)Operator auf das geglättete Bild anwenden.

  3. Nicht-maximale Unterdrückung: Vergleichen Sie im Verlaufsbild jedes Pixel in seiner Verlaufsrichtung, behalten Sie den lokalen Maximalpunkt bei und unterdrücken Sie Nicht-Kantenpixel.

  4. Erkennung doppelter Schwellenwerte: Entsprechend der eingestellten oberen und unteren Schwelle werden die Pixel im Verlaufsbild in drei Teile unterteilt: starke Kante, schwache Kante und Nichtkante.

  5. Kantenverbindung: Bilden einer vollständigen Kante durch Verbinden starker Kantenpixel und der damit verbundenen schwachen Kantenpixel.

Unten ist eine einfache Routine, die die OpenCV-Bibliothek verwendet, um den Canny-Operator zu implementieren:

import cv2

# 读取输入图像
image = cv2.imread("input.jpg", cv2.IMREAD_GRAYSCALE)

# 使用Canny算子进行边缘检测
edges = cv2.Canny(image, 100, 200)

# 显示结果
cv2.imshow("Input Image", image)
cv2.imshow("Canny Edges", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

In dieser Routine wird das Eingabebild zunächst mit der Funktion cv2.imread() gelesen und in ein Graustufenbild umgewandelt.

Dann verwenden wir die Funktioncv2.Canny(), um eine Canny-Kantenerkennung für das Graustufenbild durchzuführen. Zu den Parametern der Funktion gehören das Eingabebild, der obere Schwellenwert und der untere Schwellenwert. Diese beiden Schwellenwerte werden zur Steuerung der Kantenintensität verwendet. Im Allgemeinen wird empfohlen, dass der hohe Schwellenwert zwei- bis dreimal so hoch ist wie der niedrige Schwellenwert.

Verwenden Sie abschließend die Funktioncv2.imshow(), um das Originalbild und die Ergebnisse der Canny-Kantenerkennung anzuzeigen. Verwenden Siecv2.waitKey(0), um zu warten, bis der Benutzer eine beliebige Taste drückt, bevor Sie das Fenster schließen und das Programm beenden.

Bitte stellen Sie sicher, dass Sie „input.jpg“ im Code durch den Pfad zum tatsächlichen Bild ersetzen, dessen Kanten Sie erkennen möchten. Stellen Sie außerdem sicher, dass Sie die OpenCV-Bibliothek installiert und die Python-Umgebung richtig konfiguriert haben.

おすすめ

転載: blog.csdn.net/wangjiaweiwei/article/details/131894682
おすすめ