- refactored
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
% function [xyz] = cielab2xyz(lab, ref_xyz)
|
||||
%
|
||||
% // C-Code
|
||||
% var_Y = ( CIE-L* + 16 ) / 116
|
||||
% var_X = CIE-a* / 500 + var_Y
|
||||
% var_Z = var_Y - CIE-b* / 200
|
||||
%
|
||||
% if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3
|
||||
% else var_Y = ( var_Y - 16 / 116 ) / 7.787
|
||||
% if ( var_X^3 > 0.008856 ) var_X = var_X^3
|
||||
% else var_X = ( var_X - 16 / 116 ) / 7.787
|
||||
% if ( var_Z^3 > 0.008856 ) var_Z = var_Z^3
|
||||
% else var_Z = ( var_Z - 16 / 116 ) / 7.787
|
||||
%
|
||||
% X = ref_X * var_X //ref_X = 95.047 Observer= 2°, Illuminant= D65
|
||||
% Y = ref_Y * var_Y //ref_Y = 100.000
|
||||
% Z = ref_Z * var_Z //ref_Z = 108.883
|
||||
%
|
||||
% Source http://www.easyrgb.com
|
||||
|
||||
function [xyz] = cielab2xyz(lab, ref_xyz)
|
||||
|
||||
[m,n] = size(lab);
|
||||
if ((m ~= 3) & (n == 3))
|
||||
lab = lab'
|
||||
end;
|
||||
|
||||
xyz_k(2,:) = (lab(1,:) + 16)/116;
|
||||
xyz_k(1,:) = lab(2,:)/500 + xyz_k(2,:);
|
||||
xyz_k(3,:) = xyz_k(2,:) - lab(3,:)/200;
|
||||
|
||||
xyz = f1(xyz_k);
|
||||
|
||||
xyz(1,:) = xyz(1,:).*ref_xyz(1,:);
|
||||
xyz(2,:) = xyz(2,:).*ref_xyz(2,:);
|
||||
xyz(3,:) = xyz(3,:).*ref_xyz(3,:);
|
||||
|
||||
function xyz = f1(xyz_k)
|
||||
thresh_n = 0.008856;
|
||||
|
||||
[idx_m, idx_n] = find(xyz_k.^3 > thresh_n);
|
||||
xyz(idx_m,idx_n) = xyz_k(idx_m,idx_n).^3;
|
||||
|
||||
[idx_m, idx_n] = find(xyz_k.^3 <= thresh_n);
|
||||
xyz(idx_m,idx_n) = (xyz_k(idx_m,idx_n) - 16/116)/7.787;
|
||||
Reference in New Issue
Block a user