web-dev-qa-db-fra.com

Convertir RVB en sRGB?

J'essaie de convertir un RVB en l'espace colorimétrique perceptuellement uniforme, CIELAB. Wikipédia déclare:

"Les valeurs RVB ou CMJN doivent d'abord être transformées en un espace colorimétrique absolu spécifique, tel que sRVB ou Adobe RVB. Cet ajustement dépendra de l'appareil, mais les données résultantes de la transformation seront indépendantes de l'appareil, permettant aux données d'être transformées dans l'espace colorimétrique CIE 1931, puis transformé en L * a * b *. "

Je sais qu'il y a des transformations simples une fois la conversion en sRGB, mais je n'ai trouvé aucun matériel pour passer du RVB au sRGB. Alors, quelles méthodes existent pour effectuer une telle conversion?

11
user1058860

Non, vous ne devez pas passer du RVB (linéaire) au sRVB. En fait, c'est l'inverse. Voici les étapes:

  1. Convertissez sRGB en RVB linéaire. L'image sRGB est un codage gamma, ce qui signifie qu'un appareil photo applique la fonction gamma pow (x, 1/2.2) au signal lumineux. Ce sRGB est dans un espace gamma non linéaire.

  2. Maintenant, la conversion du RVB linéaire en LAB implique deux étapes: la première consiste à convertir le RVB linéaire en espace colorimétrique XYZ (il s'agit d'un espace colorimétrique de base). Cette conversion est une opération linéaire, c'est-à-dire une multiplication matricielle. C'est la raison pour laquelle vous auriez besoin de valeurs RVB linéaires et non sRGB. Il doit être dans un espace linéaire. Enfin, les valeurs XYZ sont converties en valeurs LAB via une opération non linéaire qui contient des formules standard (dont vous n'avez pas besoin de vous inquiéter).

Liens intéressants:

(i) Comprendre l'espace sRGB et RVB linéaire: http://filmicgames.com/archives/299 ; http://www.cambridgeincolour.com/tutorials/gamma-correction.htm

(ii) Tutoriel MATLAB: https://de.mathworks.com/help/vision/ref/colorspaceconversion.html

(iii) Python: http://pydoc.net/Python/pwkit/0.2.1/pwkit.colormaps/

(iv) Code C: http://svn.int64.org/viewvc/int64/colors/color.c?view=markup

(v) OpenCV ne fait pas cette conversion sRGB en RVB linéaire mais il fait la conversion à l'intérieur du code color.cpp (OpenCV_DIR\modules\imgproc\src\color.cpp) . Découvrez la méthode appelée initLabTabs () , il y a un encodage et un décodage gamma. API de conversion des couleurs OpenCV: http://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html

8
Sanchit