Simple tips to calculate the Structural Similarity Index (SSIM) between two images with Python

Check this out article various other language

The Structural Similarity Index (SSIM) is just a perceptual metric that quantifies the image quality degradation this is certainly due to processing such as for example data compression or by losings in information transmission. This metric is simply the full reference that will require 2 pictures through the exact exact same shot, what this means is 2 graphically identical pictures to your eye that is human. The 2nd image generally speaking is compressed or has a unique quality, that is the aim of this index. SSIM is generally found in the video clip industry, but has too a strong application in photography. SIM really steps the perceptual distinction between two similar pictures. It cannot judge which of this two is way better: that really must be inferred from once you understand which will be the original one and which was exposed to additional processing such as compression or filters.

In this essay, we will explain to you how exactly to calculate accurately this index between 2 pictures making use of Python.


To check out this guide you shall require:

With that said, allow's get going !

1. Install Python dependencies

Before implementing the logic, you need to install some tools that are essential will likely be utilized by the logic. This tools may be set up through PIP because of the command that is following

These tools are:

This guide shall work with any platform where Python works (Ubuntu/Windows/Mac).

2. Write script

The logic to compare the pictures would be the after one. Utilizing the compare_ssim way of the measure module of Skimage. This technique computes the mean similarity that is structural between two pictures. It gets as arguments:

X, Y: ndarray

Pictures of Any dimensionality.

win_size: none or int

The side-length associated with the sliding screen found in comparison. Should be an odd value. If gaussian_weights does work, this will be ignored as well as the screen size will be determined by sigma.

gradientbool, optional

If real, additionally get back the gradient with regards to Y.

data_rangefloat, optional

The info number of the input image (distance between minimal and maximum feasible values). By default, this really is projected through the image data-type.

multichannelbool, optional

If real, treat the final measurement regarding the array as networks. Similarity calculations are done separately for every single channel then averaged.

gaussian_weightsbool, optional

If real, each spot has its mean and variance spatially weighted with A gaussian kernel that is normalized of sigma=1.5.

fullbool, optional

If real, also get back the total similarity image that is structural.


The mean similarity that is structural the image.


The gradient associated with the structural similarity index between X and Y [2]. This can be just returned if gradient is placed to real.


The SSIM that is full image. This can be just came back if complete is defined to real.

As first, we're going to browse the pictures with CV through the provided arguments so we'll use a black colored and filter that is whitegrayscale) so we'll apply the mentioned logic to those pictures. Create the script that is following best essay writing service forum and paste the logic that is following the file:

This script is dependant on the code posted by @mostafaGwely with this repository at Github. The code follows precisely the exact same logic declared from the repository, nonetheless it eliminates a mistake of printing the Thresh of the pictures. The production of operating the script with all the pictures using the following command:

Will create the following production (the demand within the image makes use of the brief argument description -f as --first and -s as --second ):

The algorithm will namely print a string "SSIM: $value", you could change it out while you want. In the event that you compare 2 precise pictures, the worth of SSIM must certanly be demonstrably 1.0.