Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Randdetectie | Beeldverwerking met OpenCV
Essentiële Computer Vision

bookRanddetectie

Randdetectie

Randen vertegenwoordigen plotselinge veranderingen in pixelintensiteit, wat meestal overeenkomt met objectgrenzen. Het detecteren van randen helpt bij vormherkenning en segmentatie.

Sobel-randdetectie

De Sobel-operator berekent gradiënten (veranderingen in intensiteit) in zowel de X- als Y-richting, waardoor horizontale en verticale randen kunnen worden gedetecteerd.

# 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
Opmerking

Belangrijke parameters:

  • src: invoerafbeelding (moet grijswaarden zijn);
  • ddepth: diepte van de uitvoerafbeelding (bijv. cv2.CV_64F);
  • dx: orde van de afgeleide in de X-richting (stel in op 1 voor horizontale randen);
  • dy: orde van de afgeleide in de Y-richting (stel in op 1 voor verticale randen);
  • ksize: kernelgrootte (moet oneven zijn, bijv. 3, 5, 7).

Canny-randdetectie

De Canny-randdetector is een meerstapsalgoritme dat nauwkeurigere randen oplevert door:

  1. Het toepassen van een Gaussiaanse vervaging om ruis te verwijderen.
  2. Het vinden van intensiteitsgradiënten met Sobel-filters.
  3. Het onderdrukken van zwakke randen.
  4. Het gebruiken van dubbele drempelwaarden en randtracering.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Opmerking
  • image: invoer grijswaardenafbeelding;
  • threshold1: onderste drempelwaarde voor randdetectie (bijv. 50);
  • threshold2: bovenste drempelwaarde voor randdetectie (bijv. 150);
  • apertureSize (optioneel): grootte van de Sobel-kernel (standaard: 3, moet oneven zijn);
  • L2gradient (optioneel): gebruik nauwkeurigere L2-norm gradiëntberekening (standaard: False).

Een vergelijking van randdetectiemethoden:

randdetectie vergeleken
Taak

Swipe to start coding

Je krijgt een image:

  • Zet de afbeelding om naar grijswaarden en sla op in gray_image;
  • Pas het Sobel-filter toe in de X- en Y-richting (uitvoer-diepte cv2.CV_64F en kernelgrootte 3) en sla op in respectievelijk sobel_x, sobel_y;
  • Combineer de Sobel-gefilterde richtingen in sobel_img;
  • Pas een Canny-filter toe met een drempel van 200 tot 300 en sla op in canny_img.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookRanddetectie

Veeg om het menu te tonen

Randdetectie

Randen vertegenwoordigen plotselinge veranderingen in pixelintensiteit, wat meestal overeenkomt met objectgrenzen. Het detecteren van randen helpt bij vormherkenning en segmentatie.

Sobel-randdetectie

De Sobel-operator berekent gradiënten (veranderingen in intensiteit) in zowel de X- als Y-richting, waardoor horizontale en verticale randen kunnen worden gedetecteerd.

# 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
Opmerking

Belangrijke parameters:

  • src: invoerafbeelding (moet grijswaarden zijn);
  • ddepth: diepte van de uitvoerafbeelding (bijv. cv2.CV_64F);
  • dx: orde van de afgeleide in de X-richting (stel in op 1 voor horizontale randen);
  • dy: orde van de afgeleide in de Y-richting (stel in op 1 voor verticale randen);
  • ksize: kernelgrootte (moet oneven zijn, bijv. 3, 5, 7).

Canny-randdetectie

De Canny-randdetector is een meerstapsalgoritme dat nauwkeurigere randen oplevert door:

  1. Het toepassen van een Gaussiaanse vervaging om ruis te verwijderen.
  2. Het vinden van intensiteitsgradiënten met Sobel-filters.
  3. Het onderdrukken van zwakke randen.
  4. Het gebruiken van dubbele drempelwaarden en randtracering.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Opmerking
  • image: invoer grijswaardenafbeelding;
  • threshold1: onderste drempelwaarde voor randdetectie (bijv. 50);
  • threshold2: bovenste drempelwaarde voor randdetectie (bijv. 150);
  • apertureSize (optioneel): grootte van de Sobel-kernel (standaard: 3, moet oneven zijn);
  • L2gradient (optioneel): gebruik nauwkeurigere L2-norm gradiëntberekening (standaard: False).

Een vergelijking van randdetectiemethoden:

randdetectie vergeleken
Taak

Swipe to start coding

Je krijgt een image:

  • Zet de afbeelding om naar grijswaarden en sla op in gray_image;
  • Pas het Sobel-filter toe in de X- en Y-richting (uitvoer-diepte cv2.CV_64F en kernelgrootte 3) en sla op in respectievelijk sobel_x, sobel_y;
  • Combineer de Sobel-gefilterde richtingen in sobel_img;
  • Pas een Canny-filter toe met een drempel van 200 tot 300 en sla op in canny_img.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7
single

single

some-alt