- refactored
This commit is contained in:
Executable
+47
@@ -0,0 +1,47 @@
|
||||
% function [rgb] = xyz2rgb(xyz)
|
||||
%
|
||||
% // C-Code
|
||||
% ref_X = 95.047 //Observer = 2°, Illuminant = D65
|
||||
% ref_Y = 100.000
|
||||
% ref_Z = 108.883
|
||||
%
|
||||
% var_X = X / 100 //X = From 0 to ref_X
|
||||
% var_Y = Y / 100 //Y = From 0 to ref_Y
|
||||
% var_Z = Z / 100 //Z = From 0 to ref_Y
|
||||
%
|
||||
% var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986
|
||||
% var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415
|
||||
% var_B = var_X * 0.0557 + var_Y * -0.2040 + var_Z * 1.0570
|
||||
%
|
||||
% if ( var_R > 0.0031308 ) var_R = 1.055 * ( var_R ^ ( 1 / 2.4 ) ) - 0.055
|
||||
% else var_R = 12.92 * var_R
|
||||
% if ( var_G > 0.0031308 ) var_G = 1.055 * ( var_G ^ ( 1 / 2.4 ) ) - 0.055
|
||||
% else var_G = 12.92 * var_G
|
||||
% if ( var_B > 0.0031308 ) var_B = 1.055 * ( var_B ^ ( 1 / 2.4 ) ) - 0.055
|
||||
% else var_B = 12.92 * var_B
|
||||
%
|
||||
% Source http://www.easyrgb.com
|
||||
|
||||
function [rgb] = xyz2rgb(xyz)
|
||||
[m,n] = size(xyz);
|
||||
|
||||
if ((m ~= 3) & (n == 3))
|
||||
xyz = xyz';
|
||||
end;
|
||||
|
||||
% Observer = 2°, Illuminant = D65
|
||||
t_mat = [[ 3.240479 -1.537150 -0.498535 ]
|
||||
[ -0.969256 1.875992 0.041556 ]
|
||||
[ 0.055648 -0.204043 1.057311 ]];
|
||||
|
||||
rgb_k = t_mat * xyz;
|
||||
rgb = f1(rgb_k);
|
||||
|
||||
function rgb = f1(rgb_k)
|
||||
thresh_n = 0.0031308;
|
||||
|
||||
[idx_m,idx_n] = find(rgb_k > thresh_n);
|
||||
rgb(idx_m,idx_n) = 1.055*(rgb_k(idx_m,idx_n).^(1/2.4)) - 0.055;
|
||||
|
||||
[idx_m,idx_n] = find(rgb_k <= thresh_n);
|
||||
rgb(idx_m,idx_n) = 12.92*rgb_k(idx_m,idx_n);
|
||||
Reference in New Issue
Block a user