我正在将XYZ值转换为Cie LAB, 以下是我的代码
clc
clear all
close all
X=19.4100;
Y=28.4100;
Z=11.5766;
Xn = 94.811; % refrence white
Yn = 100;
Zn = 107.304;
if X/Xn >(6/29)^3
fx = (X/Xn)^1/3;
else
fx = (841/108)* (X/Xn) +4/29;
end
if Y/Yn >(6/29)^3
fy = (Y/Yn)^1/3;
else
fy = (841/108)* (Y/Yn) +4/29;
end
if Z/Zn >(6/29)^3
fz = (Z/Zn)^1/3;
else
fz = (841/108)* (Z/Zn) +4/29;
end
%% converting XYZ to Cielab
L = 116 * fy-16;
a = 500 *(fx-fy);
b = 200 *(fy-fz);
我一次又一次地看到它但却找不到错误,正确的答案是L = 60.2574,a = -34.0099和b = 36.2677 我使用上面的代码得到的是L = -5.0148 a = -13.2295 b = 11.7476
如果有人能找到错误,我会很高兴
答案 0 :(得分:2)
您的错误是在exponetials中!
执行^(1/3)
而非^1/3
使用最新版本,您只需将X/Xn
除以3
答案 1 :(得分:0)
如果您喜欢在MATLAB img_Lab = cat(3,L,a,b);