在 matlab 中将 XYZ 转换为 LAB,



我正在将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

如果有人能找到错误,我将很高兴

你的错误在解释中!

不要^(1/3) ^1/3

使用最新的,您只需将X/Xn除以 3

如果您想使用图像,也不要忘记在 MATLAB 中连接这些值img_Lab = cat(3,L,a,b);

最新更新