matlab-批处理图像质量变化并形成折线图 (PSNR)

时间:2024-09-30 12:22:34

%修改路径就能用,图片分辨率要一致

%clc;clear all;close all;tic;%清理内存

file_path='E:\test\resources\image\';% 批量图像所在的文件夹下
file_save_path='E:\test\resources\SaveImage\';% 要存储的地址
img_path_list=dir(strcat(file_path,'*.jpg'));% 获取批量bmp格式图像所在的路径
img_num=length(img_path_list);
PSNR1 = [];
for i=1:img_num
    img=imread(strcat(file_path,img_path_list(i).name));% 读取

    % TODO: 图像处理相关代码

    %对图像添加不同方差的高斯噪声噪声,对噪声图像进行保存
    dima=double(img);
    mean=0;sigma=0.01;
    rima=imnoise(dima,'gaussian',mean,sigma^2);

    %对噪声图像进行非局部均值滤波,用psnr衡量去噪效果,保存数据到I1_psnr.mat文件
    imgDenoise=imnlmfilt(img);
    PSNR=psnr(img,imgDenoise);
    PSNR1(i) = PSNR;
    fprintf('PSNR值为: %.2f dB\n', PSNR);

    imwrite(rima,strcat(file_save_path,img_path_list(i).name),"bmp");% 存储
end
save('I1_psnr.mat','PSNR1');
save('E:\test\resources\I1_psnr.mat','PSNR1');

%数组绘制成折线图
plot(PSNR1);
title('图像多级处理后图像质量变化对比折线图');
xlabel('处理级数');
ylabel('值');