2009-12-15 17 views
5

Ho un'immagine in scala di grigi da una fotografia. Ho determinato che alcune parti dell'immagine sono poco illuminate e che un pixel con luminanza Y = 0.8 dovrebbe essere effettivamente regolato al grigio al 90%, cioè che a quel pixel dovrebbe essere assegnata la luminanza 0.9. La mia domanda è come ridimensionare gli altri pixel nelle vicinanze? Sono abbastanza sicuro che moltiplicare tutte le luminanze per 9/8 è sbagliato, perché mi ricordo vagamente di aver sentito che per ottenere dall'aspetto uniforme, il ridimensionamento deve essere non lineare. Ma ho difficoltà a trovare un'equazione che mi consenta di fare progressi. (. Naturalmente sto in realtà scrivendo un programma per fare questa regolazione ad un gran numero di fotografie)Come ridimensionare i pixel in un'immagine per regolare la luminosità?

La fonte dei miei pixel è la pbmplus formato PGM, di cui la pagina man dice:

Ogni grigio valore è un numero proporzionale all'intensità del pixel , regolato dal CIE Rec. 709 funzione di trasferimento gamma. (La funzione di trasferimento specifica un numero gamma di 2.2 e ha una sezione lineare per intensità ridotte). Un valore pari a zero è quindi nero. Un valore di Maxval rappresenta il bianco CIE D65 e il valore più intenso nell'immagine e qualsiasi altra immagine a cui è possibile confrontare l'immagine.

Se avessi capito meglio avrei probabilmente un'idea migliore su come procedere.

Ho trovato una domanda correlata su making an image of uniform brightness.


Grazie Shmoopty per avermi messo in pista. Ho accettato la tua risposta e ho aggiunto alcune informazioni.

+1

Si sta tentando in genere di aumentare il contrasto di un'immagine in scala di grigi? – Andres

+0

No, in realtà, ho un'immagine per la quale credo che l'oggetto fotografato fosse di una luminosità approssimativamente uniforme (luminanza/albedo), ma la fotografia è stata scattata in condizioni di illuminazione non uniforme. Sto cercando di correggere la scarsa illuminazione e produrre un'immagine che sia rappresentativa di ciò che l'oggetto originale fotografato avrebbe dovuto essere. –

risposta

6

Probabilmente si desidera gamma correction, che manterrà vero nero e bianco vero corretto, mentre si piegano i valori in mezzo.

La formula per la regolazione gamma, quando l'ingresso è nell'intervallo (0.0, 1.0) è:

output = pow(input, gamma) 

... dove gamma schiarire quando meno di 1,0 e scurire quando sopra 1.0.

Per spingere 0,8 fino a 0,9, calcolare log(0.9)/log(0.8) per ottenere una gamma di 0.4722.

Si noti che questa è una delle molte formule - ed è matematicamente la più semplice che conserverà il bianco e nero come colori unici (che alcuni considererebbero importanti) - tuttavia non esiste una singola formula corretta per darti cos'è "vero".


Addendum: ho verificato che la correzione gamma può essere applicato ai valori che sono già gamma-codificati. E 'difficile annotare la matematica a mark-down, ma la legge chiave algebrica è

(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a 

Se si applica questa legge, è possibile determinare che le correzioni gamma pendolari, quindi è OK, per applicare la correzione della gamma di già corretto i valori .— NR

+0

Scegliere quale valore per gamma? E importa che i pixel che ho sono già codificati con gamma? –

Problemi correlati