附录:
from PIL import Image
from matplotlib import pyplot as plt
import numpy as np
import scipy as cp
import math
image = Image.open(r'C:\Users\Administrator\Desktop\IMG.jpg') # 读入和显示图像
images=np.asarray(image)
plt.subplot(211)
plt.imshow(images)
plt.subplot(212)
images1=images.max(axis=2)
plt.imshow(images1,cmap='gray')
row,col=images1.shape[0],images1.shape[1] # 求图像的规格
images1_size=row*col # 图像像素点的总个数
H1=0
n=np.array([0 for i in range(256)]) # 产生一个 256 维数组p=[]
for a in images1:
for b in a:
img_level=b # 获取图像的灰度级
n[img_level]+=1 # 统计每个灰度级像素的点数
for k in range(256): # 循环
v=n[k]/images1_size # 计算每一个像素点的概率
p.append(v) # 为什么对数组赋值赋值不了
if v!=0: # 如果像素点的概率不为零
H1 += -v*math.log2(v) # 求熵值的公式
print('信源熵值:{}'.format(H1)) # 显示熵值
引用:信息熵的计算与分析.matlab