将一幅512*512的原始灰度图像,采用3*3的平均窗口对它作滤波运算(原图像外围的像素的灰度值视为128);对滤波后图像隔行、隔列丢弃一半像素形成一幅256*256的小图像;对此小图像采用邻近内插、双线性内插的方法将它放大为512*512的大图像。对照原图像,计算两种放大图形各自的psnr值
建立m文件
function im_sub=Test(im)
im=double(im);
w=fspecial('average',[3,3]);
im=imfilter(im,w,128,'same');%原图像外围的像素的灰度值视为128
im_sub=im(1:2:end,1:2:end);
end
function psnr=PSNR(im0,im1)
im0=double(im0);
im1=double(im1);
[M,N]=size(im0);
mse=sum((im0(:)-im1(:)).^2)/(M*N);
psnr=10*log10(255^2/mse);
end
建立脚本
%Test41.m
clear;clc;
filename='elaine512.tif';
im=imread(filename);
im_sub=Test(im);
im1=imresize(im_sub,2,'nearest');
im2=imresize(im_sub,2,'bilinear');
psnr1=PSNR(im,im1);
psnr2=PSNR(im,im2);
fprintf('PSNR1=%.2f dB\n',psnr1);
fprintf('PSNR2=%.2f dB\n',psnr2);
figure;
subplot(131);
imshow(im);
xlabel('Orginal Image');
subplot(132);
imshow(mat2gray(im1));
xlabel('Nearst');
subplot(133);
imshow(mat2gray(im2));
xlabel('Bilinear');
运行得出结果