关于RGB与HSL空间之间转换的原理,在网上很多,也很详细,这里就不做介绍了。
直接给出MATLAB代码。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RGB空间转换到HSL空间
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [H,S,L,hsl]=rgb2hsl(img)
rgb=im2double(img);
r=rgb(:,:,1);
g=rgb(:,:,2);
b=rgb(:,:,3);
[m,n]=size(r);
%% 求 L %%
maxcolor=max(max(r,g),b);
mincolor=min(min(r,g),b);
L=(maxcolor+mincolor)/2;
H=zeros(m,n);
S=zeros(m,n);
%% 求 S %%
for i=1:m
for j=1:n
if maxcolor(i,j)==mincolor(i,j)
S(i,j)=0;
else
if L(i,j)<=0.5
S(i,j)=(maxcolor(i,j)-mincolor(i,j))/(2*L(i,j));
else
S(i,j)=(maxcolor(i,j)-mincolor(i,j))/(2-2*L(i,j));
end
end
end
end
%% 求 H %%
for i=1:m
for j=1:n
&nb