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

Suggested prompts:

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?

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