Sectie 1. Hoofdstuk 10
single
Randdetectie
Veeg om het menu te tonen
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
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 op1voor horizontale randen);dy: orde van de afgeleide in de Y-richting (stel in op1voor verticale randen);ksize: kernelgrootte (moet oneven zijn, bijv.3,5,7).
Canny-randdetectie
De Canny Edge Detector is een meerstapsalgoritme dat nauwkeurigere randen oplevert door:
- Het toepassen van een Gaussiaanse vervaging om ruis te verwijderen.
- Het vinden van intensiteitsgradiënten met Sobel-filters.
- Het onderdrukken van zwakke randen.
- Het gebruik van dubbele drempelwaarden en randtracering.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
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:
Taak
Swipe to start coding
Je krijgt een image:
- Zet de afbeelding om naar grijswaarden en sla deze op in
gray_image; - Pas het Sobel-filter toe in de X- en Y-richting (uitvoer-diepte
cv2.CV_64Fen kernelgrootte3) en sla deze respectievelijk op insobel_x,sobel_y; - Combineer de Sobel-gefilterde richtingen in
sobel_img; - Pas een Canny-filter toe met een drempel van
200tot300en sla op incanny_img.
Oplossing
Was alles duidelijk?
Bedankt voor je feedback!
Sectie 1. Hoofdstuk 10
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.