原理
实现
clc;clear;close all;
%读入图像
% [name,path]=uigetfile({'*.*','请选择原图像'},'请打开原图像');
% file1=strcat(path,name);
% [name,path]=uigetfile({'*.*','请选择融合图像F'},'请打开融合图像F');
% file2=strcat(path,name);
% A=imread(file1);
% F=imread(file2);
A=imread('matlab_WienerFiltering.jpg');
F=imread('Mine_WienerFiltering.jpg');
%如果图象是3维的话就转为灰度图像
if size(A,3)==3
A=rgb2gray(A);
end
if size(F,3)==3
F=rgb2gray(F);
end
[height width]=size(A);
A = im2double(A);
F = im2double(F);
%MSE
sigma1=0;
for i=1:height
for j=1:width
sigma1=sigma1+(A(i,j)-F(i,j))^2;
end
end
MSE=(sigma1/(height*width))
%NMSE
sigma2=0;
for i=1:height
for j=1:width
sigma2=sigma2+(A(i,j))^2;
end
end
NMSE=(sigma1/sigma2)
%SNR
SNR=-10*log10(MSE)
%PSNR
PSNR1=-10*log10(NMSE)%zxy师兄的
PSNR11=10*log10(max(max(A))^2/MSE)%CSDN的(图像相关)
PSNR2=10*log10((255^2)/MSE)%百度百科的(信号相关)