文章出處

BDPSNR的運算多是通過Joel Jung所設計的excel的 宏函數來計算的, 不過Joel Jung并沒有提供源代碼, 而且有時候excel在使用上并不方便, Serge 用matlab實現了BDPSNR的計算,會比使用excel方便,  下面是源碼:

function avg_diff = bjontegaard2(R1,PSNR1,R2,PSNR2,mode)%bjontegaard2    Bjontegaard metric calculation%   Bjontegaard's metric allows to compute the average gain in PSNR or the%   average per cent saving in bitrate between two rate-distortion%   curves [1]. %   Differently from the avsnr software package or VCEG Excel [2] plugin this%   tool enables Bjontegaard's metric computation also with more than 4 RD%   points.%   Fixed integration interval in version 2.%%   R1,PSNR1 - RD points for curve 1%   R2,PSNR2 - RD points for curve 2%   mode - %       'dsnr' - average PSNR difference%       'rate' - percentage of bitrate saving between data set 1 and%                data set 2%%   avg_diff - the calculated Bjontegaard metric ('dsnr' or 'rate')%   %   (c) 2010 Giuseppe Valenzise%%% Bugfix 20130515%   Original script contained error in calculation of integration interval.%   It was fixed according to description and figure 3 in original%   publication [1]. Script was verifyed using data presented in [3].%   Fixed lines labeled as "(fixed 20130515)"%%   (c) 2013 Serge Matyunin %%%%   References:%%   [1] G. Bjontegaard, Calculation of average PSNR differences between%       RD-curves (VCEG-M33)%   [2] S. Pateux, J. Jung, An excel add-in for computing Bjontegaard metric and%       its evolution%   [3] VCEG-M34. http://wftp3.itu.int/av-arch/video-site/0104_Aus/VCEG-M34.xls%% convert rates in logarithmic unitslR1 = log(R1);lR2 = log(R2);switch lower(mode)    case 'dsnr'        % PSNR method        p1 = polyfit(lR1,PSNR1,3);        p2 = polyfit(lR2,PSNR2,3);        % integration interval (fixed 20130515)        min_int = max([ min(lR1); min(lR2) ]);        max_int = min([ max(lR1); max(lR2) ]);        % find integral        p_int1 = polyint(p1);        p_int2 = polyint(p2);        int1 = polyval(p_int1, max_int) - polyval(p_int1, min_int);        int2 = polyval(p_int2, max_int) - polyval(p_int2, min_int);        % find avg diff        avg_diff = (int2-int1)/(max_int-min_int);    case 'rate'        % rate method        p1 = polyfit(PSNR1,lR1,3);        p2 = polyfit(PSNR2,lR2,3);        % integration interval (fixed 20130515)        min_int = max([ min(PSNR1); min(PSNR2) ]);        max_int = min([ max(PSNR1); max(PSNR2) ]);        % find integral        p_int1 = polyint(p1);        p_int2 = polyint(p2);        int1 = polyval(p_int1, max_int) - polyval(p_int1, min_int);        int2 = polyval(p_int2, max_int) - polyval(p_int2, min_int);        % find avg diff        avg_exp_diff = (int2-int1)/(max_int-min_int);        avg_diff = (exp(avg_exp_diff)-1)*100;end

看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170110/84766.html

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()