Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Kantdetektion | Sektion
Tillämpad Datorseende
Avsnitt 1. Kapitel 10
single

single

bookKantdetektion

Svep för att visa menyn

Kanter representerar plötsliga förändringar i pixelintensitet, vilket vanligtvis motsvarar objektgränser. Att detektera kanter underlättar formigenkänning och segmentering.

Sobel-kantdiktering

Sobeloperatorn beräknar gradienter (förändringar i intensitet) i både X- och Y-riktning, vilket hjälper till att identifiera horisontella och vertikala kanter.

# Convert to grayscale
image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

# Apply Sobel filter
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)  # Detects vertical edges
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)  # Detects horizontal edges
sobel_combined = cv2.magnitude(sobel_x, sobel_y)  # Combines both directions
Note
Notering

Viktiga parametrar:

  • src: inmatningsbild (måste vara gråskala);
  • ddepth: djupet på utmatningsbilden (t.ex. cv2.CV_64F);
  • dx: ordning av derivatan i X-riktning (ange 1 för horisontella kanter);
  • dy: ordning av derivatan i Y-riktning (ange 1 för vertikala kanter);
  • ksize: kernelstorlek (måste vara udda, t.ex. 3, 5, 7).

Canny-kantdiktering

Canny Edge Detector är en flerstegsalgoritm som ger mer exakta kanter genom att:

  1. Applicera Gaussisk oskärpa för att ta bort brus.
  2. Hitta intensitetsgradienter med Sobel-filter.
  3. Undertrycka svaga kanter.
  4. Använda dubbel tröskling och kantspårning.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Notering
  • image: input grayscale image;
  • threshold1: lower threshold for edge detection (e.g., 50);
  • threshold2: upper threshold for edge detection (e.g., 150);
  • apertureSize (optional): size of the Sobel kernel (default: 3, must be odd);
  • L2gradient (optional): use more accurate L2 norm gradient calculation (default: False).

En jämförelse av kantdetekteringsmetoder:

edge detect compared
Uppgift

Swipe to start coding

Du har fått en image:

  • Konvertera bilden till gråskala och spara i gray_image;
  • Applicera Sobel-filter i X- och Y-riktningarna (utmatningsdjup cv2.CV_64F och kärnstorlek 3) och spara i sobel_x, sobel_y respektive;
  • Kombinera Sobel-filtrerade riktningar i sobel_img;
  • Applicera ett Canny-filter med tröskelvärden från 200 till 300 och spara i canny_img.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 10
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt