⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 double_ycrcb2rgb.m

📁 VHDL代码
💻 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 + -