Code covered by the BSD License  

Highlights from
PSNR

3.51724

3.5 | 30 ratings Rate this file 196 Downloads (last 30 days) File Size: 2.34 KB File ID: #135

PSNR

by John T. McCarthy

 

09 Oct 1998 (Updated 04 Feb 2008)

This function displays the PSNR (peak signal-to-noise ratio) between two images.

| Watch this File

File Information
Description

This function displays the PSNR (peak signal-to-noise ratio) between two images. The answer is in decibels (dB).

PSNR is very common in image processing. A sample use is in the comparison between an original image and a coded/decoded image. Typical quoted PSNR figures are in the range +25 to +35dB.

The syntax for this file is PSNR(A,B), where A and B are MATLAB Intensity Images, with matrix-elements in the interval [0,1]

The function can be adapted for images with 256 gray levels.

Acknowledgements
This submission has inspired the following:
mmvn_toolkit
MATLAB release MATLAB 7.2 (R2006a)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (33)
28 Aug 2002 Shaikh Hussain  
15 Jan 2003 febrian taufiq  
15 Jan 2003 taufiq FEBRIAN  
24 Feb 2003 Joel Schaere

This is Ok, not perfect, but suitable for use

20 May 2003 susette dayanghirang  
11 Dec 2003 Wei Ting

3 PSNR values are shown.
Are they the PSNR of YUV or RGB?

12 Mar 2004 Din bhari

I highly Apprciate it

01 Apr 2004 VEERAMALLY RAVIKUMAR  
27 May 2004 jonathan haffarei

very simple and effective

03 Jul 2004 Michael Kleder

Nice. Well commented.

16 Jul 2004 VENKATA KARTHIK PRABALA

easy to understand and implement. good idea to can this.

17 Aug 2004 Jeny Rajan

Simple and fast

29 Aug 2004 Feng Yang

great

31 Aug 2004 bassem sheta

what if the two images are not between [0,1]

28 Dec 2004 jameer iqbal  
07 Feb 2005 sankar kumar

its nice

02 Apr 2005 ichi maeda

This PSNR is not accurate!!
Peak is always fixed at 1.

09 Nov 2005 Ramraj Pandey

good... we calculate PSNR with signals normalized.

11 May 2006 weiss Pierre

Very poor implementation. It just works for images, peak is fixed to one. Rather than max(max(A)), the author should prefer max(A(:)) which works for images in any dimension.

11 May 2006 weiss Pierre

I don't have time to do something better, but rather use that code, which may not be perfect, but which is already more general :

%function [SNR,MSE]=PSNR(u0,u)
function [SNR,MSE]=PSNR(u0,u)

[ny,nx]=size(u0);
A=max(max(u0(:)),max(u(:)));
dif=u0(:)-u(:);

MSE=mean(dif.^2);

SNR=10*log(A*A/MSE)/log(10);

30 May 2006 justin lee

good thank u

01 Mar 2007 prabhat srivastava  
20 Mar 2007 liu qiang  
05 Jun 2007 burepalli venkata srinivasarao

i want the psnr mat lab code

03 Nov 2007 Tiandi Duan  
05 Nov 2007 Luren Jia

img1 = im2double(imread('img1.bmp'));
img2 = im2double(imread('img2.bmp'));

PSNR = 10*log10(1/mean((img1(:)-img2(:)).^2));

compare mine coding with yours which one is correct?

04 Dec 2007 himanshu sharma

good

20 Jul 2008 Muhammad Naveed Ahmed

Excellent and thanks

13 Oct 2008 Aon S.  
06 Dec 2008 bigforg ‡  
18 Jul 2009 hbu 

good

03 Jun 2011 ray mand  
03 Jun 2011 ray mand  
Please login to add a comment or rating.
Updates

modifying description

30 Jan 2008

Improved some code, to prevent M-Lint messages in MATLAB's Code Metrics.

04 Feb 2008

Made provision for images with 256 gray levels.

Tag Activity for this File
Tag Applied By Date/Time
measurements John T. McCarthy 22 Oct 2008 06:32:43
image processing John T. McCarthy 22 Oct 2008 06:32:43
psnr John T. McCarthy 22 Oct 2008 06:32:43
peak John T. McCarthy 22 Oct 2008 06:32:43
ratio John T. McCarthy 22 Oct 2008 06:32:43
signal to noise ratio John T. McCarthy 24 Feb 2009 17:58:15
image processing Arif Hidayat 21 Jul 2009 23:57:11
image processing long quan 29 Mar 2010 19:13:28
psnr Tarek 08 Oct 2011 19:06:13

Contact us at files@mathworks.com