微信:HuangL1121
QQ号:1224848052
团队:MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做|MATLAB项目合作|FPGA项目合作|matlab代码|matlab算法源码|python代做|C代做|C++代做
地址:北京市-朝阳区-双柳北街18号院
当前位置:首页 > 技术资讯 > MATLAB代做|FPGA代做|simulink代做——图像的PSNR计算

MATLAB代做|FPGA代做|simulink代做——图像的PSNR计算

% plot PSNR comparsion Curve
% Requirement:  
clear all
clc
% Introduction for input
fps = 30;                                           % frame rate 
width = 176;                                        % Width
height = 144;                                       % Height
M = 13;                                             % Number for each sequence
init_qp =[23];                                      % The first file begin no for each sequence

ori_dir = 'D:\test_seqs\';                          % Directory for Original YUV file 
ori_suffix = '_qcif.yuv';                           % Suffix for Original YUV file name

rec_dir = 'D:\projectC\Encoder\test\test71\';       % Directory for Reconstruct YUV file 
rec_suffix = '.yuv';                                % Suffix for Reconstruct YUV file name 
FigMaker = 0;                                       % FigMaker = 1 output-subplot(2,2,);FigMaker = 0 output-Figure() 
%determine the YUV test sequence Name
YUV_name{1} = 'foreman';                            % Name for testing sequence

ext{1} = 'x264';
ext{2} = 'jm';


N = length(YUV_name);
Type = length(ext);

if (length(init_qp)~=N)
   disp('Lack of the first test sequence begin NO! ');
   stop;
end
num_cell = zeros(N,M);

for i = 1:N
    num_cell(i,:) = init_qp(i):init_qp(i)+M-1;
end

pixframeY = width*height;
pixframeUV = pixframeY/2;

Maker{1} = 'o';                                         % Circle
Maker{2} = 's';                                         % Square
Maker{3} = 'd';                                         % Diamond
Maker{4} = 'v';                                         % Downward-pointing triangle
Maker{5} = '+';                                         % Plus sign
Maker{6} = 'x';                                         % Cross
Maker{7} = '.';                                         % Point

color{1} = 'r';                                         % Red
color{2} = 'b';                                         % Blue
color{3} = 'g';                                         % Green
color{4} = 'm';                                         % Cyan
color{5} = 'k';                                         % Magenta
color{6} = 'c';                                         % Yellow
color{7} = 'y';                                         % Black

linetype{1} = '-';                                      % Solid line (default)
linetype{2} = '--';                                     % Dashed line 
linetype{3} = ':';                                      % Dotted line
linetype{4} = '-.';                                      % Dash-dot line

for jj = 1:N
    for nn = 1:Type
        bitrate_psnr = [];
        for kk = 1:M
            fi = fopen(strcat(ori_dir,YUV_name{jj},ori_suffix),'rb');
            fo = fopen(strcat(rec_dir,YUV_name{jj},int2str(num_cell(jj,kk)),ext{nn},rec_suffix),'rb');
            
            fseek(fi,0,'eof');
            fseek(fo,0,'eof');
            over_ori = ftell(fi);
            over_R = ftell(fo);
            fseek(fi,0,'bof');
            fseek(fo,0,'bof');

            len = min(over_ori,over_R);
            frames = fix(2*len/(width*height*3));
            
            f_bs = fopen(strcat(rec_dir,YUV_name{jj},int2str(num_cell(jj,kk)),'.',ext{nn}),'rb');
            fseek(f_bs,0,'eof');
            Bs_len = ftell(f_bs);
            fclose(f_bs);
            
            sum_psnr = 0;
            for ii = 1:frames
                A0 = fread(fi,pixframeY,'uchar');
                Ar = fread(fo,pixframeY,'uchar');
                psnr = 10*log10(255*255*pixframeY/(sum((A0 - Ar).^2)+1));  % psnr--caculate method coming from JM 
                fseek(fi,pixframeUV,'cof');
                fseek(fo,pixframeUV,'cof');
                sum_psnr = sum_psnr + psnr;
            end
            fclose(fi);
            fclose(fo);
            
            avg_psnr = fix(sum_psnr*100/frames+0.5)/100;
            bitrate = fix(Bs_len*fps*800/(1000*frames)+0.5)/100;
            bitrate_psnr = [bitrate_psnr;bitrate avg_psnr];
        end

        if (FigMaker == 1)
            figure(fix((jj+3)/4));hold on;subplot(2,2,mod(jj,4));plot(bitrate_psnr(:,1),bitrate_psnr(:,2),strcat('-',color{nn},Maker{nn}));
        else
           figure(jj);hold on;plot(bitrate_psnr(:,1),bitrate_psnr(:,2),strcat('-',color{nn},Maker{nn})); %r-mii b-x264 g- jm
        end
        grid on;
    end
    title( strcat('"',YUV_name{jj},'"','  Testing Sequence'));
    legend(ext);
    xlabel('Bit rate (kbps)');
    ylabel('Y PSNR (dB)');
end
        

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:


上一篇:MATLAB代做|FPGA代做|simulink代做——预去模糊算法处理

版权所有: MATLAB代做|MATLAB专业代做|python代做|matlab代写|FPGA代做|FPGA专业代做|MATLAB项目合作|FPGA项目合作|matlab代码|matlab算法源码|python代做|C代做|C++代做 Copyright © 2021 All rights reserved.
微信:HuangL1121 QQ:1224848052
地址:北京市-朝阳区-双柳北街18号院

扫一扫,关注我们