Just how to calculate the Structural Similarity Index (SSIM) between two images with Python

Just how to calculate the Structural Similarity Index (SSIM) between two images with Python

Check this out article in other language

The Structural Similarity Index (SSIM) is just a perceptual metric that quantifies the image quality degradation that is due to processing such as for instance information compression or by losings in information transmission. This metric essaywriters is basically a complete 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 an alternate quality, that will be the purpose of this index. SSIM is normally utilized in the movie industry, but has aswell a strong application in photography. SIM really steps the perceptual distinction between two comparable pictures. It cannot judge which associated with the two is much better: that really must be inferred from knowing that will be the initial one and that has been subjected to extra processing such as for instance compression or filters.

In this specific article, we shall explain to you how exactly to compute this index between 2 images making use of Python.


To check out this guide you shall require:

  • Python 3
  • PIP 3

That being said, why don’t we get going !

1. Install Python dependencies

Before applying the logic, you need to install some tools that are essential will undoubtedly be utilized by the logic. This tools may be set up through PIP with all the after demand:

These tools are:

  • scikitimage: scikit-image is an accumulation algorithms for image processing.
  • opencv: OpenCV is just a library that is highly optimized consider real-time applications.
  • imutils: a few convenience functions to help make image that is basic functions such as for instance interpretation, rotation, resizing, skeletonization, showing Matplotlib pictures, sorting contours, detecting sides, and more easier with OpenCV and both Python 2.7 and Python 3.

This guide will focus on any platform where Python works (Ubuntu/Windows/Mac).

2. Write script

The logic to compare the pictures could be the after one. Utilising the compare_ssim approach to the measure module of Skimage. This technique computes the mean structural similarity index between two pictures. It gets as arguments:

X, Y: ndarray

Pictures of every dimensionality.

win_size: none or int

The side-length for the sliding window used in comparison. Must certanly be an odd value. If gaussian_weights holds true, this really is ignored and also the screen size shall rely on sigma.

gradientbool, optional

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

data_rangefloat, optional

The info array of the input image (distance between minimal and maximum feasible values). By standard, this can be believed through the image data-type.

multichannelbool, optional

If real, treat the final measurement associated with the array as networks. Similarity calculations are done individually for every channel then averaged.

gaussian_weightsbool, optional

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

fullbool, optional

If real, additionally get back the entire similarity image that is structural.


The mean similarity that is structural the image.


The gradient regarding the similarity that is structural between X and Y [2]. This really is just came back if gradient is defined to real.


The complete SSIM image. That is only came back if complete is defined to real.

As first, we are going to see the pictures with CV through the supplied arguments and now we’ll use a black colored and white filter (grayscale) so we’ll apply the mentioned logic to those pictures. Create the script that is following script.py and paste the logic that is following the file:

This script is dependant on the rule posted by @mostafaGwely with this repository at Github. The rule follows precisely the logic that is same in the repository, nonetheless it eliminates a mistake of printing the Thresh of the pictures. The production of operating the script aided by the pictures using the command that is following

Will create the following production (the demand into the image uses the quick 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. The value of SSIM should be obviously 1.0 if you compare 2 exact images.

Leave a Reply

Your email address will not be published. Required fields are marked *