matlab颜色空间转换RGB转换到lab
function Image = rgb2lab(Image)
if size(Image,3) ~= 3
error('im 一定要为3通道颜色图像空间');
end
if ~isa(Image,'double')
Image = double(Image)/255;
end
R = invgammacorrection(Image(:,:,1));
G = invgammacorrection(Image(:,:,2));
B = invgammacorrection(Image(:,:,3));
T = inv([3.2406,-1.5372,-0.4986;-0.9689,1.8758,0.0415;0.0557,-0.2040,1.057])
Image(:,:,1) = T(1) * R + T(4) * G + T(7) * B %X
Image(:,:,2) = T(2) * R + T(5) * G + T(8) * B %Y
Image(:,:,3) = T(3) * R + T(6) * G + T(9) * B %Z
WhitePoint = [0.950456,1,1.088754];
X = Image(:,:,1)/WhitePoint(1);
Y = Image(:,:,2)/WhitePoint(2);
Z = Image(:,:,3)/WhitePoint(3);
fX = f(X);
fY = f(Y);
fZ = f(Z);
Image(:,:,1) = 116 * fY - 16;%L
Image(:,:,2) = 500 * (fX - fY);
Image(:,:,3) = 200 * (fY - fZ);
end
function R = invgammacorrection(Rp)
R = zeros(size(Rp));
i = (Rp <= 0.0404482362771076);
R(i) = Rp(i)/12.92;
R(~i) = real(((Rp(~i) + 0.055)/1.055).^2.4);
end
function fY = f(Y)
fY = real(Y.^(1/3));
i = (Y < 0.008856);
fY(i) = Y(i) * (841/108) + (4/29);
end
function Y = invf(fY)
fY = Fy.^3;
i = (Y < 0.008856);
Y(i) = (fY(i) - 4/29) * (108/841);
end
阅读更多
- 颜色空间转换:RGB转换为Lab(Matlab)
- MATLAB图像处理_LAB与RGB颜色空间互转
- 颜色空间转换:RGB转换为Lab(续)
- RGB与Lab颜色空间互相转换
- 使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图
- RGB转到LAB颜色空间,matlab和opencv内嵌函数使用的区别
- 不同颜色空间的图像转换(RGB到HSV,YUV,Lab)
- RGB颜色空间与Lab颜色空间区别与联系(附转换代码)
- RGB 颜色空间转 HSI 颜色空间的matlab程序实现
- 颜色空间RGB与HSV(HSL)的转换
- RGB与YCbCr颜色空间的转换
- RGB、Lab、YUV、HSI、HSV等颜色空间的区别
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- sRGB XYZ Lab颜色空间相互转换及相关计算的类
- HSV与RGB颜色空间的转换
- RGB和YCbCr颜色空间的转换及优化算法
- 颜色空间RGB与 色调、饱和度、亮度(ESL)转换的完整C语言算法
- RGB 颜色空间转 HSI 颜色空间的matlab程序实现
- 图像的RGB颜色空间和HSI空间的转换