Wie wenden Sie einen Sobelfilter zur Kantenerkennung mit Kissen an?
Aug 08, 2025
Eine Nachricht hinterlassen
Die Kantenerkennung ist eine grundlegende Technik in der Bildverarbeitung, mit der die Grenzen von Objekten innerhalb eines Bildes identifiziert werden. Eine beliebte Methode zur Kantenerkennung ist der Sobelfilter, der den Gradienten der Bildintensität berechnet. In diesem Blog werden wir untersuchen, wie ein Sobel -Filter zur Kantenerkennung mit Kissen angewendet wird, einer leistungsstarken Python -Bibliothek für die Bildverarbeitung. Als Kissenlieferant freuen wir uns, dies mit Ihnen zu teilen.
Den Sobelfilter verstehen
Der Sobelfilter ist ein diskreter Differenzierungsoperator, der eine Näherung des Gradienten einer Bildintensitätsfunktion berechnet. Es besteht aus zwei 3x3 -Kerneln, eine zum Erkennen horizontaler Kanten und die andere für vertikale Kanten.
Der horizontale Sobel -Kernel (G_X) lautet:
[
G_x =
\ begin {bmatrix}
-1 & 0 & 1 \ \
-2 & 0 & 2 \ \
-1 & 0 & 1
\ end {bmatrix}
]
Der vertikale Sobel -Kernel (G_Y) lautet:
[
G_y =
\ begin {bmatrix}
-1 & -2 & -1 \
0 & 0 & 0 \
1 & 2 & 1
\ end {bmatrix}
]
Wenn diese Körner mit einem Bild gebunden sind, berechnen sie die ersten horizontalen und vertikalen Ableitungen des Bildes. Die Größe des Gradienten kann dann mit der Formel (\ sqrt {g_x^2 + g_y^2}) berechnet werden, und die Richtung des Gradienten ist gegeben durch (\ arctan (\ frac {g_y}} {g_x})).
Voraussetzungen
Stellen Sie vor Beginn sicher, dass Sie das Kissen installiert haben. Sie können es mit verwendenPip:
Pip -Kissen installieren
Auftragen des Sobelfilters mit Kissen
Beginnen wir mit dem Importieren der erforderlichen Bibliotheken und dem Laden eines Bildes:
Im Importieren von PIL -Importieren importieren Imagefilter Numpy als NP # laden Sie ein Bild image = image.open ('your_image.jpg'). Convert ('l') # in Greyscale konvertieren
Hier konvertieren wir das Bild in Graustufen, da der Sobelfilter auf einzelnen Kanalbildern funktioniert.
Als nächstes definieren wir die Sobel -Kernel und kräuseln sie mit dem Bild:
# SOBEL KRERNEL SOBEL_X = NP.Array ([-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) SOBEL_Y = NP.Array ([-1, -2, -1], [0, 0, 0], [1]). Geben Sie das Bild mit den Sobel -Kerneln g_x = np.zeros_like (Image_array) g_y = np.zeros_lik (Image_array) Zeilen, cols = image_array.shape für i in Bereich (1, Reihen - 1): für j in Bereich (1, cols - 1): g_x [i, J] = NP.SUM (SOBEL_X): G_X [I, J] = NP.SUM (SOBEL_X [I, J], J], J] = NP.SUM (SOBEL). 2, j - 1: j + 2]) g_y [i, j] = np.sum (sobel_y * image_array [i - 1: i + 2, j - 1: j + 2])
Nach der Berechnung (g_x) und (g_y) können wir die Größe des Gradienten berechnen:


# Berechnen Sie die Größe des Gradientengradienten_Magnitude = np.sqrt (g_x ** 2 + g_y ** 2) # Normalisieren Sie die Gradientengröße auf den Bereich [0, 255] gradient_magnitude = (Gradient_Magnitude / np.max (Gradient_Magnitude)*255). Edge_image = Image.FromArray (Gradient_Magnitude) # Speichern Sie die Kante - Erkennete Bild rande_image.save ('edge_detected_image.jpg'))
Mit Kissen gebaut - in Filtern gebaut
Das Kissen liefert auch einige gebaute - in Filtern, die zur Kantenerkennung verwendet werden können. Zum Beispiel dieFind_edgesFilter:
# Verwenden Sie Pillows gebaut - in der Kantedetektion Filter REDEGE_IMAGE_BUILTIN = Image.filter (ImageFilter.find_edges) Edge_image_builtin.save ('Edge_detected_image_builtin.jpg'))
Diese Methode ist einfacher, ist jedoch möglicherweise nicht so flexibel wie die Implementierung des Sobelfilters von Grund auf neu.
Vergleich der Ergebnisse
Beim Vergleich der Ergebnisse des Custom - Implementierten Sobelfilters und des gebauten - inFind_edgesIn Filter werden Sie feststellen, dass die benutzerdefinierte Implementierung Ihnen mehr Kontrolle über den Kantenerkennungsprozess bietet. Sie können die Kerne, die Art und Weise, wie die Gradientengröße berechnet wird, und andere Parameter entsprechend Ihren spezifischen Anforderungen einstellen.
Praktische Anwendungen der Kantenerkennung
Die Kantenerkennung hat zahlreiche praktische Anwendungen. Im Computer Vision wird es zur Objekterkennung, Bildsegmentierung und Bewegungserkennung verwendet. Beispielsweise kann die Kantenerkennung in einem selbstfahrenden Autosystem die Grenzen anderer Fahrzeuge, Fußgänger und Straßenschilder identifizieren.
Im Bereich der medizinischen Bildgebung kann die Kantenerkennung verwendet werden, um die Grenzen von Organen und Tumoren in X -Strahlen, MRIS und CT -Scans zu identifizieren. Diese Informationen sind entscheidend für die Diagnose und Behandlungsplanung.
Unsere Kissenprodukte
Als Kissenlieferant bieten wir eine breite Palette von hochwertigen Kissen an, um Ihre Bedürfnisse zu erfüllen. Ob Sie nach einem suchenSpeicherschaumkissenDas bietet hervorragende Unterstützung und Komfort oder aHaushaltskissenFür den täglichen Gebrauch haben wir Sie abgedeckt. Unsere Kissen bestehen aus den besten Materialien und sind so konzipiert, dass sie eine gute Nachtruhe sicherstellen.
Kontaktieren Sie uns zur Beschaffung
Wenn Sie daran interessiert sind, unsere Kissen zu kaufen oder Fragen zu unseren Produkten zu haben, ermutigen wir Sie, uns für Beschaffungsdiskussionen zu wenden. Wir sind bestrebt, Ihnen die besten Produkte und Dienstleistungen zu bieten. Unser Expertenteam ist bereit, Sie dabei zu unterstützen, die perfekten Kissen für Ihre Bedürfnisse zu finden.
Referenzen
- Gonzalez, RC & Woods, RE (2008). Digitale Bildverarbeitung. Pearson.
- Offizielle Dokumentation von Kissen: https://pillow.readthedocs.io/en/stable/
