Erosione e dilatazione delle immagini utilizzando OpenCV in Python

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-originaleOriginale

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:

erosioneDopo 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:

dilatazioneDopo 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