%不同颜色空间转换
%{
RGB XYZ Yxy Luv
HSV(又称HSB):(hue,saturation,value)
HSI:色调(Hue)、色饱和度(Saturation)和亮度 (Intensity)
HSL:
Lab
CMY
CMYK
%}
%RGB->HSL
RGB=[93 78 85];%0-255
R=RGB(1);G=RGB(2);B=RGB(3);
var_R = ( R / 255 );% 把RGB值转换成[0,1]中数值
var_G = ( G / 255 );
var_B = ( B / 255 );
var_Min = min(var_R,min(var_G,var_B)); %Min. value of RGB
var_Max = max(var_R,min(var_G,var_B)); %Max. value of RGB
del_Max = var_Max - var_Min ; %Delta RGB value
L = ( var_Max + var_Min )/ 2;
if ( del_Max == 0 ) %This is a gray, no chroma...
H = 0;
else %Chromatic data...
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
switch var_Max
case var_R
H = del_B - del_G;
case var_G
H = ( 1 / 3 ) + del_R - del_B;
case var_B
H = ( 2 / 3 ) + del_G - del_R;
end
end
if L < 0.5
S = del_Max / ( var_Max + var_Min );
else
S = del_Max / ( 2 - var_Max - var_Min );
end
if ( H < 0 ) H = H+1; end
if ( H > 1 ) H = H-1; end
fprintf('H=%f\nS=%f\nL=%f\n',H,S,L);
网友评论