📄 double_ycrcb2rgb.m
字号:
function [matlab_r, matlab_g, matlab_b] = double_ycrcb2rgb(Y,CR,CB)
% double precision YCrCb to RGB color-space conversion.
% Coefficients derived from RGB to YCrCb conversion matrix
% Inputs y, cr and cb are assumed in the 0.0 - 1.0 range
AC=612/2048; % 0.299 => Biometric constants
BC=233/2048; % 0.114
CC=0.5/(1-AC); % Scaling constants reducing the dynamic range
DC=0.5/(1-BC); % of Cb and Cr to -0.5 to 0.5 (0 to 1 with offset compensation
COFFSET = 0.5;
YOFFSET = 0;
min_val = min(min(min([Y,CR,CB])));
max_val = max(max(max([Y,CR,CB])));
range = max(2,pow2(ceil(log2(double(max_val-min_val)))))-1;
if (min_val<0) min_p2 = -pow2(ceil(log2(double(-min_val))));
else min_p2 = 0; end ;
ac = 1/CC;
bc = -AC/CC*1/(1-AC-BC);
cc = -BC/DC*1/(1-AC-BC);
dc = 1/DC;
y = double(Y -min_p2)/range; % normalizing inputs to the 0..1 range;
cr = double(CR-min_p2)/range;
cb = double(CB-min_p2)/range;
roffset = ac*COFFSET+YOFFSET;
goffset = (bc+cc)*COFFSET+YOFFSET;
boffset = dc*COFFSET+YOFFSET;
matlab_r = y+ac*cr-roffset;
matlab_g = y+bc*cr+cc*cb-goffset;
matlab_b = y+dc*cb-boffset;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -