sRGB XYZ等不同色度空间的转换

Posted god-of-death

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sRGB XYZ等不同色度空间的转换相关的知识,希望对你有一定的参考价值。

http://www.easyrgb.com/en/math.php

 

 XYZ → Standard-RGB

//X, Y and Z input refer to a D65/2° standard illuminant.
//sR, sG and sB (standard RGB) output range = 0 ÷ 255

var_X = X / 100
var_Y = Y / 100
var_Z = Z / 100

var_R = var_X *  3.2406 + var_Y * -1.5372 + var_Z * -0.4986
var_G = var_X * -0.9689 + var_Y *  1.8758 + var_Z *  0.0415
var_B = var_X *  0.0557 + var_Y * -0.2040 + var_Z *  1.0570

if ( var_R > 0.0031308 ) var_R = 1.055 * ( var_R ^ ( 1 / 2.4 ) ) - 0.055
else                     var_R = 12.92 * var_R
if ( var_G > 0.0031308 ) var_G = 1.055 * ( var_G ^ ( 1 / 2.4 ) ) - 0.055
else                     var_G = 12.92 * var_G
if ( var_B > 0.0031308 ) var_B = 1.055 * ( var_B ^ ( 1 / 2.4 ) ) - 0.055
else                     var_B = 12.92 * var_B

sR = var_R * 255
sG = var_G * 255
sB = var_B * 255

Standard-RGB → XYZ 

 

//sR, sG and sB (Standard RGB) input range = 0 ÷ 255
//X, Y and Z output refer to a D65/2° standard illuminant.

var_R = ( sR / 255 )
var_G = ( sG / 255 )
var_B = ( sB / 255 )

if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4
else                   var_R = var_R / 12.92
if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4
else                   var_G = var_G / 12.92
if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4
else                   var_B = var_B / 12.92

var_R = var_R * 100
var_G = var_G * 100
var_B = var_B * 100

X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805
Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722
Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505

 

以上是关于sRGB XYZ等不同色度空间的转换的主要内容,如果未能解决你的问题,请参考以下文章

RGB、CMY、CMYK、YUV、HSV、HSI、LAB颜色空间详解

MATLAB教程案例21图像的初步认识,通过MATLAB对图像进行简单操作——读写缩放二值图直方图灰度图色度空间转化等

如何计算二维对数色度?

关于单反相机的RAW和photoshop编辑srgb 和adobe rgb

数学转换 sRGB 和 Adob​​eRGB

如何在 Qt 中为 SRGB 颜色空间创建 QColor 对象?