亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、圖像直方圖

1.1 定義

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

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

img:輸入圖像

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

mask:掩膜統(tǒng)計(jì)整幅圖的直方圖就是None。如果畫某一部分直方圖,需要制作一個(gè)掩模圖像并使用。掩模大小和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)彩色圖三個(gè)不同的通道:

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é)果如圖:

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

二、掩膜(mask)

2.1掩模mask思想:

掩模的大小和原圖像大小一致。掩模中只有兩部分,0和255,掩模中白色部分覆蓋到的區(qū)域保留原圖,黑色部分覆蓋到的區(qū)域置為0。如果我們讀入彩圖,在構(gòu)建np數(shù)組時(shí),需要舍棄第三個(gè)維度,即通道。保留前兩個(gè)維度img.shape[:2],掩模的size和原圖像相同。由于mask是一個(gè)數(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掩膜過(guò)程對(duì)比

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é)果如圖:

三、直方圖均衡化

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

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

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

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é)果對(duì)比圖:

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

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

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

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

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

1、定義:

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

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直方圖 掩膜 直方圖均衡化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • TensorFlow用expand_dim()來(lái)增加維度的方法

    TensorFlow用expand_dim()來(lái)增加維度的方法

    今天小編就為大家分享一篇TensorFlow用expand_dim()來(lái)增加維度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • python鏈表類中獲取元素實(shí)例方法

    python鏈表類中獲取元素實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python鏈表類中獲取元素實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • Python海龜繪圖(Turtle)應(yīng)用指南

    Python海龜繪圖(Turtle)應(yīng)用指南

    python2.6版本中后引入的一個(gè)簡(jiǎn)單的繪圖工具,叫做海龜繪圖(Turtle?Graphics)。海龜繪圖(turtle庫(kù))是python的內(nèi)部模塊,使用前導(dǎo)入即可。本文將展示三個(gè)通過(guò)海龜繪圖實(shí)現(xiàn)的小程序,快來(lái)跟隨小編一起學(xué)習(xí)吧
    2022-03-03
  • 一文詳解如何配置Pycharm進(jìn)行遠(yuǎn)程開(kāi)發(fā)

    一文詳解如何配置Pycharm進(jìn)行遠(yuǎn)程開(kāi)發(fā)

    在搞深度學(xué)習(xí)的時(shí)候,我們?cè)诒镜亻_(kāi)發(fā),但是需要在服務(wù)器去運(yùn)行工程,所以需要使用Pycharm進(jìn)行遠(yuǎn)程配置,下面這篇文章主要給大家介紹了關(guān)于如何配置Pycharm進(jìn)行遠(yuǎn)程開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Python基礎(chǔ)學(xué)習(xí)之反射機(jī)制詳解

    Python基礎(chǔ)學(xué)習(xí)之反射機(jī)制詳解

    在Python中,反射是指通過(guò)一組內(nèi)置的函數(shù)和語(yǔ)句,在運(yùn)行時(shí)動(dòng)態(tài)地訪問(wèn)、檢查和修改對(duì)象的屬性、方法和類信息的機(jī)制。本文將通過(guò)簡(jiǎn)單的示例和大家講講Python中的反射機(jī)制,希望對(duì)大家有所幫助
    2023-03-03
  • 在Python中使用swapCase()方法轉(zhuǎn)換大小寫的教程

    在Python中使用swapCase()方法轉(zhuǎn)換大小寫的教程

    這篇文章主要介紹了在Python中使用swapCase()方法轉(zhuǎn)換大小寫的教程,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)批量文件分類保存的示例代碼

    Python實(shí)現(xiàn)批量文件分類保存的示例代碼

    當(dāng)我們電腦里面的文本或者或者文件夾太多了,有時(shí)候想找到自己想要的文件,只能通過(guò)去搜索文件名,這樣還是很麻煩的。本文將通過(guò)Python語(yǔ)言實(shí)現(xiàn)文件批量分類保存,需要的可以參考一下
    2022-04-04
  • python?DataFrame的shift()方法的使用

    python?DataFrame的shift()方法的使用

    在python數(shù)據(jù)分析中,可以使用shift()方法對(duì)DataFrame對(duì)象的數(shù)據(jù)進(jìn)行位置的前滯、后滯移動(dòng),本文主要介紹了python?DataFrame的shift()方法的使用,感興趣的可以了解一下
    2022-03-03
  • Python趣味挑戰(zhàn)之用pygame實(shí)現(xiàn)簡(jiǎn)單的金幣旋轉(zhuǎn)效果

    Python趣味挑戰(zhàn)之用pygame實(shí)現(xiàn)簡(jiǎn)單的金幣旋轉(zhuǎn)效果

    今天教大家怎么用pygame實(shí)現(xiàn)簡(jiǎn)單的金幣旋轉(zhuǎn)效果,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • python數(shù)據(jù)分析近年比特幣價(jià)格漲幅趨勢(shì)分布

    python數(shù)據(jù)分析近年比特幣價(jià)格漲幅趨勢(shì)分布

    這篇文章主要為大家介紹了python分析近年來(lái)比特幣價(jià)格漲幅趨勢(shì)的數(shù)據(jù)分布,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11

最新評(píng)論