Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Rilevamento dei Bordi | Elaborazione delle Immagini con OpenCV
Fondamenti di Computer Vision

bookRilevamento 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
Note
Nota

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 (impostare 1 per i bordi orizzontali);
  • dy: ordine della derivata nella direzione Y (impostare 1 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:

  1. Applicazione di un filtro Gaussiano per rimuovere il rumore.
  2. Calcolo dei gradienti di intensità tramite filtri Sobel.
  3. Soppressione dei bordi deboli.
  4. Utilizzo di doppia soglia e tracciamento dei bordi.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Nota
  • 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:

confronto rilevamento bordi
Compito

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 kernel 3) e salva rispettivamente in sobel_x, sobel_y;
  • Combina le direzioni filtrate da Sobel in sobel_img;
  • Applica un filtro Canny con soglia da 200 a 300 e salva in canny_img.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

Awesome!

Completion rate improved to 3.45

bookRilevamento 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
Note
Nota

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 (impostare 1 per i bordi orizzontali);
  • dy: ordine della derivata nella direzione Y (impostare 1 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:

  1. Applicazione di un filtro Gaussiano per rimuovere il rumore.
  2. Calcolo dei gradienti di intensità tramite filtri Sobel.
  3. Soppressione dei bordi deboli.
  4. Utilizzo di doppia soglia e tracciamento dei bordi.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Nota
  • 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:

confronto rilevamento bordi
Compito

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 kernel 3) e salva rispettivamente in sobel_x, sobel_y;
  • Combina le direzioni filtrate da Sobel in sobel_img;
  • Applica un filtro Canny con soglia da 200 a 300 e salva in canny_img.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7
single

single

some-alt