【火爐煉AI】機(jī)器學(xué)習(xí)047-圖像的直方圖均衡化操作

【火爐煉AI】機(jī)器學(xué)習(xí)047-圖像的直方圖均衡化操作

(本文所使用的Python庫和版本號(hào): Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

圖像的直方圖是指圖像中每一像素范圍內(nèi)像素頻率的統(tǒng)計(jì)關(guān)系圖乐纸,直方圖能夠給出圖像灰度范圍,每個(gè)灰度的頻度和灰度的分布摇予,整幅圖的平均明暗汽绢,對(duì)比度等概貌性描述〔啻鳎灰度直方圖是灰度級(jí)的函數(shù)宁昭,反映的是圖像中具有該灰度級(jí)像素的個(gè)數(shù)。如果大部分像素都集中在低灰度區(qū)域酗宋,圖像會(huì)呈現(xiàn)暗的特性积仗,反之,如果大部分圖像都集中在高灰度區(qū)域本缠,圖像呈現(xiàn)出亮的特性斥扛。

直方圖均衡化是指入问,將隨機(jī)分布的圖像直方圖修改成均勻分布的直方圖丹锹,基本思想是對(duì)原始圖像的像素灰度做某種映射變換,使得變換后的圖像灰度的概率密度呈均勻分布芬失,這就意味著圖像灰度的動(dòng)態(tài)范圍得到擴(kuò)大楣黍,提高了圖像的對(duì)比度。


1. 獲取圖像直方圖

圖像直方圖有灰度直方圖和彩色直方圖的區(qū)別棱烂,如果輸入圖像是灰度圖租漂,則得到灰度直方圖,如果輸入圖像是BGR圖像,得到的則是某個(gè)顏色通道的直方圖哩治。

# 獲取灰度直方圖
gray_hist=cv2.calcHist([gray], [0], None, [256], [0, 256])
plt.plot(gray_hist)
image

取得圖像的灰度直方圖秃踩,只需要調(diào)用cv2.calcHist()函數(shù)即可,這個(gè)函數(shù)的參數(shù)為:

第一個(gè)參數(shù)為輸入的圖像业筏,可以是灰度圖也可以是彩色圖憔杨。

第二個(gè)參數(shù)是用于計(jì)算直方圖的通道,這里使用灰度圖計(jì)算直方圖蒜胖,所以就直接使用第一個(gè)通道消别;

第三個(gè)參數(shù)是Mask,這里沒有使用台谢,所以用None寻狂。

第四個(gè)參數(shù)是histSize,表示這個(gè)直方圖分成多少份(即多少個(gè)直方柱)朋沮。

第五個(gè)參數(shù)是表示直方圖中各個(gè)像素的值蛇券,[0.0, 256.0]表示直方圖能表示像素值從0.0到256的像素。

最后是兩個(gè)可選參數(shù)朽们,由于直方圖作為函數(shù)結(jié)果返回怀读,所以第六個(gè)hist就沒有意義了(待確定)

最后一個(gè)accumulate是一個(gè)布爾值,用來表示直方圖是否疊加骑脱。

# 獲取彩色圖的各個(gè)通道直方圖
hist_B=cv2.calcHist([img],[0],None,[256],[0,256])
plt.plot(hist_B,'b',label='B') # Blue color

hist_G=cv2.calcHist([img],[1],None,[256],[0,256])
plt.plot(hist_G,'g',label='G')  # green color

hist_R=cv2.calcHist([img],[2],None,[256],[0,256])
plt.plot(hist_R,'r',label='R')# red color
plt.title('histogram of Color Chanel')
plt.legend()
image


2. 直方圖均衡化

2.1 灰度圖的直方圖均衡化

為了方便對(duì)比菜枷,我將直方圖均衡化前后的圖像都繪制到同一個(gè)圖片中。如下:

# 灰度圖的直方圖均衡化:
# 先顯示均衡化前后的圖像
plt.figure(12,figsize=(15,30))
plt.subplot(121)
plt.imshow(gray,cmap='gray')
plt.title('GrayImg before Equalization')

equalize = cv2.equalizeHist(gray)
plt.subplot(122)
plt.imshow(equalize,cmap='gray')
plt.title('GrayImg after Equalization')
image
plt.plot(gray_hist,c='b',label='raw_Hist')

gray_equalized_hist=cv2.calcHist([equalize], [0], None, [256], [0, 256])
plt.plot(gray_equalized_hist,c='r',label='Equalized')

plt.legend()
plt.title('Histogram comparison')
image

話說叁丧,經(jīng)過直方圖均衡化之后的直方圖怎么長(zhǎng)的這么丑啤誊?

直方圖均衡化只需要一個(gè)函數(shù)cv2.equalizeHist()即可,但是需要注意:cv2.equalizeHist()只提供灰度值圖片的處理拥娄,當(dāng)把上面的圖片換成RGB圖片時(shí)蚊锹,就會(huì)報(bào)錯(cuò)了。

2.2 彩色圖的直方圖均衡化

彩色圖的直方圖均衡化需要借助YUV空間稚瘾,如下代碼:

# 彩色直方圖均衡化需要借助YUV空間
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
img_histeq = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)

# 顯示均衡化前后的圖像
plt.figure(12,figsize=(15,30))
plt.subplot(121)
img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.title('ColorImg before Equalization')

plt.subplot(122)
img_hist_rgb=cv2.cvtColor(img_histeq,cv2.COLOR_BGR2RGB)
plt.imshow(img_hist_rgb)
plt.title('ColorImg after Equalization')
image
# 顯示均衡化前后的直方圖情況
plt.figure(12)

plt.subplot(121)
hist_B=cv2.calcHist([img],[0],None,[256],[0,256])
plt.plot(hist_B,'b',label='B') # Blue color

hist_G=cv2.calcHist([img],[1],None,[256],[0,256])
plt.plot(hist_G,'g',label='G')  # green color

hist_R=cv2.calcHist([img],[2],None,[256],[0,256])
plt.plot(hist_R,'r',label='R')# red color
plt.title('Color Histogram before Equalization')
plt.legend()

plt.subplot(122)
hist_B=cv2.calcHist([img_histeq],[0],None,[256],[0,256])
plt.plot(hist_B,'b',label='B') # Blue color

hist_G=cv2.calcHist([img_histeq],[1],None,[256],[0,256])
plt.plot(hist_G,'g',label='G')  # green color

hist_R=cv2.calcHist([img_histeq],[2],None,[256],[0,256])
plt.plot(hist_R,'r',label='R')# red color
plt.title('Color Histogram after Equalization')
plt.legend()
image

同樣的牡昆,經(jīng)過對(duì)比可以看出,經(jīng)過直方圖均衡化之后的圖像直方圖都比較丑摊欠。丢烘。。些椒。

########################小**********結(jié)###############################

1播瞳,對(duì)于圖像直方圖進(jìn)行操作可以比較明顯的改變圖像的對(duì)比度和明暗度。

2免糕,使用cv2.equalizeHist函數(shù)可以直接改變灰度圖的直方圖赢乓,但是卻不能直接改變彩色圖的直方圖忧侧,對(duì)于彩色圖如果想要均衡化,需要先轉(zhuǎn)變到Y(jié)UV空間再進(jìn)行轉(zhuǎn)換牌芋。

#################################################################


注:本部分代碼已經(jīng)全部上傳到(我的github)上蚓炬,歡迎下載。

參考資料:

1, Python機(jī)器學(xué)習(xí)經(jīng)典實(shí)例躺屁,Prateek Joshi著试吁,陶俊杰,陳小莉譯

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楼咳,一起剝皮案震驚了整個(gè)濱河市熄捍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌母怜,老刑警劉巖余耽,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異苹熏,居然都是意外死亡碟贾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門轨域,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袱耽,“玉大人,你說我怎么就攤上這事干发≈炀蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵枉长,是天一觀的道長(zhǎng)冀续。 經(jīng)常有香客問我,道長(zhǎng)必峰,這世上最難降的妖魔是什么洪唐? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吼蚁,結(jié)果婚禮上凭需,老公的妹妹穿的比我還像新娘。我一直安慰自己肝匆,他們只是感情好粒蜈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著术唬,像睡著了一般薪伏。 火紅的嫁衣襯著肌膚如雪滚澜。 梳的紋絲不亂的頭發(fā)上粗仓,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼借浊。 笑死塘淑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚂斤。 我是一名探鬼主播存捺,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼曙蒸!你這毒婦竟也來了捌治?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤纽窟,失蹤者是張志新(化名)和其女友劉穎肖油,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臂港,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡森枪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了审孽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县袱。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佑力,靈堂內(nèi)的尸體忽然破棺而出式散,到底是詐尸還是另有隱情,我是刑警寧澤打颤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布杂数,位于F島的核電站,受9級(jí)特大地震影響瘸洛,放射性物質(zhì)發(fā)生泄漏揍移。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一反肋、第九天 我趴在偏房一處隱蔽的房頂上張望那伐。 院中可真熱鬧,春花似錦石蔗、人聲如沸罕邀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诉探。三九已至,卻和暖如春棍厌,著一層夾襖步出監(jiān)牢的瞬間肾胯,已是汗流浹背竖席。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工敬肚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毕荐,地道東北人艳馒。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓憎亚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親第美。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容