Categories: Grafica

Istogrammi per Aumentare la Qualità delle Immagini

Un istogramma, in ambito di image processing, è un grafico che mostra quanti pixel di un’immagine hanno una certa intensità di colore. Prendiamo ad esempio un’immagine con 256 colori, si va dal nero ( valore 0 ) al bianco ( valore 255 ), in questo caso per costruire un istogramma occorre una sola passata dei valori. In pratica si prende ogni pixel dell’immagine e lo si mette in un array di valori, un algoritmo in C/C++ potrebbe essere questo:

int istog[255];

for (int i = 0; i < 256; i++)
   isto[i] = 0;

for (int x = 0; x < img.width; x++)
{
   for (int y = 0; y < img.height; y++)
   {
       clr = img[x][y];
       isto[clr]++;
   }
}

Al termine del doppio ciclo l’array istog conterrà un valore indicante quanti pixel dell’immagine hanno il colore n. Un istogramma fornisce quindi delle informazioni sul grado di nitidezza di un’immagine, in quanto a seconda della dimensione del picco centrale avremo degli sbalzi di colore ridotto rispetto ad un grafico con un picco molto più ampio.

Due istogrammi di immagini con meno definizione di colore ed una con più definizione di colore

L’idea di fondo dell’histogram equalization è quindi quella di modificare l’istogramma dell’immagine rendendolo più ampio possibile in modo da renderlo equi-distribuito. Sono presenti tre fasi distinte in questo algoritmo:

  1. Costruzione dell’istogramma dall’immagine di partenza
  2. Modifica dell’istogramma
  3. Applicazione dell’istogramma all’immagine

La prima fase è stata già descritta in precedenza, la seconda non è complicata ed in pratica avviene in questo modo: dato un singolo colore i, il suo nuovo valore è dato dalla somma dei precedenti valori, moltiplicato per una certa quantità N = 256 / W * H.

nuovo valore i = ( istog[0] + … + istog[i] ) * N

La terza fase serve per ottenere la nuova immagine ed è molto semplice, infatti basta scandagliare il nuovo array istog_new ed assegnare ad ogni pixel il nuovo valore di colore.
L’histogram equalization è un semplice, ma efficace algoritmo che consente di migliorare il contrasto delle immagini. Ovviamente in questa sede ho spiegato soltanto la base di questo algoritmo, esistono anche delle note varianti e ci sono altri algoritmi molto conosciuti che si basano proprio su questo.

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago