TensorFlow 1 version
 | 
  
     
    View source on GitHub
  
 | 
Computes SSIM index between img1 and img2.
tf.image.ssim(
    img1, img2, max_val, filter_size=11, filter_sigma=1.5, k1=0.01, k2=0.03
)
This function is based on the standard SSIM implementation from: Wang, Z., Bovik, A. C., Sheikh, H. R., & Simoncelli, E. P. (2004). Image quality assessment: from error visibility to structural similarity. IEEE transactions on image processing.
Details:
- 11x11 Gaussian filter of width 1.5 is used.
 - k1 = 0.01, k2 = 0.03 as in the original paper.
 
The image sizes must be at least 11x11 because of the filter size.
Example:
    # Read images (of size 255 x 255) from file.
    im1 = tf.image.decode_image(tf.io.read_file('path/to/im1.png'))
    im2 = tf.image.decode_image(tf.io.read_file('path/to/im2.png'))
    tf.shape(im1)  # `img1.png` has 3 channels; shape is `(255, 255, 3)`
    tf.shape(im2)  # `img2.png` has 3 channels; shape is `(255, 255, 3)`
    # Add an outer batch for each image.
    im1 = tf.expand_dims(im1, axis=0)
    im2 = tf.expand_dims(im2, axis=0)
    # Compute SSIM over tf.uint8 Tensors.
    ssim1 = tf.image.ssim(im1, im2, max_val=255, filter_size=11,
                          filter_sigma=1.5, k1=0.01, k2=0.03)
    # Compute SSIM over tf.float32 Tensors.
    im1 = tf.image.convert_image_dtype(im1, tf.float32)
    im2 = tf.image.convert_image_dtype(im2, tf.float32)
    ssim2 = tf.image.ssim(im1, im2, max_val=1.0, filter_size=11,
                          filter_sigma=1.5, k1=0.01, k2=0.03)
    # ssim1 and ssim2 both have type tf.float32 and are almost equal.
Args | |
|---|---|
img1
 | 
First image batch. 4-D Tensor of shape [batch, height, width,
channels] with only Positive Pixel Values.
 | 
img2
 | 
Second image batch. 4-D Tensor of shape [batch, height, width,
channels] with only Positive Pixel Values.
 | 
max_val
 | 
The dynamic range of the images (i.e., the difference between the maximum the and minimum allowed values). | 
filter_size
 | 
Default value 11 (size of gaussian filter). | 
filter_sigma
 | 
Default value 1.5 (width of gaussian filter). | 
k1
 | 
Default value 0.01 | 
k2
 | 
Default value 0.03 (SSIM is less sensitivity to K2 for lower values, so it would be better if we took the values in the range of 0 < K2 < 0.4). | 
Returns | |
|---|---|
| A tensor containing an SSIM value for each image in batch. Returned SSIM values are in range (-1, 1], when pixel values are non-negative. Returns a tensor with shape: broadcast(img1.shape[:-3], img2.shape[:-3]). | 
  TensorFlow 1 version
    View source on GitHub