Rilevamento dei Bordi
Rilevamento dei bordi
I bordi rappresentano variazioni improvvise nell'intensità dei pixel, che solitamente corrispondono ai contorni degli oggetti. Il rilevamento dei bordi facilita il riconoscimento delle forme e la segmentazione.
Rilevamento dei bordi con Sobel
L'operatore Sobel calcola i gradienti (variazioni di intensità) sia nelle direzioni X che Y, aiutando a rilevare bordi orizzontali e verticali.
# 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
Parametri principali:
src
: immagine di input (deve essere in scala di grigi);ddepth
: profondità dell'immagine di output (ad esempio,cv2.CV_64F
);dx
: ordine della derivata nella direzione X (impostare1
per i bordi orizzontali);dy
: ordine della derivata nella direzione Y (impostare1
per i bordi verticali);ksize
: dimensione del kernel (deve essere dispari, ad esempio,3
,5
,7
).
Rilevamento dei bordi con Canny
Il rilevatore di bordi di Canny è un algoritmo multi-fase che fornisce bordi più accurati tramite:
- Applicazione di un filtro Gaussiano per rimuovere il rumore.
- Calcolo dei gradienti di intensità tramite filtri Sobel.
- Soppressione dei bordi deboli.
- Utilizzo di doppia soglia e tracciamento dei bordi.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
image
: immagine di input in scala di grigi;threshold1
: soglia inferiore per il rilevamento dei bordi (ad esempio,50
);threshold2
: soglia superiore per il rilevamento dei bordi (ad esempio,150
);apertureSize
(opzionale): dimensione del kernel di Sobel (predefinito:3
, deve essere dispari);L2gradient
(opzionale): utilizzo di un calcolo del gradiente L2 più accurato (predefinito:False
).
Un confronto tra i metodi di rilevamento dei bordi:

Swipe to start coding
Ti viene fornita un'immagine (image
):
- Converti l'immagine in scala di grigi e salvala in
gray_image
; - Applica il filtro Sobel nelle direzioni X e Y (profondità di output
cv2.CV_64F
e dimensione kernel3
) e salva rispettivamente insobel_x
,sobel_y
; - Combina le direzioni filtrate da Sobel in
sobel_img
; - Applica un filtro Canny con soglia da
200
a300
e salva incanny_img
.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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?
Awesome!
Completion rate improved to 3.45
Rilevamento dei Bordi
Scorri per mostrare il menu
Rilevamento dei bordi
I bordi rappresentano variazioni improvvise nell'intensità dei pixel, che solitamente corrispondono ai contorni degli oggetti. Il rilevamento dei bordi facilita il riconoscimento delle forme e la segmentazione.
Rilevamento dei bordi con Sobel
L'operatore Sobel calcola i gradienti (variazioni di intensità) sia nelle direzioni X che Y, aiutando a rilevare bordi orizzontali e verticali.
# 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
Parametri principali:
src
: immagine di input (deve essere in scala di grigi);ddepth
: profondità dell'immagine di output (ad esempio,cv2.CV_64F
);dx
: ordine della derivata nella direzione X (impostare1
per i bordi orizzontali);dy
: ordine della derivata nella direzione Y (impostare1
per i bordi verticali);ksize
: dimensione del kernel (deve essere dispari, ad esempio,3
,5
,7
).
Rilevamento dei bordi con Canny
Il rilevatore di bordi di Canny è un algoritmo multi-fase che fornisce bordi più accurati tramite:
- Applicazione di un filtro Gaussiano per rimuovere il rumore.
- Calcolo dei gradienti di intensità tramite filtri Sobel.
- Soppressione dei bordi deboli.
- Utilizzo di doppia soglia e tracciamento dei bordi.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
image
: immagine di input in scala di grigi;threshold1
: soglia inferiore per il rilevamento dei bordi (ad esempio,50
);threshold2
: soglia superiore per il rilevamento dei bordi (ad esempio,150
);apertureSize
(opzionale): dimensione del kernel di Sobel (predefinito:3
, deve essere dispari);L2gradient
(opzionale): utilizzo di un calcolo del gradiente L2 più accurato (predefinito:False
).
Un confronto tra i metodi di rilevamento dei bordi:

Swipe to start coding
Ti viene fornita un'immagine (image
):
- Converti l'immagine in scala di grigi e salvala in
gray_image
; - Applica il filtro Sobel nelle direzioni X e Y (profondità di output
cv2.CV_64F
e dimensione kernel3
) e salva rispettivamente insobel_x
,sobel_y
; - Combina le direzioni filtrate da Sobel in
sobel_img
; - Applica un filtro Canny con soglia da
200
a300
e salva incanny_img
.
Soluzione
Grazie per i tuoi commenti!
single