File Exchange

RGB to HSL

version 1.0.0.0 (1.58 KB) by
Convert from RGB to HSL and HSL to RGB.

Updated 31 Mar 2016

Functions to convert RGB colorspace to HSL colorspace and vice-versa.

Cite As

Suresh Joel (2021). RGB to HSL (https://www.mathworks.com/matlabcentral/fileexchange/3360-rgb-to-hsl), MATLAB Central File Exchange. Retrieved .

yun l

Baptiste

"RGB values have to be between 0 and 1"

This file look like a bit out of date now :s

Daniel

Remove the second last line in both functions to increase the precision (`rgb=round...`)

David Holdaway

without the change it returns whenever you have a 1,1,1 vector. With the change suggested it works ok. I don't like the treatment of all the same colour (e.g. [a,a,a]) though, it should interpolate the change in other colours rather than just turning it to [0,0,0]. I added the following block
if(mx-mn)==0,%if all three colors have same value,
if i==1
hsl(i,2)=0;%then s=0 and
hsl(i,1)=0;%h is undefined but for practical reasons 0
elseif i==2
hsl(i,2)=hsl(i-1,2);%take previous value
hsl(i,1)=hsl(i-1,1);%take previous value
else
hsl(i,2)=2*hsl(i-1,2)-hsl(i-2,2);%interpolate
if hsl(i,2) > 1
hsl(i,2) =1;
elseif hsl(i,2) < 0
hsl(i,2) =0;
end
hsl(i,1)=2*hsl(i-1,1)-hsl(i-2,1);%interpolate
if hsl(i,1) > 1
hsl(i,1) =1;
elseif hsl(i,1) < 0
hsl(i,1) =0;
end
end
continue;
end;

daniel weiler

BUG-REPORT!

Please replace the last return statement with continue... or there will be bad surprises

MATLAB Release Compatibility
Created with R11.1
Compatible with any release
Platform Compatibility
Windows macOS Linux