MCPcopy Create free account
hub / github.com/RylonW/DocNLC / ssim

Function ssim

utils/util.py:247–267  ·  view source on GitHub ↗
(img1, img2)

Source from the content-addressed store, hash-verified

245
246
247def ssim(img1, img2):
248 C1 = (0.01 * 255)**2
249 C2 = (0.03 * 255)**2
250
251 img1 = img1.astype(np.float64)
252 img2 = img2.astype(np.float64)
253 kernel = cv2.getGaussianKernel(11, 1.5)
254 window = np.outer(kernel, kernel.transpose())
255
256 mu1 = cv2.filter2D(img1, -1, window)[5:-5, 5:-5] # valid
257 mu2 = cv2.filter2D(img2, -1, window)[5:-5, 5:-5]
258 mu1_sq = mu1**2
259 mu2_sq = mu2**2
260 mu1_mu2 = mu1 * mu2
261 sigma1_sq = cv2.filter2D(img1**2, -1, window)[5:-5, 5:-5] - mu1_sq
262 sigma2_sq = cv2.filter2D(img2**2, -1, window)[5:-5, 5:-5] - mu2_sq
263 sigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2
264
265 ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) *
266 (sigma1_sq + sigma2_sq + C2))
267 return ssim_map.mean()
268
269
270def calculate_ssim(img1, img2):

Callers 1

calculate_ssimFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected