def ssim(img1, img2, cs_map=False):
"""Return the Structural Similarity Map corresponding to input images img1
and img2 (images are assumed to be uint8)
This function attempts to mimic precisely the functionality of ssim.m a
MATLAB provided by the author's of SSIM
https://ece.uwaterloo.ca/~z70wang/research/ssim/ssim_index.m
"""
# img1 = img1.astype('float32')
# img2 = img2.astype('float32')
K1 = 0.01
K2 = 0.03
L = 255
C1 = (K1 * L) ** 2
C2 = (K2 * L) ** 2
mu1 = convolve(window, img1, mode='nearest')
mu2 = convolve(window, img2, mode='nearest')
mu1_sq = mu1 * mu1
mu2_sq = mu2 * mu2
mu1_mu2 = mu1 * mu2
sigma1_sq = convolve(window, img1 * img1, mode='nearest') - mu1_sq
sigma2_sq = convolve(window, img2 * img2, mode='nearest') - mu2_sq
sigma12 = convolve(window, img1 * img2, mode='nearest') - mu1_mu2
if cs_map:
return (((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) /
((mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2)),
(2.0 * sigma12 + C2) / (sigma1_sq + sigma2_sq + C2))
else:
return (((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) /
((mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2)))
评论列表
文章目录