欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換

 更新時(shí)間:2021年06月09日 14:11:54   作者:一天一篇Python庫(kù)  
在OpenCV中,我們通過(guò)cv2.dft()來(lái)實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來(lái)實(shí)現(xiàn)逆傅里葉變換。本文就詳細(xì)的介紹一下這兩種用法,感興趣的可以了解一下

前言

在前一篇的博文中,我們?cè)敿?xì)講解了傅里葉變換的原理以及使用Numpy庫(kù)實(shí)現(xiàn)傅里葉變換。但是其實(shí)OpenCV有直接實(shí)現(xiàn)傅里葉變換的函數(shù)。

在OpenCV中,我們通過(guò)cv2.dft()來(lái)實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來(lái)實(shí)現(xiàn)逆傅里葉變換。兩個(gè)函數(shù)的定義如下:

cv2.dft(原始圖像,轉(zhuǎn)換標(biāo)識(shí))

這里的原始圖像必須是np.float32格式。所以,我們首先需要使用cv2.float32()函數(shù)將圖像轉(zhuǎn)換。而轉(zhuǎn)換標(biāo)識(shí)的值通常為cv2.DFT_COMPLEX_OUTPUT,用來(lái)輸出一個(gè)復(fù)數(shù)陣列。

經(jīng)過(guò)cv2.dft()函數(shù)的變換后,我們會(huì)得到原始圖像的頻譜信息。此時(shí)零分量與Numpy庫(kù)實(shí)現(xiàn)一樣都不在中心位置。這里我們還是需要使用numpy.fft.fftshift()函數(shù)將其移動(dòng)到中間位置。

需要特別注意的是,函數(shù)cv2.dft()返回值是雙通道的,第1個(gè)通道是結(jié)果的實(shí)數(shù)部分,第2個(gè)通道是結(jié)果的虛數(shù)部分。使用numpy.fft.fftshift()函數(shù)處理后,頻譜圖像還只是一個(gè)由實(shí)部和虛部構(gòu)成的值,要顯示出來(lái),要使用到另一個(gè)函數(shù)cv2.magnitude()。

該函數(shù)的定義如下:

cv2.magnitude(參數(shù)1,參數(shù)2)

參數(shù)1:浮點(diǎn)型x坐標(biāo)值,也就是實(shí)部

參數(shù)2:浮點(diǎn)型y坐標(biāo)值,也就是虛部,它必須和參數(shù)1具有相同的大?。╯ize)

得到頻譜圖像的幅度之后,還需要將幅度映射到灰度空間[0,255]內(nèi),使其以灰度圖像顯示出來(lái)。與前篇博文一樣,使用20*np.log(cv2.magnitude())。

實(shí)現(xiàn)傅里葉變換

下面,我們來(lái)通過(guò)上述OpenCV函數(shù)來(lái)實(shí)現(xiàn)傅里葉變換,并顯示其頻譜信息。

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("4.jpg", 0)

dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
dftShift = np.fft.fftshift(dft)
result = 20 * np.log(cv2.magnitude(dftShift[:, :, 0], dftShift[:, :, 1]))


plt.subplot(121)
plt.imshow(img, cmap="gray")
plt.axis('off')
plt.subplot(122)
plt.imshow(result, cmap="gray")
plt.axis('off')
plt.show()

運(yùn)行之后,顯示效果與前篇博文一樣。

效果

實(shí)現(xiàn)逆傅里葉變換

還是與上篇博文一樣,這里我們過(guò)濾圖像的頻譜信息,這里我們過(guò)濾低頻信息。

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("4.jpg", 0)

dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
dftShift = np.fft.fftshift(dft)
result = 20 * np.log(cv2.magnitude(dftShift[:, :, 0], dftShift[:, :, 1]))

rows,cols=img.shape
rows_half,cols_half=int(rows/2),int(cols/2)
mask=np.zeros((rows,cols,2),dtype=np.uint8)
mask[rows_half-30:rows_half+30,cols_half-30:cols_half+30]=1


#逆傅里葉變換
fShift=dftShift*mask
ishift=np.fft.ifftshift(fShift)
iimg=cv2.idft(ishift)
iimg=cv2.magnitude(iimg[:,:,0],iimg[:,:,1])


plt.subplot(121)
plt.imshow(img, cmap="gray")
plt.axis('off')
plt.subplot(122)
plt.imshow(iimg, cmap="gray")
plt.axis('off')
plt.show()

運(yùn)行之后,效果如下:

低頻過(guò)濾

可以看到過(guò)濾低頻信息后,圖像的邊緣信息被消弱了。

到此這篇關(guān)于OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換的文章就介紹到這了,更多相關(guān)OpenCV 傅里葉變換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python django生成遷移文件的實(shí)例

    python django生成遷移文件的實(shí)例

    今天小編就為大家分享一篇python django生成遷移文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python OpenCV去除字母后面的雜線(xiàn)操作

    Python OpenCV去除字母后面的雜線(xiàn)操作

    這篇文章主要介紹了Python OpenCV去除字母后面的雜線(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • windows下安裝Python和pip終極圖文教程

    windows下安裝Python和pip終極圖文教程

    本文希望提供傻瓜式的教程,能夠令讀者成功安裝Python和pip,需要的朋友可以參考下
    2017-03-03
  • python 實(shí)現(xiàn)插入排序算法

    python 實(shí)現(xiàn)插入排序算法

    python 插入排序算法,需要的朋友可以參考下
    2012-06-06
  • python正則表達(dá)式實(shí)例代碼

    python正則表達(dá)式實(shí)例代碼

    這篇文章主要介紹了python正則表達(dá)式的一些實(shí)例代碼,方便學(xué)習(xí)python的朋友,需要的朋友可以參考下
    2020-03-03
  • Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行)

    Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行)

    這篇文章主要介紹了Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python之super的使用小結(jié)

    python之super的使用小結(jié)

    這篇文章主要介紹了python之super的使用小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Python實(shí)現(xiàn)AI自動(dòng)玩俄羅斯方塊游戲

    Python實(shí)現(xiàn)AI自動(dòng)玩俄羅斯方塊游戲

    提到《俄羅斯方塊》,那真是幾乎無(wú)人不知無(wú)人不曉。其歷史之悠久,可玩性之持久,能手輕輕一揮,吊打一大波游戲。本文將利用Python實(shí)現(xiàn)俄羅斯方塊進(jìn)階版—AI自動(dòng)玩俄羅斯方塊,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • 使用Python獲取Word文檔關(guān)鍵信息

    使用Python獲取Word文檔關(guān)鍵信息

    計(jì)算 Word 文檔的頁(yè)數(shù)、字?jǐn)?shù)等信息是出版、學(xué)術(shù)和內(nèi)容管理等領(lǐng)域的一項(xiàng)基本任務(wù),本文介紹了使用Python直接獲取Word文檔頁(yè)數(shù)、字?jǐn)?shù)、段落數(shù)、節(jié)數(shù)等信息的方法,希望對(duì)大家有所幫助
    2024-03-03
  • selenium自動(dòng)化測(cè)試入門(mén)實(shí)戰(zhàn)

    selenium自動(dòng)化測(cè)試入門(mén)實(shí)戰(zhàn)

    這篇文章主要介紹了selenium自動(dòng)化測(cè)試入門(mén)實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論