Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将RGB图像转换为CIELUV颜色空间?_Java_Rgb_Cieluv - Fatal编程技术网

Java 如何将RGB图像转换为CIELUV颜色空间?

Java 如何将RGB图像转换为CIELUV颜色空间?,java,rgb,cieluv,Java,Rgb,Cieluv,如何将RGB图像转换为CIELUV颜色空间?是否存在解决此问题的库?由此,您可以想象如下情况: //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 )

如何将RGB图像转换为CIELUV颜色空间?是否存在解决此问题的库?

由此,您可以想象如下情况:

//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
要到达XYZ空间,然后从XYZ转到CIELUV:

//Reference-X, Y and Z refer to specific illuminants and observers.
//Common reference values are available below in this same page.

var_U = ( 4 * X ) / ( X + ( 15 * Y ) + ( 3 * Z ) )
var_V = ( 9 * Y ) / ( X + ( 15 * Y ) + ( 3 * Z ) )

var_Y = Y / 100
if ( var_Y > 0.008856 ) var_Y = var_Y ^ ( 1/3 )
else                    var_Y = ( 7.787 * var_Y ) + ( 16 / 116 )

ref_U = ( 4 * Reference-X ) / ( Reference-X + ( 15 * Reference-Y ) + ( 3 * Reference-Z ) )
ref_V = ( 9 * Reference-Y ) / ( Reference-X + ( 15 * Reference-Y ) + ( 3 * Reference-Z ) )

CIE-L* = ( 116 * var_Y ) - 16
CIE-u* = 13 * CIE-L* * ( var_U - ref_U )
CIE-v* = 13 * CIE-L* * ( var_V - ref_V )

再次复制,请查看。

您可以尝试从p.S.数字图像处理中使用Java Wilhelm Burger,Mark J.Burge ISBN 978-1-4471-6684-9介绍算法。如果我想将sRGB图像转换为CIELUV,我需要将参考-X、Y、Z值作为D65/2°?