2013-03-28 11 views
5

Sto sviluppando un'applicazione per il rilevamento della pelle delle immagini.Esegui qualcosa di simile al Tono automatico di Photoshop con Aforge.net o C#

Ma c'è un problema con la mia macchina fotografica, che tenta di compensare la luce e l'immagine del risultato è cattiva, nella maggior parte dei casi ho un effetto freddo o caldo sull'immagine. Quando utilizzo Photoshop, c'è la funzione AutoTone che normalizza un'immagine e riduce questo problema.

Image

Image after Photoshop AutoTone

Con aforge voglio usare il filtro equalizzazione dell'istogramma(), ma il risultato è pessimo:

Image after HistogramEqualization

// create filter 
HistogramEqualization filter = new HistogramEqualization(); 
// process image 
filter.ApplyInPlace(sourceImage); 

Quindi la mia domanda è: Ci è una funzione in Accord o Aforge per avere lo stesso risultato del Autotone di Photoshop? In caso contrario, c'è qualche libreria o script che permette di fare questo?

Grazie a tutti.

risposta

3

Io uso il filtro LevelsLinear e la base su statistiche immagine:

ImageStatistics stats = new ImageStatistics(sourceImage); 
LevelsLinear levelsLinear = new LevelsLinear { 
    InRed = stats.Red.GetRange(0.90), 
    InGreen = stats.Green.GetRange(0.90), 
    InBlue = stats.Blue.GetRange(0.90) 
}; 

levelsLinear.ApplyInPlace(sourceImage); 

si può giocare con la gamma di modificare il risultato.

+0

Wow, questa normalizzazione è perfetta! Grazie mille. – Univers3

1

Probabilmente non si vuole equalizzare l'istogramma, perché come si vede, una foto che normalmente non avrebbe molto rosso, avrebbe un sacco di rosso creato e renderlo brutto. Invece probabilmente vorrai esaminare un pregiudizio per una tonalità che si verifica quasi ovunque. Ad esempio, la tua foto originale ha probabilmente un pregiudizio verso il blu in quasi tutti i pixel, e quindi probabilmente non dovrebbe esserci. Cerca un pregiudizio minimo e rimuovi l'importo ovunque.

Una soluzione più pratica è sperimentare l'impostazione del bilanciamento del bianco sulla fotocamera per vedere quale è il risultato migliore. Scegliendo il preset giusto, sfrutterai un algoritmo che probabilmente è buono come quello che avresti scritto a mano. Ma forse lo stai facendo come un'esperienza di apprendimento.

+0

Questo era un esempio, ma il mio programma è fatto per le webcam, che non hanno molte impostazioni. Ho bisogno di qualcosa in C#. – Univers3