Close

29 agosto 2019

Tecniche di thresholding per la binarizzazione di immagini

IMAGE BINARIZATION

Nel campo dell’image processing ricopre un ruolo fondamentale la possibilità di distinguere diversi oggetti, forme e contorni presenti nell’immagine in analisi. Per far ciò è possibile ricorrere a svariate metodologie, che sono strettamente dipendenti dal contesto in cui si intende operare. Per esempio, nel caso del riconoscimento ottico dei caratteri (OCR), le operazioni che andranno descritte assumono importanza assoluta, dato che questo tipo di applicazione, per operare al meglio, ha spesso bisogno di ricevere in input un’immagine in bianco e nero, in cui lo sfondo è di colore bianco e il testo è di colore nero. Gli argomenti affrontati, nel caso di un’applicazione OCR, saranno soprattutto utili nel caso in cui il motore utilizzato sia open-source, ovvero nel caso in cui un buon pre-processing dell’immagine possa fare la differenza. In questo articolo andremo quindi ad analizzare gli workflow più ricorrenti in questo campo, cercando di far chiarezza nell’accoppiamento di tecnica e convenienza.

Da qui in avanti ipotizzeremo di lavorare con immagini in scala di grigi, ovvero immagini che mantengono un singolo canale colore, anche se i metodi descritti possono facilmente essere generalizzati per immagini con più di un canale.

Sogliatura globale

É il più semplice metodo di thresholding, che prevede la scelta di un determinato valore di soglia, compreso tra 0 e 255. L’algoritmo di sogliatura prevede quindi la scansione, pixel per pixel, dell’immagine e, nel caso in cui il valore del pixel esaminato sia minore del valore di soglia, tale pixel assumerà valore zero, che corrisponde al colore nero. Altrimenti, nel caso in cui il valore del pixel esaminato sia maggiore o uguale del valore di soglia, tale pixel assumerà valore 255, che corrisponde al colore bianco. Risulta facile intuire quale possa essere il problema principale di questo tipo di algoritmo di sogliatura…

LA SCELTA DEL VALORE DI SOGLIA

Nel caso in cui il contesto in cui si opera sia relativamente statico, la sogliatura globale risulta comunque l’opzione più semplice e più consona. In particolare, il metodo descritto risulta adatto se le immagini in analisi presentano più o meno le stesse caratteristiche in termini di illuminazione e contrasto. Se così non fosse, sarebbe necessario valutare l’implementazione di algoritmi leggermente più complessi.

Sogliatura adattativa (o locale)

Questo metodo di thresholding consente di sopperire alle mancanze della sogliatura globale, nel caso in cui le immagini in analisi presentino illuminazione e/o contrasto non uniforme. In particolare, questa tecnica dinamica computa automaticamente differenti valori di soglia per diverse aree dell’immagine. Dunque, l’immagine viene suddivisa in tante sotto-immagini, abbastanza piccole da poter ipotizzare che in ciascun sotto-immagine illuminazione e contrasto siano sufficientemente uniformi. Una volta suddivisa l’immagine, un valore di soglia viene calcolato per ciascuna sotto-immagine. Il calcolo di ogni valore di soglia dipende dall’implementazione specifica dell’algoritmo, ma i metodi più utilizzati sono i seguenti:

  • Media dei valori dei pixel della sotto-immagine
  • Mediana dei valori dei pixel della sotto-immagine
  • Media fra valore massimo e minimo dei pixel della sotto-immagine

Per poter configurare al meglio questo tipo di operazione per il proprio contesto di applicazione, spesso è possibile configurare alcuni iperparametri. Nel caso specifico della libreria OpenCV, è possibile impostare il valore c, che viene sottratto da ciascun valore di soglia di ogni sotto-immagine. Per esempio, nel caso in cui il valore di soglia venga calcolato utilizzando la media mean, la soglia scelta non sarà esattamente mean, ma mean – c.

La libreria OpenCV implementa un ulteriore tipologia di calcolo del valore di soglia, per quanto riguarda la sogliatura adattativa, ovvero una somma pesata dei valori dei pixel di ciascuna sotto-immagine, in cui i pesi sono rappresentati da una finestra Gaussiana.

Finestra Gaussiana

Nel caso in cui il pacchetto di image processing che si sta utilizzando non contenga un operatore di sogliatura adattativa, è possibile simularlo con i seguenti passaggi:

  1. Convoluzione dell’immagine con un operatore statistico adeguato (per esempio, media o mediana)
  2. Differenza fra immagine convoluzionata e immagine originale
  3. Sogliatura globale dell’immagine ottenuta con la costante c
  4. Inversione dell’immagine binarizzata

Il problema principale della sogliatura adattativa è che tende a valorizzare tutti gli elementi presenti nell’immagine, non consentendo di differenziare al meglio le componenti d’interesse da quelle che invece si vorrebbero scartare.

Inoltre, esistono altre tecniche di sogliatura locale efficaci, implementate da algoritmi quali quello di Sauvola e Niblack.

Sogliatura di Otsu

Questo tipo di sogliatura utilizza tecniche di analisi dell’istogramma dell’immagine ed è particolarmente adatto per immagini bimodali, ovvero per immagini che presentano istogrammi con una netta separazione tra due picchi principali. La binarizzazione di Otsu si occupa proprio di trovare la “valle” di scissione fra tali picchi, che risulta essere proprio il valore di soglia ottimale per la l’applicazione di un’operazione di sogliatura globale.

Nel caso in cui l’immagine in analisi non presenti esattamente due massimi locali nella funzione istogramma, il procedimento di Otsu potrebbe però portare a risultati indesiderati.

Algoritmo proposto

Nel seguito viene descritto un algoritmo pensato e implementato per la segmentazione di immagini contenenti testo nero su uno sfondo colorato, arricchito di decorazioni, simboli e varie grafiche.

Original-field

Immagine in input

 

Prima trasformazione

Il primo passaggio riguarda una trasformazione utilizzata per equalizzare l’istogramma dell’immagine e consiste prima di tutto in un’operazione di ridimensionamento dell’immagine di un determinato fattore di scala. Dopodiché viene applicato un clip superiore, ovvero i valori dei pixel dell’immagine vengono superiormente limitati a mean – c, con mean media dei valori dei pixel e c costante arbitraria. Il problema principale di questa operazione riguarda l’eliminazione di informazione utile nel caso in cui il testo presente sia sufficientemente sbiadito.

Clipped-field

Output prima trasformazione

 

Trasformazione semplice

Il secondo passaggio applica le seguenti operazioni:

  1. Binarizzazione di Otsu
  2. Apertura morfologica
  3. Chiusura morfologica
  4. Ritaglio dell’immagine per avere solamente il testo di interesse

I punti (2) e (3) richiedono la definizione di un elemento strutturante, o kernel, per effettuare la convoluzione dell’immagine, che dipende strettamente dal contesto di applicazione e che in questo caso dovrà essere all’incirca della dimensione del font utilizzato nelle immagini. In particolare, le operazioni di apertura e chiusura non sono altro che la combinazione di erosione e dilatazione dell’immagine, in ordine diverso. L’apertura morfologica computa prima l’erosione e poi la dilatazione, mentre la chiusura computa prima la dilatazione e poi l’erosione. In questo caso, l’operazione di apertura viene utilizzata per rimuovere noise, mentre la chiusura per riempire “buchi” nelle lettere del testo di interesse.

Il punto (4) prevede prima di tutto l’individuazione dei contorni presenti nell’immagine e da questi la definizione dei vari “bounding boxes“, ovvero dei minimi rettangoli contenenti ciascuna forma riconosciuta. A partire dai “bounding boxes” viene poi calcolato il valore di ordinata più frequente, arrotondato alla decina più vicina, e il massimo valore di altezza fra tutti, che vengono utilizzati per effettuare un taglio preciso dell’immagine al rettangolo che si suppone contenga il testo di interesse.

Simple-field

Output trasformazione semplice

 

Trasformazione complessa

Il terzo passaggio si basa sull’articolo scientifico

Morphological Background Detection and Illumination Normalization of Text Image with Poor Lighting

e applica le seguenti operazioni:

  1. Operazione Top Hat modificata
  2. Blurring con filtro mediano
  3. Chiusura morfologica
  4. Ritaglio dell’immagine per avere solamente il testo di interesse
  5. Binarizzazione di Otsu
  6. Apertura morfologica

Percorriamo le operazioni svolte a ritroso. In particolare, i punti (6), (5), (4), (3) equivalgono a quelli effettuati nella trasformazione semplice.

Il punto (2) applica una sfocatura dell’immagine, utilizzando un filtro che scorre su ciascun pixel e sostituisce ciascun valore con la mediana degli elementi “vicini”, ovvero degli elementi che si trovano in una determinata sotto-immagine quadrata, centrata sul pixel valutato. La sfocatura è necessaria per mettere in risalto gli elementi importanti dell’immagine in esame.

Infine, il punto (1) applica le combinazioni di apertura e chiusura per ricostruzione, basate su erosione e dilatazione geodetica, descritte nell’articolo scientifico menzionato. Questo tipo di operazione consente inoltre di recuperare testi leggermente sbiaditi, che venivano invece penalizzati dalla prima trasformazione descritta.

Complex-field

Output trasformazione complessa

 

Domande/osservazioni/commenti a a.falai |at| quidinfo.it

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *