Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Kantdetektering | Bildbehandling med OpenCV
Grunder i Datorseende

bookKantdetektering

Kantdetektion

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

Sobel-kantdetektion

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: ordningen av derivatan i X-riktning (ange 1 för horisontella kanter);
  • dy: ordningen av derivatan i Y-riktning (ange 1 för vertikala kanter);
  • ksize: kärnstorlek (måste vara udda, t.ex. 3, 5, 7).

Canny-kantdetektion

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: inmatad gråskalebild;
  • threshold1: lägre tröskelvärde för kantdetektion (t.ex. 50);
  • threshold2: övre tröskelvärde för kantdetektion (t.ex. 150);
  • apertureSize (valfritt): storlek på Sobel-kärnan (standard: 3, måste vara udda);
  • L2gradient (valfritt): använd mer exakt L2-norm gradientberäkning (standard: False).

En jämförelse av kantdetekteringsmetoder:

kantdetektering jämförd
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-riktning (utmatningsdjup cv2.CV_64F och kernelstorlek 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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7
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

Suggested prompts:

What are the main differences between Sobel and Canny edge detection?

Can you explain when to use Sobel versus Canny edge detection?

Can you provide more details on how the Canny edge detector works?

close

Awesome!

Completion rate improved to 3.45

bookKantdetektering

Svep för att visa menyn

Kantdetektion

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

Sobel-kantdetektion

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: ordningen av derivatan i X-riktning (ange 1 för horisontella kanter);
  • dy: ordningen av derivatan i Y-riktning (ange 1 för vertikala kanter);
  • ksize: kärnstorlek (måste vara udda, t.ex. 3, 5, 7).

Canny-kantdetektion

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: inmatad gråskalebild;
  • threshold1: lägre tröskelvärde för kantdetektion (t.ex. 50);
  • threshold2: övre tröskelvärde för kantdetektion (t.ex. 150);
  • apertureSize (valfritt): storlek på Sobel-kärnan (standard: 3, måste vara udda);
  • L2gradient (valfritt): använd mer exakt L2-norm gradientberäkning (standard: False).

En jämförelse av kantdetekteringsmetoder:

kantdetektering jämförd
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-riktning (utmatningsdjup cv2.CV_64F och kernelstorlek 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 2. Kapitel 7
single

single

some-alt