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 various other language

The Structural Similarity Index (SSIM) is just a perceptual metric that quantifies the image quality degradation this is certainly brought on by processing such as for example information compression or by losings in data transmission. This metric is simply a complete reference that needs 2 pictures through the exact exact exact same shot, what this means is 2 graphically identical pictures towards the eye. The 2nd image generally is compressed or has an alternate quality, which can be the purpose of this index. SSIM is normally found in the movie industry, but has too a strong application in photography. SIM really steps the perceptual distinction between two comparable images. It cannot judge which of this two is much better: that really must be inferred from knowing that is the one that is original that has been subjected to extra processing such as for example compression or filters.

In this essay, we shall explain to you simple tips to calculate accurately this index between 2 pictures utilizing Python.


To check out this guide you will require:

  • Python 3
  • PIP 3

With that said, why don’t we get going !

1. Install Python dependencies

Before applying the logic, you will have to install some essential tools that will soon be used by the logic. This tools could be installed through PIP because of the after demand:

These tools are:

  • scikitimage: scikit-image is an accumulation of algorithms for image processing.
  • opencv: OpenCV is just a very optimized collection with concentrate on real-time applications.
  • imutils: a few convenience functions to produce basic image processing functions such as for example 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 would be the after one. Utilizing the compare_ssim way of the measure module of Skimage. This process computes the mean similarity that is structural between two pictures. It gets as arguments:

X, Y: ndarray

Images of Any dimensionality.

win_size: int or None

The side-length for the sliding screen found in comparison. Should be a value that is odd. If gaussian_weights does work, this can be ignored and also the screen size shall rely on sigma.

gradientbool, optional

If real, additionally return the gradient with regards to Y.

data_rangefloat, optional

The info array of the input image (distance between minimal and maximum feasible values). By default, that is predicted through the image data-type.

multichannelbool, optional

If real, treat the https://essaywriters.us/ final measurement associated with array as networks. Similarity calculations are done individually for every single channel then averaged.

gaussian_weightsbool, optional

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

fullbool, optional

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


The mean structural similarity over the image.


The gradient for the structural similarity index between X and Y [2]. This might be just came back if gradient is defined to real.


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

As first, we’ll see the pictures with CV through the supplied arguments so we’ll use a black colored and filter that is whitegrayscale) therefore we’ll apply the mentioned logic to those pictures. Produce the following script specifically 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 exactly 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 within the picture utilizes 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 as you want. In the event that you compare 2 precise pictures, the worth of SSIM must certanly be demonstrably 1.0.

Leave a Reply

Your email address will not be published.