code: def calculate_ssim(img1, img2, border=0):
      """calculate SSIM
      the same outputs as MATLAB's
      img1, img2: [0, 255]
      """
      # img1 = img1.squeeze()
      # img2 = img2.squeeze()
      if not img1.shape == img2.shape:
          raise ValueError(
              "Input images must have the same dimensions."
          )
      h, w = img1.shape[:2]
      img1 = img1[border : h - border, border : w - border]
      img2 = img2[border : h - border, border : w - border]
  
      if img1.ndim == 2:
          return ssim(img1, img2)
      elif img1.ndim == 3:
          if img1.shape[2] == 3:
              ssims = []
              for i in range(3):
                  ssims.append(ssim(img1[:, :, i], img2[:, :, i]))
              return np.array(ssims).mean()
          elif img1.shape[2] == 1:
              return ssim(np.squeeze(img1), np.squeeze(img2))
      else:
          raise ValueError("Wrong input image dimensions.")
  
imports: import math
  import os
  import random
  from datetime import datetime
  import cv2
  import numpy
  import torch
  from torchvision.utils import make_grid
label_desc: Use image node_id 44 for calling a global function with example usage: calculate_ssim(img1, img2, border) and returns: ssim, np, ssim