Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Compute peak signal-to-noise ratio (PSNR) between images

Statistics

`visionstatistics`

The PSNR block computes the peak signal-to-noise ratio, in decibels, between two images. This ratio is often used as a quality measurement between the original and a compressed image. The higher the PSNR, the better the quality of the compressed, or reconstructed image.

The *Mean Square Error (MSE)* and the *Peak
Signal to Noise Ratio (PSNR)* are the two error metrics
used to compare image compression quality. The MSE represents the
cumulative squared error between the compressed and the original image,
whereas PSNR represents a measure of the peak error. The lower the
value of MSE, the lower the error.

To compute the PSNR, the block first calculates the mean-squared error using the following equation:

$$MSE=\frac{{\displaystyle \sum _{M,N}{[{I}_{1}(m,n)-{I}_{2}(m,n)]}^{2}}}{M*N}$$

In the previous equation, *M* and *N* are
the number of rows and columns in the input images, respectively.
Then the block computes the PSNR using the following equation:

$$PSNR=10{\mathrm{log}}_{10}\left(\frac{{R}^{2}}{MSE}\right)$$

In the previous equation, *R* is the maximum
fluctuation in the input image data type. For example, if the input
image has a double-precision floating-point data type, then *R* is
1. If it has an 8-bit unsigned integer data type, *R* is
255, etc.

Different approaches exist for computing the PSNR of a color image. Because the human eye is most sensitive to luma information, compute the PSNR for color images by converting the image to a color space that separates the intensity (luma) channel, such as YCbCr. The Y (luma), in YCbCr represents a weighted average of R, G, and B. G is given the most weight, again because the human eye perceives it most easily. With this consideration, compute the PSNR only on the luma channel.

Port | Output | Supported Data Types | Complex Values Supported |
---|---|---|---|

I1 | Scalar, vector, or matrix of intensity values | Double-precision floating point Single-precision floating point Fixed point 8-, 16-, and 32-bit signed integer 8-, 16-, and 32-bit unsigned integer
| No |

I2 | Scalar, vector, or matrix of intensity values | Same as I1 port | No |

Output | Scalar value that represents the PSNR | Double-precision floating point
For fixed-point or integer input, the block output is double-precision floating point. Otherwise, the block input and output are the same data type. | No |