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

python+OpenCv直方圖(灰度直方圖、掩膜的應(yīng)用、直方圖均衡化、自適應(yīng)直方圖均衡化)

 更新時(shí)間:2025年05月07日 11:05:45   作者:ReadyGo!!!  
這篇文章主要介紹了python+OpenCv直方圖(灰度直方圖、掩膜的應(yīng)用、直方圖均衡化、自適應(yīng)直方圖均衡化)的相關(guān)資料,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、灰度直方圖

概念:

圖像直方圖是表示數(shù)字圖像中亮度分布的直方圖,標(biāo)繪了圖像中每個(gè)亮度值的像素個(gè)數(shù)

這種直方圖中,橫坐標(biāo)的左側(cè)為較暗的區(qū)域,而右側(cè)為較亮的區(qū)域。因此一張較暗圖片的直方圖中的數(shù)據(jù)多集中于左側(cè)和中間部分,而整體明亮、只有少量陰影的圖像則相反。如圖:

注意:圖像直方圖是根據(jù)灰度圖進(jìn)行繪制的,而不是彩色圖像。

圖像直方圖的術(shù)語(yǔ):

dims:需要統(tǒng)計(jì)的特征數(shù)目。
(比如,如果僅統(tǒng)計(jì)了灰度值,則dims=1,如果統(tǒng)計(jì)了BGR三色,則dims=3)
bins:每個(gè)特征空間子區(qū)段的數(shù)目。
(如下圖的直方圖中,每一豎條表示某一值或一區(qū)間,則該直方圖的bins=16)
range:要統(tǒng)計(jì)特征的取值范圍。
(如下圖中,我們將[0,255]區(qū)間分成了16個(gè)子區(qū)間,其中range=[0,255])

直方圖的意義:

直方圖是圖像中像素強(qiáng)度分布的圖形表達(dá)方式。

它統(tǒng)計(jì)了每一個(gè)強(qiáng)度值所具有的像素個(gè)數(shù)。

不同的圖像的直方圖可能是相同的

OpenCv API:

cv2.calcHist(images, channels, mask, histSize, ranges)

參數(shù):

  • images:原圖像。當(dāng)傳入函數(shù)時(shí)應(yīng)該用中括號(hào) [] 括起來(lái),例如:[img]
  • channels:如果輸入圖像是灰度圖,它的值就是[0];如果是彩色圖像的話,傳入的參數(shù)可以是[0],[1],[2]它們分別對(duì)應(yīng)著通道B,G,R。
  • mask:掩模圖像。要統(tǒng)計(jì)整幅圖像的直方圖就把它設(shè)為None。但是如果你想統(tǒng)計(jì)圖像某一部分的直方圖的話,你就需要制作一個(gè)掩模圖像,并使用它。
  • histSize:bins的數(shù)目。也應(yīng)該用中括號(hào)括起來(lái),例如:[256]。
  • ranges:像素值范圍。通常為[0,256]。

代碼編寫(xiě):

import cv2 as cv
import matplotlib.pyplot as plt
src = cv.imread("E:\\view.jpg", 0)  # 直接以灰度圖方式讀入
img = src.copy()
# 統(tǒng)計(jì)灰度圖
greyScale_map = cv.calcHist([img], [0], None, [256], [0, 256])
# 繪制灰度圖
plt.figure(figsize=(10, 6), dpi=100)
plt.plot(greyScale_map)
plt.grid()
plt.show()

二、掩膜的應(yīng)用

原理:

掩膜是用選定的圖像、圖形或物體,對(duì)要處理的圖像進(jìn)行遮擋,來(lái)控制圖像處理的區(qū)域。
在數(shù)字圖像處理中,我們通常使用二維矩陣數(shù)組進(jìn)行掩膜。掩膜是由0和1組成一個(gè)二進(jìn)制圖像,利用該掩膜圖像要處理的圖像進(jìn)行掩膜,其中1值的區(qū)域被處理,0值區(qū)域被屏蔽,不會(huì)處理。
應(yīng)用:

掩膜的主要用途是:

  • 提取感興趣區(qū)域:用預(yù)先制作的感興趣區(qū)掩膜與待處理圖像進(jìn)行”與“操作,得到感興趣區(qū)圖像,感興趣區(qū)內(nèi)圖像值保持不變,而區(qū)外圖像值都為0。
  • 屏蔽作用︰用掩膜對(duì)圖像上某些區(qū)域作屏蔽,使其不參加處理或不參加處理參數(shù)的計(jì)算,或僅對(duì)屏蔽區(qū)作處理或統(tǒng)計(jì)。
  • 結(jié)構(gòu)特征提取︰用相似性變量或圖像匹配方法檢測(cè)和提取圖像中與掩模相似的結(jié)構(gòu)特征。
  • ·特殊形狀圖像制作。

掩膜在遙感影像處理中使用較多,當(dāng)提取道路或者河流,或者房屋時(shí),通過(guò)一個(gè)掩膜矩陣來(lái)對(duì)圖像進(jìn)行像素過(guò)濾,然后將我們需要的地物或者標(biāo)志突出顯示出來(lái)。

代碼編寫(xiě):

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
src = cv.imread("E:\\view.jpg", 0)  # 直接以灰度圖方式讀入
img = src.copy()
# 創(chuàng)建蒙版
mask = np.zeros(img.shape[:2], np.uint8)
mask[700:1000, 100:400] = 1
# 掩膜
masked_img = cv.bitwise_and(img, img, mask=mask)  # 與操作
# 統(tǒng)計(jì)掩膜后圖像的灰度圖
mask_histr = cv.calcHist([img], [0], mask, [256], [0, 256])
# 顯示圖像
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8), dpi=100)
axes[0][0].imshow(img, cmap=plt.cm.gray)
axes[0][0].set_title("原圖")
axes[0][1].imshow(mask, cmap=plt.cm.gray)
axes[0][1].set_title("蒙版數(shù)據(jù)")
axes[1][0].imshow(masked_img, cmap=plt.cm.gray)
axes[1][0].set_title("掩膜后圖像")
axes[1][1].plot(mask_histr)
axes[1][1].grid()
axes[1][1].set_title("掩膜后圖像的灰度直方圖")
plt.show()

三、直方圖均衡化

原理:

想象一下,如果一副圖像中的大多數(shù)像素點(diǎn)的像素值都集中在某一個(gè)小的灰度值值范圍之內(nèi)會(huì)怎樣呢?如果一幅圖像整體很亮,那所有的像素值的取值個(gè)數(shù)應(yīng)該都會(huì)很高。所以應(yīng)該把它的直方圖做一個(gè)橫向拉伸(如下圖),就可以擴(kuò)大圖像像素值的分布范圍,提高圖像的對(duì)比度,這就是直方圖均衡化要做的事情。

“直方圖均衡化"是把原始圖像的灰度直方圖從比較集中的某個(gè)灰度區(qū)間變成在更廣泛灰度范圍內(nèi)的分布。直方圖均衡化就是對(duì)圖像進(jìn)行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內(nèi)的像素?cái)?shù)量大致相同。

應(yīng)用:

提高圖像整體的對(duì)比度。

特別是有用數(shù)據(jù)的像素值分布比較接近時(shí),在X光圖像中使用廣泛,可以提高骨架結(jié)構(gòu)的顯示,另外在曝光過(guò)度或不足的圖像中可以更好的突出細(xì)節(jié)。

OpenCv API:

cv2.equalizeHist(img)

參數(shù):

img:輸入的灰度圖

代碼編寫(xiě):

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
src = cv.imread("E:\\qi.png", 0)  # 直接以灰度圖方式讀入
img = src.copy()
# 均衡化處理
dst = cv.equalizeHist(img)
# 顯示圖像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img, cmap=plt.cm.gray)
axes[0].set_title("原圖")
axes[1].imshow(dst, cmap=plt.cm.gray)
axes[1].set_title("均衡化后的圖像")
plt.show()

四、自適應(yīng)的直方圖均衡化

由來(lái):

上述的直方圖均衡化,我們考慮的是圖像的全局對(duì)比度。的確在進(jìn)行完直方圖均衡化之后,圖片背景的對(duì)比度被改變了,但在許多情況下,這樣做的效果并不好,因?yàn)榫饣蟮膱D像很有可能發(fā)生局部過(guò)亮或者局部過(guò)暗的情況,從而造成數(shù)據(jù)信息的丟失。

原理:

  • 將整幅圖像分成很多小塊,這些小塊被稱為“tiles”(在 OpenCV中tiles的大小默認(rèn)是8x8),然后再對(duì)每一個(gè)小塊分別進(jìn)行直方圖均衡化。(所以在每一個(gè)的區(qū)域中,直方圖會(huì)集中在某一個(gè)小的區(qū)域中)。
  • 如果有噪聲的話,噪聲會(huì)被放大。為了避免這種情況的出現(xiàn)要使用對(duì)比度限制。對(duì)于每個(gè)小塊來(lái)說(shuō),如果直方圖中的 bin超過(guò)對(duì)比度的上限的話,就把其中的像素點(diǎn)均勻分散到其他bins 中,然后在進(jìn)行直方圖均衡化。

最后,為了去除每一個(gè)小塊之間的邊界,再使用雙線性差值,對(duì)每一小塊進(jìn)行拼接。

OpenCv API:

clahe = cv.createCLAHE(clipLimit, tileGridSize)
dst = clahe.apply(img)

參數(shù):

  • clipLimit:對(duì)比度限制,默認(rèn)是40
  • tileGridSize:分塊的大小,默認(rèn)為8*8 代碼編寫(xiě):
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
src = cv.imread("E:\\qi.png", 0)  # 直接以灰度圖方式讀入
img = src.copy()
# 創(chuàng)建一個(gè)自適應(yīng)均衡化的對(duì)象,并應(yīng)用于圖像
clahe = cv.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8))
dst = clahe.apply(img)
# 顯示圖像
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img, cmap=plt.cm.gray)
axes[0].set_title("原圖")
axes[1].imshow(dst, cmap=plt.cm.gray)
axes[1].set_title("自適應(yīng)均衡化后的圖像")
plt.show()

到此這篇關(guān)于python+OpenCv直方圖(灰度直方圖、掩膜的應(yīng)用、直方圖均衡化、自適應(yīng)直方圖均衡化)的文章就介紹到這了,更多相關(guān)python OpenCv直方圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python實(shí)現(xiàn)斐波那契數(shù)列的方法實(shí)例

    利用Python實(shí)現(xiàn)斐波那契數(shù)列的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)斐波那契數(shù)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python文檔字符串(函數(shù)使用說(shuō)明)使用詳解

    python文檔字符串(函數(shù)使用說(shuō)明)使用詳解

    這篇文章主要介紹了python文檔字符串(函數(shù)使用說(shuō)明)使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python代碼實(shí)現(xiàn)在PowerPoint中添加并控制音頻播放

    Python代碼實(shí)現(xiàn)在PowerPoint中添加并控制音頻播放

    本文將介紹如何使用 Spire.Presentation for Python 在 PowerPoint 演示文稿中插入音頻文件,控制音頻播放行為以及管理音頻屬性,感興趣的小伙伴可以了解下
    2026-05-05
  • Python動(dòng)態(tài)處理文件編碼的完整指南

    Python動(dòng)態(tài)處理文件編碼的完整指南

    在Python文件處理的高級(jí)應(yīng)用中,我們經(jīng)常會(huì)遇到需要?jiǎng)討B(tài)處理文件編碼的場(chǎng)景,本文將深入探討Python中動(dòng)態(tài)處理文件編碼的技術(shù),有需要的小伙伴可以了解下
    2025-09-09
  • python用Joypy繪制嵴線圖實(shí)例

    python用Joypy繪制嵴線圖實(shí)例

    大家好,本篇文章主要講的是python Joypy繪制嵴線圖實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python中使用支持向量機(jī)SVM實(shí)踐

    Python中使用支持向量機(jī)SVM實(shí)踐

    這篇文章主要為大家詳細(xì)介紹了Python中使用支持向量機(jī)SVM實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧

    詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧

    這篇文章主要介紹了詳解10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python re.split方法分割字符串的實(shí)現(xiàn)示例

    Python re.split方法分割字符串的實(shí)現(xiàn)示例

    本文主要介紹了Python re.split方法分割字符串的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • golang/python實(shí)現(xiàn)歸并排序?qū)嵗a

    golang/python實(shí)現(xiàn)歸并排序?qū)嵗a

    這篇文章主要給大家介紹了關(guān)于golang/python實(shí)現(xiàn)歸并排序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python繼承和抽象類的實(shí)現(xiàn)方法

    python繼承和抽象類的實(shí)現(xiàn)方法

    這篇文章主要介紹了python繼承和抽象類的實(shí)現(xiàn)方法,實(shí)例分析了Python針對(duì)類的繼承及抽象類的定義及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01

最新評(píng)論

鄂托克旗| 铅山县| 定州市| 冷水江市| 乌拉特前旗| 辽阳县| 青岛市| 从化市| 渑池县| 九江市| 浙江省| 鄂尔多斯市| 苏州市| 长治县| 甘德县| 满城县| 平昌县| 偃师市| 武汉市| 康平县| 阿拉尔市| 古浪县| 紫云| 凤冈县| 山东省| 澳门| 炎陵县| 唐河县| 永年县| 六盘水市| 新乡市| 墨玉县| 宜州市| 新密市| 涡阳县| 陆良县| 康平县| 许昌县| 黎平县| 黄骅市| 县级市|