圖片結構相似性及python核心代碼實現

圖片結構相似度比較公式:

 

"""X,Y是輸入的兩張圖片 """
ndim = X.ndim
# ndimage filters need floating point data
X = X.astype(np.float64)
Y = Y.astype(np.float64)
NP = win_size ** ndim
cov_norm = NP / (NP - 1)
# compute (weighted) means
ux = filter_func(X, **filter_args)
uy = filter_func(Y, **filter_args)
# compute (weighted) variances and covariances
uxx = filter_func(X * X, **filter_args)
uyy = filter_func(Y * Y, **filter_args)
uxy = filter_func(X * Y, **filter_args)
vx = cov_norm * (uxx - ux * ux)
vy = cov_norm * (uyy - uy * uy)
vxy = cov_norm * (uxy - ux * uy)

R = data_range
C1 = (K1 * R) ** 2
C2 = (K2 * R) ** 2

A1, A2, B1, B2 = ((2 * ux * uy + C1,2 * vxy + C2,ux ** 2 + uy ** 2 + C1,vx + vy + C2))


D = B1 * B2
S = (A1 * A2) / D

# to avoid edge effects will ignore filter radius strip around edges
pad = (win_size - 1) // 2

# compute (weighted) mean of ssim
mssim = crop(S, pad).mean()

源碼也可參見:https://github.com/scikit-image/scikit-image/blob/v0.15.0/skimage/measure/_structural_similarity.py 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章