logo

Erosione e dilatazione delle immagini utilizzando OpenCV in Python

Le operazioni morfologiche modificano le immagini in base alla struttura e alla disposizione dei pixel. Applicano il kernel a un'immagine di input per modificarne le caratteristiche a seconda della disposizione dei pixel vicini. Le operazioni morfologiche come l'erosione e la dilatazione sono tecniche di elaborazione delle immagini, in particolare per immagini binarie o in scala di grigi. Aiutano ad analizzare le forme, a pulire il rumore e a perfezionare i confini degli oggetti.

Erosione

L'erosione nell'elaborazione delle immagini è un'operazione morfologica che restringe e assottiglia i confini degli oggetti in un'immagine rimuovendo i pixel sui bordi degli oggetti, rendendoli effettivamente più piccoli e rimuovendo il piccolo rumore bianco.

Scopo

  • Riduce o erode i confini degli oggetti in primo piano (solitamente pixel bianchi).
  • Rimuove il rumore bianco sottile e separa gli oggetti che si toccano.

Come funziona

  • Un kernel (di solito una matrice 3×3 5×5 o 7×7 di uno) scorre sull'immagine.
  • Un pixel rimane bianco (1) solo se tutti i pixel sotto il kernel sono bianchi; altrimenti diventa nero (0).
  • Questo processo riduce le dimensioni dell'oggetto ed erode i bordi.

Dilatazione

La dilatazione è un'operazione morfologica che espande i confini degli oggetti in un'immagine aggiungendo pixel ai bordi degli oggetti, facendoli apparire più grandi e riempiendo piccoli spazi vuoti o buchi.



Scopo:

  • Espande i confini degli oggetti in primo piano.
  • Accentua o ingrandisce le caratteristiche e colma piccole lacune.

Come funziona:

  • Il kernel è similmente contorto sull'immagine.
  • Un pixel è impostato su bianco (1) se  almeno uno  dei pixel corrispondenti sotto il kernel è bianco.
  • Di conseguenza le regioni bianche crescono unendo piccoli fori o unendo insieme parti rotte.

Attuazione dell'erosione e della dilatazione

Implementiamo Erosione e Dilatazione con OpenCV in Python

Passaggio 1: importare librerie

Importeremo le librerie necessarie

  • cv2 : Libreria OpenCV per l'elaborazione delle immagini.
  • insensato : Per operazioni numeriche e per creare nuclei.
  • matplotlib.pyplot : Per visualizzare le immagini nei taccuini.

Passaggio 2: caricare l'immagine di input e definire gli elementi di struttura (kernel)

Il kernel definisce l'intorno per l'operazione. Le scelte comuni sono rettangoli o dischi.

L'immagine utilizzata può essere scaricata da Qui .

Python
img = cv2.imread('input.webp' 0) plt.imshow(img cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() kernel = np.ones((5 5) np.uint8) 

Produzione:

gatto-originale' title=Originale

Passaggio 3: applicare l'erosione

L'erosione funziona facendo scorrere il kernel sull'immagine. Un pixel rimane bianco (255) solo se tutti i pixel sotto il nucleo sono bianchi altrimenti diventa nero (0). Ciò riduce i confini dell'oggetto e rimuove il piccolo rumore bianco.

Python
img_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show() 

Produzione:

erosione' loading='lazy' title=Dopo l'erosione

Passaggio 4: applicare la dilatazione

La dilatazione fa scorrere il nucleo attraverso l'immagine e un pixel diventa bianco se almeno un pixel sotto il nucleo è bianco. Questo ispessisce le regioni o gli oggetti bianchi e riempie piccoli buchi.

Python
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show() 

Produzione:

dilatazione' loading='lazy' title=Dopo la dilatazione

Applicazioni

Erosione

  • Rimozione del rumore bianco isolato da un'immagine.
  • Separare oggetti uniti o toccanti.
  • Trovare i confini degli oggetti riducendo le dimensioni dell'oggetto.

Dilatazione

  • Riempimento di piccoli fori o spazi vuoti negli oggetti.
  • Unione di parti rotte o disconnesse dello stesso oggetto.
  • Utilizzato dopo l'erosione (come parte dell'operazione di "apertura") per ripristinare le dimensioni dell'oggetto mantenendo rimosso il rumore.

L'erosione e la dilatazione sono operazioni morfologiche fondamentali nell'elaborazione delle immagini che ci consentono di affinare, pulire e manipolare le forme all'interno delle immagini. Utilizzando semplici elementi di strutturazione, queste tecniche aiutano a rimuovere il rumore, separano o collegano oggetti e migliorano le caratteristiche dell'immagine, rendendoli strumenti essenziali per un'efficace pre-elaborazione e analisi nelle attività di visione artificiale con OpenCV e Python.

Crea quiz