2015-04-24 8 views
6

Mi chiedo se OpenCV ha funzioni per gestire le non-linearità nello spazio colore sRGB.OpenCV ha funzioni per gestire le non-linearità nello spazio colore sRGB?

Dire che voglio convertire un'immagine JPEG dallo spazio colore sRGB nello spazio colore XYZ. Come specificato in questo Wiki page, è necessario prima annullare le non linearità per la conversione in spazio RGB lineare e quindi moltiplicare con la matrice di trasformazione dei colori 3x3. Tuttavia, non sono riuscito a trovare alcuna discussione di questo tipo nella documentazione di cvtColor. Ho dimenticato qualcosa?

Grazie mille in anticipo!

risposta

4

Non è esplicitamente indicato nella documentazione, quindi non ti manca nulla, ma OpenCV fa non esegue la correzione gamma nelle sue conversioni di colore RGB2XYZ/BGR2XYZ. È possibile verificare questo guardando il codice sorgente per cvtColor in

<OpenCV_dir>/modules/imgproc/src/color.cpp

Se guardate la sezione RGB <-> XYZ vedrete che i valori di ingresso RGB sono semplicemente moltiplicati per la matrice dei coefficienti.

Non ho trovato alcun metodo esistente per eseguire la correzione gamma su un'immagine RGB.

È interessante notare che una conversione personalizzata di RGB -> XYZ viene eseguita come passaggio preliminare per la conversione in entrambi gli standard L*a*b* e L*u*v* e in entrambi i casi viene eseguita la correzione della gamma.

Sfortunatamente, questo non è accessibile dal codice RGB2XYZ, ma potrebbe essere possibile riutilizzarlo nel proprio codice. Ho anche visto diversi esempi di codice sul web, principalmente utilizzando tabelle di ricerca per le immagini di profondità CV_8U.

+0

Grazie mille per la risposta, @beaker! È sorprendente che OpenCV non li metta nella documentazione e abbia una conversione incoerente per 'RGB -> XYZ' e' RGB -> L * a * b * '. Ho inviato una [richiesta di funzionalità] (http://code.opencv.org/issues/4293) anche sul sito ufficiale e spero che possa essere risolta in futuro. –

+0

Hai già una risposta per questo problema? Perché sto affrontando lo stesso problema. – Sanchit

+1

@Sanchit Non è ancora presente una correzione gamma integrata per RGB2XYZ alla 3.1.0 (vedere http://docs.opencv.org/trunk/de/d25/imgproc_color_conversions.html#color_convert_rgb_xyz). Avrai il codice tuo, temo. – beaker