MCPcopy
hub / github.com/Janspiry/Image-Super-Resolution-via-Iterative-Refinement / ssim

Function ssim

core/metrics.py:52–72  ·  view source on GitHub ↗
(img1, img2)

Source from the content-addressed store, hash-verified

50
51
52def ssim(img1, img2):
53 C1 = (0.01 * 255)**2
54 C2 = (0.03 * 255)**2
55
56 img1 = img1.astype(np.float64)
57 img2 = img2.astype(np.float64)
58 kernel = cv2.getGaussianKernel(11, 1.5)
59 window = np.outer(kernel, kernel.transpose())
60
61 mu1 = cv2.filter2D(img1, -1, window)[5:-5, 5:-5] # valid
62 mu2 = cv2.filter2D(img2, -1, window)[5:-5, 5:-5]
63 mu1_sq = mu1**2
64 mu2_sq = mu2**2
65 mu1_mu2 = mu1 * mu2
66 sigma1_sq = cv2.filter2D(img1**2, -1, window)[5:-5, 5:-5] - mu1_sq
67 sigma2_sq = cv2.filter2D(img2**2, -1, window)[5:-5, 5:-5] - mu2_sq
68 sigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2
69
70 ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) *
71 (sigma1_sq + sigma2_sq + C2))
72 return ssim_map.mean()
73
74
75def calculate_ssim(img1, img2):

Callers 1

calculate_ssimFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected