交叉熵表达式:
交叉熵表达的是两幅图像信息的差异度,一般是大于0的数
#统计图像像素值
def possible(img):
tmp = [];k = 0
for i in range(256):
tmp.append(0)
for i in range(len(img)):
for j in range(len(img[i])):
val = img[i][j]
tmp[val] = float(tmp[val] + 1)
k = float(k + 1)
for i in range(len(tmp)):
tmp[i] = float(tmp[i] / k)
return tmp
#计算交叉熵
import math
def cross_entropy(img1,img2):
res = 0
tmp1 = possible(img1)
tmp2 = possible(img2)
for i in range(len(tmp1)):
if(tmp1[i] == 0 or tmp2[i] == 0):
res = res
else:
res = float( res + tmp1[i] * (math.log(tmp1[i]/tmp2[i]) + tmp2[i] * (math.log(tmp2[i]/tmp1[i]))))
return res