全局直方圖均衡化
直方圖均衡化通過調整圖像的直方圖來增強圖像的對比度,經常使用在醫學圖像分析中。
例如一幅8*8圖像像素值如下:
對各個像素值進行計數:
得到累計概率分布:
其中均衡化后的像素值計算公式為:
前面的標題全局直方圖均衡化,代表着直方圖在整個圖像計算,這樣會有一個缺點,圖像的部分區域會顯得過暗或者過亮。這個時候就需要使用自適應直方圖均衡化(Adaptive histogram equalization)。自適應直方圖均衡化,首先將圖像分為幾個部分,然后對每個部分分別計算直方圖進行均衡化,同時對邊緣像素進行插值處理。由圖中可以看出自適應直方圖均衡化對高亮區域的處理要比常規的直方圖均衡化好的多。
1 import os 2 from PIL import Image 3 from skimage import exposure 4 import numpy as np 5 import matplotlib.pyplot as plt 6 7 8 img = Image.open('/home/vincent/Pictures/work/Unequalized_Hawkes_Bay_NZ.jpg') 9 img = np.array(img) 10 img_eq = exposure.equalize_hist(img) 11 img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.04) 12 13 plt.figure(0) 14 plt.imshow(img) 15 plt.title('low contrast image') 16 plt.figure(1) 17 plt.imshow(img_eq) 18 plt.title('high constrast image using normal histogram equalization') 19 plt.figure(2) 20 plt.imshow(img_adapteq) 21 plt.title('high constract image using adaptive histogram euqalization') 22 plt.show()