最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解OpenCV中直方圖,掩膜和直方圖均衡化的實(shí)現(xiàn)

 更新時間:2022年11月17日 09:32:39   作者:泡泡怡  
這篇文章主要為大家詳細(xì)介紹了OpenCV中直方圖、掩膜、直方圖均衡化詳細(xì)介紹及代碼的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),需要的可以參考一下

一、圖像直方圖

1.1 定義

圖像直方圖是圖像的基本屬性之一,也是反映圖像像素數(shù)據(jù)分布的統(tǒng)計學(xué)特征,其橫坐標(biāo)代表了圖像像素點(diǎn)在[0,255]范圍中,縱坐標(biāo)代表圖像像素點(diǎn)出現(xiàn)的個數(shù)或百分比。如圖:

1.2 函數(shù):cv2.calcHist([img1],[channels],mask,histSize,ranges)

img:輸入圖像

channels:通道,如果輸入的是灰度圖,則此參數(shù)為[0],如果是彩色圖,傳入?yún)?shù)為[0]或[1]或[2]分別對應(yīng)BGR。

mask:掩膜統(tǒng)計整幅圖的直方圖就是None。如果畫某一部分直方圖,需要制作一個掩模圖像并使用。掩模大小和img一樣的np數(shù)組,需要的部分為255,不需要的部分為0.

histSize:直方圖bin的數(shù)目,[0,256]所以就是256。

ranges:像素范圍[0,256]顧頭不顧尾啦。

1.3 代碼實(shí)現(xiàn):

(1)準(zhǔn)備工作加灰度圖顯示:

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#顯示圖像
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.cv2.waitKey(0)
    cv2.destroyAllWindows()
#導(dǎo)入圖像
img1=cv2.imread("C:/Users/bwy/Desktop/lena.bmp",0)
hist=cv2.calcHist([img1],[0],None,[256],[0,256])
print(hist.shape)
plt.hist(img.ravel(),256)
plt.show()

結(jié)果如圖(灰度圖):

 (2)彩色圖三個不同的通道:

img=cv2.imread("C:/Users/bwy/Desktop/7.png")
cv_show('img',img)
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])

結(jié)果如圖:

從上面兩個圖我們就可發(fā)現(xiàn)直方圖很不均勻,可以比喻成不是矮胖的,所以我們接下來進(jìn)行圖像直方圖均衡化。但是,在此之前我們在學(xué)習(xí)一下掩膜。

二、掩膜(mask)

2.1掩模mask思想:

掩模的大小和原圖像大小一致。掩模中只有兩部分,0和255,掩模中白色部分覆蓋到的區(qū)域保留原圖,黑色部分覆蓋到的區(qū)域置為0。如果我們讀入彩圖,在構(gòu)建np數(shù)組時,需要舍棄第三個維度,即通道。保留前兩個維度img.shape[:2],掩模的size和原圖像相同。由于mask是一個數(shù)組,可以使用切片方法將保留的位置變成白色255。

2.2代碼:

img.shape[:2]#(420, 607)
#創(chuàng)建mast
mask=np.zeros(img.shape[:2],np.uint8)
mask[100:300,200:400]=255
cv_show('mask',mask)

結(jié)果如圖:

masked_img=cv2.bitwise_and(img1,img1,mask=mask)
cv_show('masked_img',masked_img)

結(jié)果如圖:

2.3掩膜過程對比

plt.subplot(221),plt.imshow(img1)
plt.subplot(222),plt.imshow(mask)
plt.subplot(223),plt.imshow(masked_img)
plt.subplot(224),plt.plot(hist_full),plt.plot(hist_mask)
plt.xlim([0,256])
plt.show()

結(jié)果如圖:

三、直方圖均衡化

通過改變圖像的直方圖,來改變圖像中各像素的灰度,用于增強(qiáng)局部的對比度而不影響整體的對比度。這種方法對于背景和前景都太亮或者太暗的圖像非常有用。

3.1對圖像整體進(jìn)行均衡化

(1)進(jìn)行均衡化后直方圖前后對比顯示:

img=cv2.imread("C:/Users/bwy/Desktop/lena.bmp",0)
plt.hist(img.ravel(),256)
plt.show()
equ=cv2.equalizeHist(img)
plt.hist(equ.ravel(),256)
plt.show()

結(jié)果對比圖:

(2)進(jìn)行均衡化后圖像前后對比顯示:

img=cv2.imread("C:/Users/bwy/Desktop/lena.bmp",0)
equ=cv2.equalizeHist(img)
res=np.hstack((img,equ))
cv_show('res',res)

但是呢,這個方法也存在微瑕,那看一下如果我用下面這張圖你就會發(fā)現(xiàn)了:

我們會發(fā)現(xiàn)這個帥鍋的臉太亮了,我們觀察不到細(xì)節(jié)了,細(xì)節(jié)丟失了,所以這個問題我們?nèi)绾谓鉀Q呢?

3.2 自適應(yīng)均衡化

1、定義:

整幅圖像會被分成很多小塊,然后再對每一個小塊分別進(jìn)行直方圖均衡化。缺點(diǎn)是:如果有噪聲的話,噪聲會被放大。為了避免這種情況的出現(xiàn)要使用對比度限制。

2、代碼:

img2=cv2.imread("C:/Users/bwy/Desktop/1.png",0)
img2.shape#(508, 672)
img3=cv2.resize(img2,(400,300))
equ1=cv2.equalizeHist(img3)
clahe=cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
res_clahe=clahe.apply(img3)
res=np.hstack((img3,equ1,res_clahe))
cv_show('res',res)

結(jié)果如圖:

以上就是詳解OpenCV中直方圖,掩膜和直方圖均衡化的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于OpenCV直方圖 掩膜 直方圖均衡化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python飛機(jī)大戰(zhàn) pygame游戲創(chuàng)建快速入門詳解

    python飛機(jī)大戰(zhàn) pygame游戲創(chuàng)建快速入門詳解

    這篇文章主要介紹了python飛機(jī)大戰(zhàn) pygame游戲創(chuàng)建,結(jié)合實(shí)例形式詳細(xì)分析了Python使用pygame創(chuàng)建飛機(jī)大戰(zhàn)游戲的具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個數(shù)的實(shí)例

    Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個數(shù)的實(shí)例

    今天小編就為大家分享一篇Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個數(shù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 五個方便好用的Python自動化辦公腳本的實(shí)現(xiàn)

    五個方便好用的Python自動化辦公腳本的實(shí)現(xiàn)

    在沒有人工干預(yù)的情況下,機(jī)器可以自己完成各項(xiàng)任務(wù),這大大提升了工作效率。Python因?yàn)檎Z法簡潔易懂,而且有豐富的第三方工具庫,所以非常適合編寫自動化腳本,本文就為大家?guī)砹宋鍌€這樣的腳本,需要的可以參考一下
    2022-01-01
  • 使用Python的datetime庫處理時間(RPA流程)

    使用Python的datetime庫處理時間(RPA流程)

    datetime 是 Python 處理日期和時間的標(biāo)準(zhǔn)庫。這篇文章主要介紹了使用Python的datetime庫處理時間(RPA流程),需要的朋友可以參考下
    2019-11-11
  • Python使用smtplib庫發(fā)送電子郵件

    Python使用smtplib庫發(fā)送電子郵件

    Python提供了smtplib庫,用于發(fā)送電子郵件,本文將詳細(xì)介紹如何使用Python的smtplib庫來發(fā)送電子郵件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • python中Pytest常用的插件

    python中Pytest常用的插件

    這篇文章主要介紹了python中Pytest常用的插件,Pytest是Python的一種單元測試框架,與unittest相比,使用起來更簡潔、效率更高,也是目前大部分使用python編寫測試用例的小伙伴們的第一選擇了
    2022-06-06
  • Python自定義線程類簡單示例

    Python自定義線程類簡單示例

    這篇文章主要介紹了Python自定義線程類,結(jié)合簡單實(shí)例形式分析Python線程的定義與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python協(xié)程異步IO中asyncio的使用

    python協(xié)程異步IO中asyncio的使用

    這篇文章主要介紹了python異步編程之a(chǎn)syncio的使用,python中異步IO操作是通過asyncio來實(shí)現(xiàn)的,為了更加詳細(xì)說明asyncio,我們先從協(xié)程的最基礎(chǔ)開始講解
    2023-12-12
  • Python讀取properties配置文件操作示例

    Python讀取properties配置文件操作示例

    這篇文章主要介紹了Python讀取properties配置文件操作,結(jié)合實(shí)例形式分析了Python讀取properties配置文件操作中增加對鍵值對支持與使用的相關(guān)技巧,需要的朋友可以參考下
    2018-03-03
  • python爬蟲請求頭的使用

    python爬蟲請求頭的使用

    這篇文章主要介紹了python爬蟲請求頭的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

黄平县| 青川县| 黎城县| 和田县| 疏附县| 馆陶县| 泊头市| 都昌县| 襄城县| 邵阳市| 克拉玛依市| 元江| 阿拉善盟| 永州市| 桓台县| 阿城市| 商丘市| 五峰| 金堂县| 武平县| 永州市| 佛坪县| 忻城县| 峡江县| 建阳市| 乐清市| 忻州市| 禄丰县| 杭锦后旗| 萝北县| 湄潭县| 林芝县| 乌拉特中旗| 永胜县| 武汉市| 茶陵县| 桃园市| 沙湾县| 诸城市| 拉萨市| 和平区|