python计算图片的信源熵值(信息熵)

python计算图片的信源熵值(信息熵)_第1张图片python计算图片的信源熵值(信息熵)_第2张图片

 python计算图片的信源熵值(信息熵)_第3张图片

 附录:

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

 

你可能感兴趣的:(python,机器学习,开发语言)