Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kantdetektion | Billedbehandling med OpenCV
/
Computer Vision Essentials
Sektion 2. Kapitel 7
single

single

bookKantdetektion

Stryg for at vise menuen

Kantdetektion

Kanter repræsenterer pludselige ændringer i pixelintensitet, hvilket typisk svarer til objektgrænser. Detektering af kanter hjælper med genkendelse af former og segmentering.

Sobel-kantdetektion

Sobel-operatoren beregner gradienter (ændringer i intensitet) i både X- og Y-retningen, hvilket hjælper med at detektere horisontale og vertikale 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
Bemærk

Vigtige parametre:

  • src: inputbillede (skal være gråtone);
  • ddepth: dybde for outputbilledet (f.eks. cv2.CV_64F);
  • dx: orden af afledt i X-retningen (sæt 1 for horisontale kanter);
  • dy: orden af afledt i Y-retningen (sæt 1 for vertikale kanter);
  • ksize: kernelstørrelse (skal være ulige, f.eks. 3, 5, 7).

Canny-kantdetektion

Canny Edge Detector er en flertrinsalgoritme, der giver mere præcise kanter ved at:

  1. Anvende Gaussisk sløring for at fjerne støj.
  2. Finde intensitetsgradienter ved hjælp af Sobel-filtre.
  3. Undertrykke svage kanter.
  4. Bruge dobbelt tærskelværdi og kantsporing.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Bemærk
  • image: input gråtonebillede;
  • threshold1: nedre tærskelværdi for kantdetektion (f.eks. 50);
  • threshold2: øvre tærskelværdi for kantdetektion (f.eks. 150);
  • apertureSize (valgfri): størrelse på Sobel-kernen (standard: 3, skal være ulige);
  • L2gradient (valgfri): brug mere præcis L2-norm gradientberegning (standard: False).

En sammenligning af kantdetektionsmetoder:

kantdetektion sammenlignet
Opgave

Swipe to start coding

Du får et image:

  • Konverter billedet til gråtoner og gem det i gray_image;
  • Anvend Sobel-filter i X- og Y-retninger (output-dybde cv2.CV_64F og kernel-størrelse 3) og gem i henholdsvis sobel_x, sobel_y;
  • Kombinér Sobel-filtrerede retninger i sobel_img;
  • Anvend et Canny-filter med tærskel fra 200 til 300 og gem i canny_img.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt