Halcom 发表于 2017-2-4 22:07:03

XYZ与RGB颜色空间相互转换

XYZ —> RGB
var_X = X / 100      //X from 0 to95.047      (Observer = 2°, Illuminant = D65)
var_Y = Y / 100      //Y from 0 to 100.000
var_Z = Z / 100      //Z from 0 to 108.883

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

R = var_R * 255
G = var_G * 255
B = var_B * 255 RGB —> XYZ
var_R = ( R / 255 )      //R from 0 to 255
var_G = ( G / 255 )      //G from 0 to 255
var_B = ( B / 255 )      //B from 0 to 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

//Observer. = 2°, Illuminant = D65
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














页: [1]
查看完整版本: XYZ与RGB颜色空间相互转换