Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Kanten erkennen wie ein Profi: Sobel, Canny und Structured Edge in der Bildverarbeitung

Lerne die wichtigsten Kantendetektionsverfahren aus EE569 Homework #2 kennen: Sobel, Canny und Structured Edge. Mit praktischen Tipps für MATLAB und OpenCV.

Kantenerkennung Sobel Kantendetektor Canny Kantendetektor Structured Edge Bildverarbeitung Tutorial MATLAB Kantenerkennung OpenCV Kantendetektion Non-Maximum Suppression Double Thresholding F-Measure Bildverarbeitung Precision Recall Kanten EE569 Hausaufgabe Computer Vision Übung Graustufenkonvertierung Random Forest Kanten Kantenbild binarisieren

Einführung in die Kantenerkennung

Die Kantenerkennung ist ein fundamentales Werkzeug in der Bildverarbeitung und Computer Vision. Sie hilft dabei, Objektgrenzen zu identifizieren und ist essenziell für Anwendungen wie autonomes Fahren, medizinische Bildanalyse oder Gesichtserkennung. In diesem Tutorial lernst du die drei wichtigsten Verfahren kennen: den Sobel-Kantendetektor, den Canny-Kantendetektor und den Structured Edge (SE) Detektor. Diese Verfahren sind Teil der Aufgabe EE569 Homework #2 und werden häufig in MATLAB oder OpenCV implementiert.

Sobel-Kantendetektor: Die Grundlage

Der Sobel-Operator berechnet die Gradienten in x- und y-Richtung. Zuerst wird ein RGB-Bild in Graustufen umgewandelt: I = 0.2989*R + 0.5870*G + 0.1140*B. Dann werden die Gradienten mit den Sobel-Kernen gefaltet:

Gx = [ -1 0 1; -2 0 2; -1 0 1 ] * I
Gy = [ -1 -2 -1; 0 0 0; 1 2 1 ] * I

Die Gradienten werden auf 0–255 normalisiert. Die Gradientenstärke ist M = sqrt(Gx^2 + Gy^2). Durch Schwellwertbildung entsteht ein binäres Kantenbild. Tipp: Probiere Schwellwerte zwischen 10% und 30% der maximalen Gradientenstärke.

Canny-Kantendetektor: Non-Maximum Suppression und Double Thresholding

Der Canny-Detektor verbessert Sobel durch Non-Maximum Suppression (NMS) und Doppelschwellwerte. NMS unterdrückt Pixel, die nicht das lokale Maximum in Gradientenrichtung sind – so werden dünne Kanten erzeugt. Die Doppelschwellwerte: Ein hoher Schwellwert (z.B. 0.2) markiert starke Kanten, ein niedriger (z.B. 0.05) schwache. Nur Kanten, die mit starken verbunden sind, bleiben erhalten. In MATLAB: edge(I, 'canny', [low high]).

Structured Edge Detektor: Kanten aus Farbbildern

Der SE-Detektor von Dollar & Zitnick nutzt Random Forests, um Kantenwahrscheinlichkeiten direkt aus Farbbildern zu schätzen. Er arbeitet ohne Graustufenkonvertierung. Die Implementierung in MATLAB: edges = edgesDetect(I, model);. Der Parameter nTrees (z.B. 8) und nCells (z.B. 5) beeinflussen die Qualität. Die Ausgabe ist eine Wahrscheinlichkeitskarte, die mit einem Schwellwert (z.B. 0.5) binarisiert wird.

Performance-Bewertung mit Precision, Recall und F-Measure

Die Qualität eines Kantendetektors wird mit Precision (P) und Recall (R) gemessen. Precision = TP / (TP + FP), Recall = TP / (TP + FN). Der F-Measure = 2 * P * R / (P + R). Ein hoher F-Wert bedeutet gute Kantenerkennung. Für die Bilder Elephants und Ski_person werden Ground-Truth-Kanten verglichen. Die Ergebnisse zeigen: Canny liefert oft bessere Recall, SE höhere Precision.

Praktische Tipps für MATLAB und OpenCV

  • Sobel in MATLAB: [Gx, Gy] = imgradientxy(I, 'sobel'); M = imgradient(Gx, Gy);
  • Canny in OpenCV: cv2.Canny(img, low, high)
  • SE in MATLAB: Lade das Toolbox von Github und nutze edgesDetect.

Fazit und Ausblick

Kantenerkennung ist ein spannendes Feld mit vielen Anwendungen. In der Hausaufgabe EE569 Homework #2 wirst du diese Verfahren selbst implementieren und vergleichen. Viel Erfolg!