소스 뷰어
import matplotlib.pyplot as plt
import numpy as np
# 3x3 회색조 픽셀값 배열
gray_image = np.array([
[20, 20, 50],
[20, 20, 50],
[120, 120, 150]
])
# 픽셀 값을 1D로 변환
pixel_values = gray_image.flatten()
plt.figure(figsize=(8, 8))
chart_idx = 0
# 1. 회색조 이미지
plt.subplot(2, 2, chart_idx := chart_idx + 1)
plt.imshow(gray_image, cmap="gray", vmin=0, vmax=255)
plt.xticks( np.arange( gray_image.shape[0] ) )
plt.yticks( np.arange( gray_image.shape[0] ) )
for i in range(gray_image.shape[0]):
for j in range(gray_image.shape[1]):
plt.text(j, i, gray_image[i, j], fontsize=16, ha='center', va='center', color='red')
pass
pass
#plt.colorbar(label="Pixel Intensity")
plt.title("Data")
# 2. 기본 히스토그램
plt.subplot(2, 2, chart_idx := chart_idx + 1)
plt.hist(pixel_values, bins=5, color='gray', edgecolor='black', alpha=0.7, align='mid')
plt.title("Histogram")
plt.xlabel("Pixel Intensity")
plt.ylabel("Frequency")
plt.grid(axis='y', linestyle='--', alpha=0.7)
# 3. 누적 히스토그램
plt.subplot(2, 2, chart_idx := chart_idx + 1)
plt.hist(pixel_values, bins=5, cumulative=True, color='blue', edgecolor='black', alpha=0.7, align='mid')
plt.title("Cumulative Histogram")
plt.xlabel("Pixel Intensity")
plt.ylabel("Cumulative Frequency")
plt.grid(axis='y', linestyle='--', alpha=0.7)
# 4. 정규화 히스토그램
plt.subplot(2, 2, chart_idx := chart_idx + 1)
plt.hist(pixel_values, bins=5, density=True, color='green', edgecolor='black', alpha=0.7, align='mid')
plt.title("Normalized Histogram")
plt.xlabel("Pixel Intensity")
plt.ylabel("Probability Density")
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()