matlab中的函数xyz2uvl.m。它的实现似乎很奇怪

时间:2015-09-20 05:41:25

标签: matlab

维基百科显示从XYZ到Luv的转换方程如下 enter image description here 但是,matlab中的实现是不同的。我不知道它是如何有意义的。我有什么想念吗?

下面的代码是matlab中xyz2uvl的实现。

black = 1.0e-16 .* [0.167115861476741, 0.173300464636333, 0.142953358039464];    
singularRows = find(sum(xyz,2) == 0);
if (~isempty(singularRows))
    xyz(singularRows,:) = bsxfun(@plus, xyz(singularRows,:), black);
end

uvl = zeros(size(xyz));
uvl(:,1) = clipdivide(4 * xyz(:,1), xyz * [1; 15; 3]);
uvl(:,2) = clipdivide(6 * xyz(:,2), xyz * [1; 15; 3]);
uvl(:,3) = xyz(:,2);

function C = clipdivide(A, B)    
    B(B < eps) = eps;
    C = A ./ B;
end

0 个答案:

没有答案