python计算图像的自信息和信息熵,需包含下述步骤: (1) 读入一幅图像 (2) 计算图中每个灰度级的频数、频率 (3) 从频率出发计算该图像的自信息、信息熵 (4) 可视化显示原图、灰度级频数、自信息和信息熵
时间: 2024-01-21 17:20:18 浏览: 73
以下是一个简单的Python代码实现:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读入一幅图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 计算图中每个灰度级的频数、频率
hist, _ = np.histogram(img, bins=256, range=[0, 255])
freq = hist / np.sum(hist)
# 从频率出发计算该图像的自信息、信息熵
log_freq = np.log2(np.maximum(freq, 1e-10))
self_info = -log_freq
entropy = np.sum(freq * log_freq)
# 可视化显示原图、灰度级频数、自信息和信息熵
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].imshow(img, cmap='gray')
axs[0, 0].set_title('Original Image')
axs[0, 1].bar(np.arange(256), hist)
axs[0, 1].set_xlim([0, 255])
axs[0, 1].set_title('Gray Level Frequency')
axs[1, 0].bar(np.arange(256), self_info)
axs[1, 0].set_xlim([0, 255])
axs[1, 0].set_title('Self Information')
axs[1, 1].text(0.5, 0.5, f'Entropy: {entropy:.3f}', ha='center', va='center', fontsize=20)
axs[1, 1].axis('off')
axs[1, 1].set_title('Entropy')
plt.tight_layout()
plt.show()
```
这个代码会读入名为 `image.jpg` 的图片,并计算其灰度级频数、自信息、信息熵,并将其可视化显示出来。你可以根据需要替换图片名字来运行此代码。
阅读全文