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

詳解python OpenCV學(xué)習(xí)筆記之直方圖均衡化

 更新時(shí)間:2018年02月08日 09:32:36   作者:JS_XH  
本篇文章主要介紹了詳解python OpenCV學(xué)習(xí)筆記之直方圖均衡化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

本文介紹了python OpenCV學(xué)習(xí)筆記之直方圖均衡化,分享給大家,具體如下:

官方文檔 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_histogram_equalization.html

考慮一個(gè)圖像,其像素值僅限制在特定的值范圍內(nèi)。例如,更明亮的圖像將使所有像素都限制在高值中。但是一個(gè)好的圖像會(huì)有來自圖像的所有區(qū)域的像素。所以你需要把這個(gè)直方圖拉伸到兩端(如下圖所給出的),這就是直方圖均衡的作用(用簡(jiǎn)單的話說)。這通常會(huì)改善圖像的對(duì)比度。

 

建議閱讀關(guān)于直方圖均衡的wikipedia頁面Histogram Equalization,了解更多有關(guān)它的詳細(xì)信息。它給出了一個(gè)很好的解釋,給出了一些例子,這樣你就能在讀完之后理解所有的東西。同樣,我們將看到它的Numpy實(shí)現(xiàn)。之后,我們將看到OpenCV函數(shù)。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('wiki.jpg', 0)

hist, bins = np.histogram(img.flatten(), 256, [0,256])

cdf = hist.cumsum()
cdf_normalized = cdf*float(hist.max())/cdf.max()

plt.plot(cdf_normalized, color = 'b')
plt.hist(img.flatten(),256,[0,256], color = 'r')
plt.xlim([0,256])
plt.legend(('cdf','histogram'), loc = 'upper left')
plt.show()

你可以看到,直方圖位于更亮的區(qū)域。我們需要完整的頻譜。為此,我們需要一個(gè)轉(zhuǎn)換函數(shù),它將更亮區(qū)域的輸入像素映射到全區(qū)域的輸出像素。這就是直方圖均衡所做的。

現(xiàn)在我們找到了最小的直方圖值(不包括0),并應(yīng)用了在wiki頁面中給出的直方圖均衡等式。但我用在Numpy的遮罩?jǐn)?shù)組的概念數(shù)組上。對(duì)于遮罩?jǐn)?shù)組,所有操作都是在非遮罩元素上執(zhí)行的。

cdf_m = np.ma.masked_equal(cdf, 0)
cdf_m = (cdf_m-cdf_m.min()) * 255 / (cdf_m.max()-cdf_m.min())
cdf = np.ma.filled(cdf_m, 0).astype('uint8')

現(xiàn)在我們有了一個(gè)查找表,它提供了關(guān)于每個(gè)輸入像素值的輸出像素值的信息。所以我們只要應(yīng)用變換。

img2 = cdf[img]

現(xiàn)在我們計(jì)算它的直方圖和cdf,就像之前一樣,結(jié)果如下:

另一個(gè)重要的特征是,即使圖像是一個(gè)較暗的圖像(而不是我們使用的更亮的圖像),在均衡之后,我們將得到幾乎相同的圖像。因此,它被用作一種“參考工具”,使所有的圖像都具有相同的光照條件。這在很多情況下都很有用。例如,在人臉識(shí)別中,在對(duì)人臉數(shù)據(jù)進(jìn)行訓(xùn)練之前,人臉的圖像是均勻的,使它們具有相同的光照條件。

OpenCV中的直方圖均衡化

OpenCV有一個(gè)函數(shù)可以這樣做,cv.equalizeHist()。它的輸入只是灰度圖像,輸出是我們的直方圖均衡圖像。

img = cv.imread('wiki,jpg', 0)
equ = cv.equalizeHist(img)
res = np.hstack((img, equ)) # 并排疊加圖片
cv.imwrite('res.png', res)

所以現(xiàn)在你可以用不同的光條件來拍攝不同的圖像,平衡它,并檢查結(jié)果。

當(dāng)圖像的直方圖被限制在一個(gè)特定的區(qū)域時(shí),直方圖均衡是很好的。在那些有很大強(qiáng)度變化的地方,直方圖覆蓋了一個(gè)大區(qū)域,比如明亮的和暗的像素,這樣的地方就不好用了。

CLAHE(對(duì)比有限的自適應(yīng)直方圖均衡/Contrast Limited Adaptive Histogram Equalization)

我們剛剛看到的第一個(gè)直方圖均衡化,考慮到圖像的全局對(duì)比。在很多情況下,這不是一個(gè)好主意。例如,下圖顯示了一個(gè)輸入圖像及其在全局直方圖均衡之后的結(jié)果。

在直方圖均衡化之后,背景對(duì)比得到了改善。但是比較兩幅圖像中的雕像的臉。由于亮度過高,我們丟失了大部分的信息。這是因?yàn)樗闹狈綀D并不局限于一個(gè)特定的區(qū)域,就像我們?cè)谇懊娴睦又锌吹降哪菢印?/p>

為了解決這個(gè)問題,可以使用了自適應(yīng)直方圖均衡。在這一點(diǎn)上,圖像被劃分為幾個(gè)小塊,稱為“tiles”(在OpenCV中默認(rèn)值是8x8)。然后每一個(gè)方塊都是像平常一樣的直方圖。因此,直方圖會(huì)限制在一個(gè)小區(qū)域(除非有噪聲)。如果噪音在那里,它就會(huì)被放大。為了避免這種情況,會(huì)應(yīng)用對(duì)比限制。如果任何直方圖bin超出指定的對(duì)比度限制(默認(rèn)情況下是40),在應(yīng)用直方圖均衡之前,這些像素被裁剪并均勻地分布到其他bin。均衡后,刪除邊界中的工件,采用雙線性插值。

cv.createCLAHE([, clipLimit[, tileGridSize]])

import numpy as np
import cv2 as cv

img = cv.imread('tsukuba_1.png', 0)

# create a CLAHE object (Arguments are optional).
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)

cv.imread('clahe_2.jpg', cl1)

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python random模塊的運(yùn)用詳解

    Python random模塊的運(yùn)用詳解

    這篇文章主要為大家介紹了Python random模塊的運(yùn)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 基于Python實(shí)現(xiàn)自動(dòng)點(diǎn)擊器

    基于Python實(shí)現(xiàn)自動(dòng)點(diǎn)擊器

    顧名思義,Python 中的自動(dòng)點(diǎn)擊器是一個(gè)簡(jiǎn)單的 Python 應(yīng)用程序,它根據(jù)用戶要求重復(fù)單擊鼠標(biāo), 不同的參數(shù)可以根據(jù)用戶進(jìn)行更改,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2023-10-10
  • jupyter notebook出現(xiàn)In[*]的問題及解決

    jupyter notebook出現(xiàn)In[*]的問題及解決

    這篇文章主要介紹了jupyter notebook出現(xiàn)In[*]的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python實(shí)現(xiàn)微信小程序自動(dòng)回復(fù)

    python實(shí)現(xiàn)微信小程序自動(dòng)回復(fù)

    這篇文章主要介紹了python實(shí)現(xiàn)微信小程序自動(dòng)回復(fù),使用itchat模塊進(jìn)行微信私聊消息以及群消息自動(dòng)回復(fù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python3 sqlite3限制條件查詢的操作

    python3 sqlite3限制條件查詢的操作

    這篇文章主要介紹了python3 sqlite3限制條件查詢的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Numpy中如何創(chuàng)建矩陣并等間隔抽取數(shù)據(jù)

    Numpy中如何創(chuàng)建矩陣并等間隔抽取數(shù)據(jù)

    這篇文章主要介紹了Numpy中如何創(chuàng)建矩陣并等間隔抽取數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python虛擬環(huán)境venv的使用方法

    Python虛擬環(huán)境venv的使用方法

    venv 是 Python 里的一個(gè)標(biāo)準(zhǔn)工具,它的主要功能是幫助用戶管理和控制虛擬環(huán)境,venv 的使用方法其實(shí)非常簡(jiǎn)單,下面我將詳細(xì)介紹如何創(chuàng)建虛擬環(huán)境,如何激活虛擬環(huán)境,以及如何退出虛擬環(huán)境的操作步驟,需要的朋友可以參考下
    2024-03-03
  • Python中格式化字符串的方法總結(jié)

    Python中格式化字符串的方法總結(jié)

    字符串格式化是一項(xiàng)常見且重要的操作,用于動(dòng)態(tài)生成包含變量內(nèi)容的字符串,本文為大家整理一些常用的格式化字符串方法,希望對(duì)大家有所幫助
    2024-10-10
  • Python文件操作之合并文本文件內(nèi)容示例代碼

    Python文件操作之合并文本文件內(nèi)容示例代碼

    眾所周知Python文件處理操作方便快捷,下面這篇文章主要給大家介紹了關(guān)于Python文件操作之合并文本文件內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • python實(shí)現(xiàn)自動(dòng)清理文件夾舊文件

    python實(shí)現(xiàn)自動(dòng)清理文件夾舊文件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)清理文件夾舊文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評(píng)論

宣城市| 邳州市| 罗平县| 尤溪县| 高雄市| 洛川县| 岚皋县| 渑池县| 徐闻县| 丹凤县| 高雄县| 兴山县| 芜湖县| 康平县| 米易县| 深水埗区| 宁海县| 石门县| 唐河县| 安化县| 郧西县| 济南市| 嘉祥县| 宕昌县| 德安县| 永修县| 清徐县| 鹿邑县| 银川市| 新化县| 阳朔县| 芒康县| 新巴尔虎左旗| 松原市| 绵阳市| 滨海县| 长治市| 五常市| 调兵山市| 西和县| 淮阳县|