269 views (last 30 days)

Image Analyst
on 3 Jul 2013

See my demo:

% Demo to calculate PSNR of a gray scale image.

% http://en.wikipedia.org/wiki/PSNR

% Clean up.

clc; % Clear the command window.

close all; % Close all figures (except those of imtool.)

clear; % Erase all existing variables. Or clearvars if you want.

workspace; % Make sure the workspace panel is showing.

format long g;

format compact;

fontSize = 20;

%------ GET DEMO IMAGES ----------------------------------------------------------

% Read in a standard MATLAB gray scale demo image.

grayImage = imread('cameraman.tif');

[rows columns] = size(grayImage);

% Display the first image.

subplot(2, 2, 1);

imshow(grayImage, []);

title('Original Gray Scale Image', 'FontSize', fontSize);

set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.

% Get a second image by adding noise to the first image.

noisyImage = imnoise(grayImage, 'gaussian', 0, 0.003);

% Display the second image.

subplot(2, 2, 2);

imshow(noisyImage, []);

title('Noisy Image', 'FontSize', fontSize);

%------ PSNR CALCULATION ----------------------------------------------------------

% Now we have our two images and we can calculate the PSNR.

% First, calculate the "square error" image.

% Make sure they're cast to floating point so that we can get negative differences.

% Otherwise two uint8's that should subtract to give a negative number

% would get clipped to zero and not be negative.

squaredErrorImage = (double(grayImage) - double(noisyImage)) .^ 2;

% Display the squared error image.

subplot(2, 2, 3);

imshow(squaredErrorImage, []);

title('Squared Error Image', 'FontSize', fontSize);

% Sum the Squared Image and divide by the number of elements

% to get the Mean Squared Error. It will be a scalar (a single number).

mse = sum(sum(squaredErrorImage)) / (rows * columns);

% Calculate PSNR (Peak Signal to Noise Ratio) from the MSE according to the formula.

PSNR = 10 * log10( 256^2 / mse);

% Alert user of the answer.

message = sprintf('The mean square error is %.2f.\nThe PSNR = %.2f', mse, PSNR);

msgbox(message);

JDC
on 2 Oct 2017

That may well be. But he's referring to the dimensions of the image, not the pixel value.

hayat ali
on 21 Feb 2019

thank yuo for your cooperation. but I have question

what are the range values that can be used in D, M,and V in both salt & pepper and gaussian

I = imread('eight.tif');

J = imnoise(I,'salt & pepper', D);

figure, imshow(I), figure, imshow(J)

J = imnoise(I,'gaussian ',M,V)

Sign in to comment.

ashkan abbasi
on 11 Apr 2014

% MSE & PSNR for a grayscale image (cameraman.tif) & its filtered

% version

clear

clc

im=imread('cameraman.tif');

im=im2double(im);

h1=1/9*ones(3,3);

imf1=imfilter(im,h1,'replicate');

h2=1/25*ones(5,5);

imf2=imfilter(im,h2,'replicate');

%

MSE1=mean(mean((im-imf1).^2));

MSE2=mean(mean((im-imf2).^2));

MaxI=1;% the maximum possible pixel value of the images.

PSNR1=10*log10((MaxI^2)/MSE1);

PSNR2=10*log10((MaxI^2)/MSE2);

Image Analyst
on 30 Dec 2018

Sign in to comment.

jensi asir
on 18 Jan 2014

iza
on 20 Jan 2015

Can anyone check mine? Is it correct?...

%Load single MRI image I = imread('IM_00042.tif');

% addition of graininess (i.e. noise) I_noise = imnoise(I, 'gaussian', 0.09);

% the average of 3^2, or 9 values(filters the multidimensional array A with the multidimensional filter h) h = ones(3,3) / 3^2; I2 = imfilter(I_noise,h);

% Measure signal-to-noise ratio img=I; img=double(img(:)); ima=max(img(:)); imi=min(img(:)); mse=std(img(:)); snr=20*log10((ima-imi)./mse)

% Measure Peak SNR [peaksnr, snr] = psnr(I_noise, I); fprintf('\n The Peak-SNR value is %0.4f', peaksnr); fprintf('\n The SNR value is %0.4f \n', snr); fprintf('\n The MSE value is %0.4f \n', mse);

%Plot original & filtered figure

subplot(1,2,1), imshow(I_noise), title('Original image')

subplot(1,2,2), imshow(I2), title('Filtered image')

text(size(I,2),size(I,1)+15, ...

'Gaussian = 0.09', ...

'FontSize',10,'HorizontalAlignment','right');

Sign in to comment.

Desmond Michael
on 10 Feb 2016

Image Analyst
on 13 Feb 2016

Image Analyst
on 27 Mar 2019

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/81048-mse-mean-square-error#comment_555870

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/81048-mse-mean-square-error#comment_555870

Sign in to comment.