matlab学习

matalb 不同颜色空间转换

2019-06-21  本文已影响0人  Kerwin_H

%不同颜色空间转换

%{

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);

上一篇 下一篇

猜你喜欢

热点阅读