Python+OpenCV之直方圖均衡化詳解
直方圖均衡化
直方圖均衡化(Histogram Equalization)是一種增強(qiáng)圖像對(duì)比度(Image Contrast)的方法,其主要思想是將一副圖像的直方圖分布變成近似均勻分布,從而增強(qiáng)圖像的對(duì)比度。
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)學(xué)形態(tài)學(xué)實(shí)例分析
這篇文章主要介紹了Python數(shù)學(xué)形態(tài)學(xué),結(jié)合實(shí)例形式分析了Python數(shù)學(xué)運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2019-09-09Python+Matplotlib繪制帶有對(duì)角線的散點(diǎn)圖的示例代碼
Matplotlib 是一個(gè)用于繪制二維圖形的 Python 庫,這篇文章主要介紹了Python如何利用Matplotlib繪制帶有對(duì)角線的散點(diǎn)圖,需要的小伙伴可以參考一下2023-06-06Python字典的概念及常見應(yīng)用實(shí)例詳解
這篇文章主要介紹了Python字典的概念及常見應(yīng)用,結(jié)合實(shí)例形式詳細(xì)的分析了Python字典的概念、原理、創(chuàng)建、常見操作函數(shù)與使用注意事項(xiàng),需要的朋友可以參考下2019-10-10Pycharm社區(qū)版創(chuàng)建Flask項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了Pycharm社區(qū)版創(chuàng)建Flask項(xiàng)目,包括設(shè)置Python環(huán)境、安裝Flask庫以及創(chuàng)建基本的項(xiàng)目結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06Python中線程threading.Thread的使用詳解
python的thread模塊是比較底層的模塊,python的threading模塊是對(duì)thread做了一些包裝的,可以更加方便的被使用。本文將為大家詳細(xì)介紹一下python中的線程threading.Thread()的使用,需要的可以參考一下2022-07-07pycharm使用技巧之自動(dòng)調(diào)整代碼格式總結(jié)
這篇文章主要給大家介紹了關(guān)于pycharm使用技巧之自動(dòng)調(diào)整代碼格式總結(jié)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python-pymysql如何實(shí)現(xiàn)更新mysql表中任意字段數(shù)據(jù)
這篇文章主要介紹了python-pymysql如何實(shí)現(xiàn)更新mysql表中任意字段數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05漂亮的Django Markdown富文本app插件的實(shí)現(xiàn)
這篇文章主要介紹了漂亮的Django Markdown富文本app插件的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01