Om oss
Kontakt oss
Ledige stillinger

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

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

Look at this article various other language

The Structural Similarity Index (SSIM) is really 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, this implies 2 graphically identical pictures to your eye that is human. The second image generally speaking 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 difference that is perceptual two comparable pictures. It cannot judge which regarding the two is much better: that needs to be inferred from once you understand which will be 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 follow along with this guide you shall require:

  • Python 3
  • PIP 3

That being said, allow’s get going !

1. Install Python dependencies

Before applying the logic, it is important to install some crucial tools that is going to be utilized by the logic. This tools may be set up through PIP because of the command that is following

These tools are:

  • scikitimage: scikit-image is an accumulation algorithms for image processing.
  • opencv: OpenCV is just a library that is highly optimized concentrate on real-time applications.
  • imutils: a few convenience functions to create basic image processing functions such as for example interpretation, rotation, resizing, skeletonization, displaying Matplotlib pictures, sorting contours, detecting edges, and a lot more easier with OpenCV and both Python 2.7 and Python 3.

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

2. Write script

The logic to compare the pictures could be the after one. Utilizing the compare_ssim way of the measure module of Skimage. This site: https://www.instagram.com/essaywriters.us/ technique computes the mean similarity that is structural between two pictures. It gets as arguments:

X, Y: ndarray

Pictures of every dimensionality.

win_size: none or int

The side-length of this sliding screen found in comparison. Must certanly be a value that is odd. If gaussian_weights holds true, this can be ignored as well as the screen size shall rely on 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 standard, it is predicted through the image data-type.

multichannelbool, optional

If real, treat the dimension that is last of array as stations. Similarity calculations are done individually for every single channel then averaged.

gaussian_weightsbool, optional

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

fullbool, optional

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


The mean structural similarity over the image.


The gradient associated with the similarity that is structural between X and Y [2]. This really is only came back if gradient is placed to real.


The complete SSIM image. This really is just came back if complete is placed to real.

As first, we’re going to see the images with CV through the supplied arguments and we also’ll use a black colored and white filter (grayscale) therefore we’ll apply the mentioned logic to those pictures. Produce the following script specifically script.py and paste the following logic on the file:

This script is dependent on the rule posted by @mostafaGwely with this repository at Github. The code follows precisely the same logic declared in the repository, nonetheless it eliminates a mistake of printing the Thresh of the images. The output of running 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. The value of SSIM should be obviously 1.0 if you compare 2 exact images.

Leave a Comment

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

Need Help?

I’m Here To Assist You

Something isn’t Clear?
Feel free to contact me, and I will be more than happy to answer all of your questions.