计算图像的自信息和信息熵用python编写,可视化显示原图,灰度级频数、自信息和信息熵
时间: 2023-12-14 11:38:18 浏览: 140
可以使用Python中的PIL库来读取和显示图像,使用numpy库来处理图像数据,使用matplotlib库来进行可视化显示,使用math库来进行自信息和信息熵的计算。
以下是一个示例代码:
```python
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import math
# 读取图像
img_path = "example.jpg"
img = Image.open(img_path)
img.show()
# 转换为灰度图像
gray_img = img.convert('L')
gray_img.show()
# 转换为numpy数组
gray_img_data = np.array(gray_img)
# 计算灰度级频数
gray_levels, gray_counts = np.unique(gray_img_data, return_counts=True)
# 可视化灰度级频数
plt.bar(gray_levels, gray_counts)
plt.title("Gray level histogram")
plt.show()
# 计算自信息
total_pixels = gray_img_data.shape[0] * gray_img_data.shape[1]
gray_probabilities = gray_counts / total_pixels
gray_information = -np.log2(gray_probabilities)
# 可视化自信息
plt.bar(gray_levels, gray_information)
plt.title("Gray level self-information")
plt.show()
# 计算信息熵
gray_entropy = np.sum(gray_probabilities * gray_information)
# 显示信息熵
print("Gray level entropy:", gray_entropy)
```
其中,`example.jpg`是待处理的图像文件名。运行后,会依次显示原图、灰度图像、灰度级频数直方图、灰度级自信息直方图,并在控制台输出灰度级信息熵。
阅读全文