Python中的直方圖均勻化是一種圖像處理的方法,它可以通過對圖像的像素值進行改變,使得圖像的對比度更加明顯,細節更加清晰,色彩更加鮮艷。
直方圖均衡化是將圖像的灰度級進行拉伸,使得原先分布在灰度低區域的像素在均衡化后分布到整個灰度范圍內,從而提高對比度的技術。其基本思路就是對圖像的直方圖進行統計并進行歸一化,然后均衡化直方圖,最后進行反歸一化處理,就可以得到均衡化后的圖像。
import cv2 import numpy as np def histogram_equalization(image): # 獲取圖像的直方圖 hist, bins = np.histogram(image.flatten(), 256, [0, 256]) # 對直方圖進行歸一化處理 cdf = hist.cumsum() cdf_normalized = cdf * hist.max() / cdf.max() # 生成均衡化后的直方圖 image_equalized = np.interp(image.flatten(), bins[:-1], cdf_normalized) image_equalized = image_equalized.reshape(image.shape) # 對均衡化后的直方圖進行反歸一化處理 image_equalized = np.uint8(image_equalized / image_equalized.max() * 255) return image_equalized # 讀取圖像 image = cv2.imread("test.jpg", 0) # 均衡化直方圖 image_equalized = histogram_equalization(image) # 顯示原始圖像和均衡化后的圖像 cv2.imshow("Original Image", image) cv2.imshow("Equalized Image", image_equalized) cv2.waitKey(0)
以上是利用OpenCV庫實現Python直方圖均勻化的代碼,核心步驟就是獲取圖像的直方圖,歸一化處理,生成均衡化后的直方圖,反歸一化處理等。
直方圖均衡化是一種非常常見的圖像處理技術,它對于圖像的增強和改善具有非常明顯的效果,能夠使得圖像從視覺上更加生動和鮮明。