Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kantdeteksjon | Bildebehandling med OpenCV
Grunnleggende Datamaskinsyn

bookKantdeteksjon

Kantdeteksjon

Kanter representerer plutselige endringer i pikselintensitet, som vanligvis tilsvarer objekters grenser. Å oppdage kanter hjelper med gjenkjenning av former og segmentering.

Sobel kantdeteksjon

Sobel-operatoren beregner gradienter (endringer i intensitet) i både X- og Y-retning, og hjelper med å oppdage 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
Merk

Viktige parametere:

  • src: inputbilde (må være gråtone);
  • ddepth: dybde på utgangsbildet (f.eks. cv2.CV_64F);
  • dx: orden på deriveringen i X-retning (sett 1 for horisontale kanter);
  • dy: orden på deriveringen i Y-retning (sett 1 for vertikale kanter);
  • ksize: kjernestørrelse (må være oddetall, f.eks. 3, 5, 7).

Canny kantdeteksjon

Canny-kantdetektoren er en flerstegsalgoritme som gir mer nøyaktige kanter ved å:

  1. Bruke Gaussisk uskarphet for å fjerne støy.
  2. Finne intensitetsgradienter med Sobel-filtre.
  3. Undertrykke svake kanter.
  4. Bruke dobbel terskling og kantsporing.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Merk
  • image: input gråtonebilde;
  • threshold1: nedre terskelverdi for kantdeteksjon (f.eks. 50);
  • threshold2: øvre terskelverdi for kantdeteksjon (f.eks. 150);
  • apertureSize (valgfritt): størrelse på Sobel-kjernen (standard: 3, må være et oddetall);
  • L2gradient (valgfritt): bruk mer nøyaktig L2-norm gradientberegning (standard: False).

En sammenligning av kantdeteksjonsmetoder:

kantdeteksjon sammenlignet
Oppgave

Swipe to start coding

Du har fått et image:

  • Konverter bildet til gråtoner og lagre i gray_image;
  • Bruk Sobel-filter i X- og Y-retningene (utgangsdybde cv2.CV_64F og kjernestørrelse 3) og lagre i henholdsvis sobel_x, sobel_y;
  • Kombiner Sobel-filtrerte retninger i sobel_img;
  • Bruk et Canny-filter med terskelverdier fra 200 til 300 og lagre i canny_img.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

Awesome!

Completion rate improved to 3.45

bookKantdeteksjon

Sveip for å vise menyen

Kantdeteksjon

Kanter representerer plutselige endringer i pikselintensitet, som vanligvis tilsvarer objekters grenser. Å oppdage kanter hjelper med gjenkjenning av former og segmentering.

Sobel kantdeteksjon

Sobel-operatoren beregner gradienter (endringer i intensitet) i både X- og Y-retning, og hjelper med å oppdage 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
Merk

Viktige parametere:

  • src: inputbilde (må være gråtone);
  • ddepth: dybde på utgangsbildet (f.eks. cv2.CV_64F);
  • dx: orden på deriveringen i X-retning (sett 1 for horisontale kanter);
  • dy: orden på deriveringen i Y-retning (sett 1 for vertikale kanter);
  • ksize: kjernestørrelse (må være oddetall, f.eks. 3, 5, 7).

Canny kantdeteksjon

Canny-kantdetektoren er en flerstegsalgoritme som gir mer nøyaktige kanter ved å:

  1. Bruke Gaussisk uskarphet for å fjerne støy.
  2. Finne intensitetsgradienter med Sobel-filtre.
  3. Undertrykke svake kanter.
  4. Bruke dobbel terskling og kantsporing.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Merk
  • image: input gråtonebilde;
  • threshold1: nedre terskelverdi for kantdeteksjon (f.eks. 50);
  • threshold2: øvre terskelverdi for kantdeteksjon (f.eks. 150);
  • apertureSize (valgfritt): størrelse på Sobel-kjernen (standard: 3, må være et oddetall);
  • L2gradient (valgfritt): bruk mer nøyaktig L2-norm gradientberegning (standard: False).

En sammenligning av kantdeteksjonsmetoder:

kantdeteksjon sammenlignet
Oppgave

Swipe to start coding

Du har fått et image:

  • Konverter bildet til gråtoner og lagre i gray_image;
  • Bruk Sobel-filter i X- og Y-retningene (utgangsdybde cv2.CV_64F og kjernestørrelse 3) og lagre i henholdsvis sobel_x, sobel_y;
  • Kombiner Sobel-filtrerte retninger i sobel_img;
  • Bruk et Canny-filter med terskelverdier fra 200 til 300 og lagre i canny_img.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7
single

single

some-alt