matlab snr mse,MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM...
今天的作業(yè)是求兩幅圖像的MSE、SNR、PSNR、SSIM.代碼如下:
clc;
close all;
X = imread('q1.tif');% 讀取圖像
Y=imread('q2.tif');
figure;% 展示圖像
subplot(1, 3, 1); imshow(X); title('q1');
subplot(1, 3, 2); imshow(Y); title('q2');
% 使得圖像每個(gè)像素值為浮點(diǎn)型
X = double(X);
Y = double(Y);
A = Y-X;
B = X.*Y;
subplot(1,3,3);imshow(A);title('作差');
MSE = sum(A(:).*A(:))/numel(Y);% 均方根誤差MSE,numel()函數(shù)返回矩陣元素個(gè)數(shù)
SNR = 10*log10(sum(X(:).*X(:))/MSE/numel(Y));%信噪比SNR
PSNR = 10*log10(255^2/MSE);% 峰值信噪比PSNR
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%以下為結(jié)構(gòu)相似度SSIM
ux=sum(X(:).*X(:))/numel(X);
uy=sum(Y(:).*Y(:))/numel(Y);
sigmoidx=sum(X(:).*X(:)-ux)/numel(X);
sigmoidy=sum(Y(:).*Y(:)-uy)/numel(Y);
sigmoidxy=sum(B(:).*B(:))/(numel(B)*ux*uy)-ux*uy;
SSIM=(2*ux*uy)*(2*sigmoidxy)/(ux*ux+uy*uy)/(sigmoidx*sigmoidx+sigmoidy*sigmoidy);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display(MSE);%均方根誤差MSE
display(SNR);%信噪比SNR
display(PSNR);%峰值信噪比PSNR
display(SSIM);%結(jié)構(gòu)相似性SSIM
接下來,讓我們看一下代碼的輸出。
MSE =153.6263
SNR =19.7617
PSNR =26.2661
SSIM =-1.5281e+26
根據(jù)觀察,兩幅圖像可能來自于連拍,圖片中的內(nèi)容幾乎完全一致。僅僅是對(duì)應(yīng)的像素點(diǎn)產(chǎn)生了偏移。上圖圖三反應(yīng)的是兩幅圖像作差以后的結(jié)果。根據(jù)均方根誤差MSE,我們發(fā)現(xiàn)從數(shù)據(jù)上兩幅圖存在有巨大差異。這顯然不符合我們的觀察。作為圖像質(zhì)量評(píng)價(jià)指標(biāo),客觀評(píng)價(jià)MSE與人眼的主觀判斷產(chǎn)生出入,這說明MSE并不是一個(gè)合適的指標(biāo)。原因是:MSE指標(biāo)的核心在于兩幅圖像相應(yīng)像素點(diǎn)之間差值的平方和。這直接導(dǎo)致了該指標(biāo)對(duì)于圖像的空間分布沒有“全局”認(rèn)識(shí),而只是局限于單純的像素“個(gè)體”。
而SNR和PSNR,在本例中取得了較好的效果。不過,個(gè)人認(rèn)為在高熵圖像中容易失效,在具有足夠多中心點(diǎn)的著色過的Vornoi圖和其平移圖像中,SNR和PSNR將會(huì)難有成效。
對(duì)于SSIM,SSIM綜合考慮了兩幅圖像的均值、方差,以及他們的協(xié)方差,從而在本例中取得了非常好的效果。
2019-03-04
23:14:07
總結(jié)
以上是生活随笔為你收集整理的matlab snr mse,MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv-自定义色带产生类似jet的
- 下一篇: 已知协方差矩阵求相关矩阵matlab,已