Please create an Account or Log In to gain access to our services.

To add this creation to your Favourites, please Log In to your Setare Account or Create an Account.

To inquire about this creation, please Log In to your Setare Account or Create an Account.

How exactly to calculate the Structural Similarity Index (SSIM) between two images with Python

How exactly 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 this is certainly brought on by processing such as for instance information compression or by losings in information transmission. This metric is simply 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 is compressed or has another type of quality, that is 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 pictures. It cannot judge which associated with two is way better: that must definitely be inferred from once you understand which can be the one that is original that has been subjected to extra processing such as for instance compression or filters.

In this specific article, we shall demonstrate just how to calculate accurately this index between 2 pictures utilizing Python.


To adhere to 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 will have to install some tools that are essential should be utilized by the logic. This tools could be set up through PIP aided by the command that is following

These tools are:

  • scikitimage: scikit-image is an accumulation of algorithms for image processing.
  • opencv: OpenCV is really a extremely optimized collection with give attention to real-time applications.
  • imutils: a few convenience functions which will make basic image processing functions such as for example interpretation, rotation, resizing, skeletonization, showing Matplotlib pictures, sorting contours, detecting sides, and even 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 images could be the after one. With 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

Pictures of Any dimensionality.

win_size: none or int

The side-length associated with the sliding screen found in comparison. Needs to be an odd value. If gaussian_weights holds true, this is certainly ignored plus the window size shall be determined by sigma.

gradientbool, optional

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

data_rangefloat, optional

The info variety of the input image (distance between minimal and maximum feasible values). By standard, it is projected through the image data-type.

multichannelbool, optional

If real, treat the dimension that is last of 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 by A gaussian kernel that is normalized of sigma=1.5.

fullbool, optional

If True, additionally get back the total structural similarity image.


The mean similarity that is structural the image.


The gradient regarding the similarity that is structural between X and Y [2]. That is just returned if gradient is placed to real.


The SSIM that is full image. This might be only returned if complete is defined to real.

As first, we shall read the pictures with CV from the supplied arguments therefore we’ll use a black write my papers colored and white filter (grayscale) and we also’ll apply the mentioned logic to those pictures. Produce the following script specifically and paste the logic that is following the file:

This script is dependent on the rule posted by @mostafaGwely about this repository at Github. The code follows precisely the exact same logic declared from the repository, nevertheless it eliminates a mistake of printing the Thresh of the images. 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 photo 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. 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 *