Operatore Sobel

L'operatore sobel è molto simile all'operatore Prewitt. È anche una maschera derivata e viene utilizzata per il rilevamento dei bordi. Come l'operatore Prewitt, l'operatore sobel viene utilizzato anche per rilevare due tipi di bordi in un'immagine:

  • Direzione verticale
  • Direzione orizzontale

Differenza con l'operatore Prewitt

La differenza principale è che nell'operatore sobel i coefficienti delle maschere non sono fissi e possono essere regolati secondo le nostre esigenze a meno che non violino alcuna proprietà delle maschere derivate.

Di seguito è riportata la maschera verticale dell'operatore Sobel:

-1 0 1
-2 0 2
-1 0 1

Questa maschera funziona esattamente come la maschera verticale dell'operatore Prewitt. C'è solo una differenza che ha i valori "2" e "-2" al centro della prima e della terza colonna. Quando applicata su un'immagine, questa maschera evidenzierà i bordi verticali.

Come funziona

Quando applichiamo questa maschera sull'immagine, i bordi verticali prominenti. Funziona semplicemente come derivato del primo ordine e calcola la differenza di intensità dei pixel in una regione del bordo.

Poiché la colonna centrale è pari a zero, non include i valori originali di un'immagine ma calcola piuttosto la differenza dei valori dei pixel destro e sinistro attorno a quel bordo. Anche i valori centrali della prima e della terza colonna sono rispettivamente 2 e -2.

Ciò conferisce maggiore peso all'età ai valori dei pixel attorno alla regione del bordo. Ciò aumenta l'intensità del bordo e viene migliorata rispetto all'immagine originale.

Di seguito è riportata la maschera orizzontale dell'operatore Sobel

-1 -2 -1
0 0 0
1 2 1

La maschera sopra troverà i bordi in direzione orizzontale ed è perché quella colonna di zeri è in direzione orizzontale. Quando si convolge questa maschera su un'immagine, i bordi orizzontali risaltano nell'immagine. L'unica differenza è che ha 2 e -2 come elemento centrale della prima e della terza riga.

Come funziona

Questa maschera evidenzierà i bordi orizzontali di un'immagine. Funziona anche sul principio della maschera sopra e calcola la differenza tra le intensità dei pixel di un bordo particolare. Poiché la riga centrale della maschera è composta da zeri, non include i valori originali del bordo nell'immagine, ma calcola piuttosto la differenza delle intensità dei pixel sopra e sotto del bordo particolare. Aumentando così l'improvviso cambio di intensità e rendendo il bordo più visibile.

Ora è il momento di vedere queste maschere in azione:

Immagine di esempio

Di seguito è un'immagine di esempio su cui applicheremo sopra due maschere una alla volta.

Dopo aver applicato la maschera verticale

Dopo aver applicato la maschera verticale sull'immagine di esempio sopra, si otterrà l'immagine seguente.

Dopo aver applicato la maschera orizzontale

Dopo aver applicato la maschera orizzontale sull'immagine di esempio sopra, si otterrà l'immagine seguente

Confronto

Come puoi vedere che nella prima immagine su cui applichiamo la maschera verticale, tutti i bordi verticali sono più visibili dell'immagine originale. Allo stesso modo nella seconda immagine abbiamo applicato la maschera orizzontale e di conseguenza sono visibili tutti i bordi orizzontali.

Quindi in questo modo puoi vedere che possiamo rilevare i bordi orizzontali e verticali di un'immagine. Inoltre, se confronti il ​​risultato dell'operatore sobel con l'operatore Prewitt, scoprirai che l'operatore sobel trova più bordi o rende i bordi più visibili rispetto all'operatore Prewitt.

Questo perché nell'operatore sobel abbiamo assegnato più peso alle intensità dei pixel attorno ai bordi.

Applicare più peso alla maschera

Ora possiamo anche vedere che se applichiamo più peso alla maschera, più bordi avrà per noi. Inoltre, come accennato all'inizio del tutorial, non ci sono coefficienti fissi nell'operatore sobel, quindi ecco un altro operatore ponderato

-1 0 1
-5 0 5
-1 0 1

Se puoi confrontare il risultato di questa maschera con quello della maschera verticale Prewitt, è chiaro che questa maschera darà più bordi rispetto a quella di Prewitt solo perché abbiamo assegnato più peso alla maschera.