Python+OpenCV之直方圖均衡化詳解
直方圖均衡化
直方圖均衡化(Histogram Equalization)是一種增強(qiáng)圖像對比度(Image Contrast)的方法,其主要思想是將一副圖像的直方圖分布變成近似均勻分布,從而增強(qiáng)圖像的對比度。
scenery.png原圖(下載):

import cv2 # opencv讀取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt # Matplotlib是RGB
# %matplotlib inline
def cv_show(img, name):
cv2.imshow(name, img)
cv2.waitKey()
cv2.destroyAllWindows()
img = cv2.imread('DataPreprocessing/img/scenery.png', 0) # 0表示灰度圖
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
print(hist.shape)
plt.hist(img.ravel(), 256)
plt.show()
轉(zhuǎn)為灰度圖后,整張圖片像素分布的直方圖結(jié)果:

畫出三通道的直方圖分布:
color = ('b', 'g', 'r')
for i, col in enumerate(color):
histr = cv2.calcHist([img], [i], None, [256], [0, 256])
plt.plot(histr, color=col)
plt.xlim([0, 256])

直方圖均衡化處理:
img = cv2.imread('DataPreprocessing/img/scenery.png', 0)
equ = cv2.equalizeHist(img)
plt.hist(equ.ravel(), 256)
plt.show()
# cv_show(equ, "equ")
經(jīng)過直方圖均衡化處理后的像素分布:

自適應(yīng)直方圖均衡化
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
res_clahe = clahe.apply(img)
res = np.hstack((img, equ, res_clahe))
cv2.imwrite("res_scenery.png", res)
cv_show(res, 'res')
展示所有的結(jié)果(原圖 - - - 直方圖均衡化 - - - 自適應(yīng)直方圖均衡化):

到此這篇關(guān)于Python+OpenCV之直方圖均衡化詳解的文章就介紹到這了,更多相關(guān)Python OpenCV直方圖均衡化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)對AES加密的視頻數(shù)據(jù)流解密的方法
密碼學(xué)中的高級加密標(biāo)準(zhǔn)(Advanced?Encryption?Standard,AES),又稱Rijndael加密法,這篇文章主要介紹了用python實現(xiàn)對AES加密的視頻數(shù)據(jù)流解密,需要的朋友可以參考下2023-02-02
Python通過Django實現(xiàn)用戶注冊和郵箱驗證功能代碼
這篇文章主要介紹了Python通過Django實現(xiàn)用戶注冊和郵箱驗證功能代碼,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
Python使用文件鎖實現(xiàn)進(jìn)程間同步功能【基于fcntl模塊】
這篇文章主要介紹了Python使用文件鎖實現(xiàn)進(jìn)程間同步功能,結(jié)合實例形式分析了Python基于fcntl模塊文件鎖功能實現(xiàn)進(jìn)程間同步的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Python多線程爬蟲實戰(zhàn)_爬取糗事百科段子的實例
下面小編就為大家分享一篇Python多線程爬蟲實戰(zhàn)_爬取糗事百科段子的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
詳談Python2.6和Python3.0中對除法操作的異同
下面小編就為大家?guī)硪黄斦凱ython2.6和Python3.0中對除法操作的異同。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04

