0001 function y = hsv2hsl(x)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 if nargin < 1,
0020 error('Incorrect number of parameters (type ''help <a href="matlab:help hsv2hsl">hsv2hsl</a>'' for details).');
0021 end
0022 if ~isdmatrix(x) || size(x,2) ~= 3 || any(x(:)<0) || any(x(:)>1),
0023 error('Incorrect HSL matrix (type ''help <a href="matlab:help hsv2hsl">hsv2hsl</a>'' for details).');
0024 end
0025
0026
0027 h = x(:,1);
0028 s = x(:,2);
0029 v = x(:,3);
0030
0031 H = h;
0032 S = s .* v;
0033 L = (2-s).*v;
0034 in = L <= 1;
0035 S(in) = S(in) ./ L(in);
0036 S(in&v==0) = 0;
0037 S(~in) = S(~in) ./ (2-L(~in));
0038 S(~in&s==0&v==1) = 0;
0039 L = L/2;
0040
0041 y = Clip([H S L],0,1);