Sectie 2. Hoofdstuk 7
single
Randdetectie
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
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-randdetector 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 gebruiken 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 op in
gray_image; - Pas het Sobel-filter toe in de X- en Y-richting (uitvoer-diepte
cv2.CV_64Fen kernelgrootte3) en sla op in respectievelijksobel_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 2. Hoofdstuk 7
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.