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 (impostare1per i bordi orizzontali);dy: ordine della derivata nella direzione Y (impostare1per 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_64Fe 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
200a300e 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
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 (impostare1per i bordi orizzontali);dy: ordine della derivata nella direzione Y (impostare1per 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_64Fe 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
200a300e salva incanny_img.
Soluzione
Grazie per i tuoi commenti!
single