Bildverarbeitung · OpenCV · Programming · Python

Kantendetektion mit Sobeloperator mit OpenCV+Python

in wichtiges Thema in der Bildverarbeitung ist die Kantenerkennung. Zum hervorheben von Kanten wird oft der Sobeloperator genutzt. Dies ist ein Faltungskern mit der Eigenschaft Änderungen in der Helligkeit des Bildes zu verdeutlichen, ähnlich wie beim Ableiten mathematischer Funktionen. Die Faltungskerne des Sobeloperators sehen folgendermaßen aus:

SobelX.jpg
Sobel X
SobelY.jpg
Sobel Y

Der Sobeloperator in X Richtung lässt Vertikale Kanten sichtbar werden während der Sobeloperator in Y Richtung Horizontale Kanten aufzeigt. Im Ausgabebild der beiden Operatoren erscheinen nun sowohl positive als auch negative Pixel. Beim Aufzeigen dieser Ausgabebilder macht es bei int8 Bildern Sinn, den Null Wert als Grau, -128 als Schwarz und +127 als Weiß darzustellen.

Sobel.jpg
Links Originalbild, mitte Sobel in X Richtung, rechts Sobel in Y Richtung

Um das ganze in Python und Opencv zu programmieren kann die cv2.Sobel() Funktion genutzt werden. Ein Programm das dies tut könnte folgendermaßen aussehen:

import cv2

img = cv2.imread('Bild.jpg',cv2.IMREAD_GRAYSCALE)

sobelx = cv2.Sobel(img,cv2.CV_8U,1,0,ksize=3)+127
sobely = cv2.Sobel(img,cv2.CV_8U,0,1,ksize=3)+127

cv2.imshow('Original',img)
cv2.imshow('Sobel X',sobelx)
cv2.imshow('Sobel Y',sobely)

cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.Sobel gibt eine Bilddatei mit der in den Parametern angegebenen Bitgröße – in diesem Fall 8bit – zurück. Die +127 am Ende der Zeile sorgen dafür, dass wir am Ende keine Werte von -128 bis 127 sondern von 0 bis 255 haben was die Darstellung vereinfacht. Mit dem ksize parameter kann die Größe des Faltungskerns eingestellt werden.

Werbeanzeigen

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s