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

bookKantdetektion

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

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

close

Awesome!

Completion rate improved to 3.45

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

some-alt