直方圖均衡化
直方圖均衡化的目的是將原始圖像的灰度級(jí)均勻地映射到整個(gè)灰度級(jí)范圍內(nèi),得到一個(gè)灰度級(jí)分布均衡的圖像。這種均衡化,即實(shí)現(xiàn)了灰度值統(tǒng)計(jì)上的概率均衡,也實(shí)現(xiàn)了人類視覺(jué)系統(tǒng)上(HSV)的視覺(jué)均衡。
一般來(lái)說(shuō),直方圖均衡化可以達(dá)到增強(qiáng)圖像顯示效果的目的。最常用的比如去霧。下面,我們來(lái)分別實(shí)現(xiàn)灰度圖像去霧以及彩色圖像去霧。
實(shí)現(xiàn)灰度圖像去霧
在OpenCV中,它提供了函數(shù)cv2.equalizeHist()來(lái)實(shí)現(xiàn)直方圖均衡化,該函數(shù)的完整定義如下:
def equalizeHist(src, dst=None):
src:原始圖像,必須是8位單通道原始圖像
dst:返回值,返回直方圖均值化處理結(jié)果
下面,我們來(lái)通過(guò)該函數(shù)實(shí)現(xiàn)灰度圖像直方圖均衡化處理,代碼如下:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("45.jpg", 0)
equ = cv2.equalizeHist(img)
cv2.imshow("1",img)
cv2.imshow("2",equ)
plt.figure("原始圖像直方圖")
plt.hist(img.ravel(), 256)
plt.figure("均衡化圖像直方圖")
plt.hist(equ.ravel(), 256)
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
運(yùn)行之后,效果如下:
左邊為原圖,右邊是處理后的圖像,可以看到圖像前景的霧,基本已經(jīng)去掉了。不過(guò),我們還是看看處理前后的直方圖結(jié)果分布。
實(shí)現(xiàn)彩色圖像去霧
雖然上面的灰度圖像達(dá)到了去霧的基本效果,但是說(shuō)實(shí)話,大多數(shù)實(shí)際的場(chǎng)景中,我們用到最多的往往是彩色圖像。所以,掌握彩色圖像的直方圖均衡化處理,才是我們真正的實(shí)戰(zhàn)技能。
下面我們來(lái)用代碼實(shí)現(xiàn)彩色圖像直方圖均衡化處理,代碼如下:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("50.jpg")
blue = img[:, :, 0]
green = img[:, :, 1]
red = img[:, :, 2]
blue_equ = cv2.equalizeHist(blue)
green_equ = cv2.equalizeHist(green)
red_equ = cv2.equalizeHist(red)
equ = cv2.merge([blue_equ, green_equ, red_equ])
cv2.imshow("1",img)
cv2.imshow("2",equ)
plt.figure("原始圖像直方圖")
plt.hist(img.ravel(), 256)
plt.figure("均衡化圖像直方圖")
plt.hist(equ.ravel(), 256)
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
這里,我們只需要使用equalizeHist()函數(shù)對(duì)彩色圖像的每個(gè)顏色進(jìn)行均衡化處理即可。當(dāng)然,需要注意的是,我們處理完每個(gè)顏色之后,需要將圖像再次合并。運(yùn)行之后效果如下:
到此這篇關(guān)于OpenCV-Python直方圖均衡化實(shí)現(xiàn)圖像去霧的文章就介紹到這了,更多相關(guān)OpenCV-Python 圖像去霧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Opencv實(shí)現(xiàn)二維直方圖的計(jì)算及繪制
- 基于OpenCV的直方圖匹配的實(shí)現(xiàn)方法
- python 對(duì)一幅灰度圖像進(jìn)行直方圖均衡化
- OpenCV利用python來(lái)實(shí)現(xiàn)圖像的直方圖均衡化
- 詳解用Python為直方圖繪制擬合曲線的兩種方法
- opencv python統(tǒng)計(jì)及繪制直方圖的方法
- OpenCV半小時(shí)掌握基本操作之直方圖