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

基于Python實(shí)現(xiàn)圖像的傅里葉變換

 更新時(shí)間:2021年12月17日 11:51:25   作者:一馬歸一碼  
傅里葉變換是一種函數(shù)在空間域和頻率域的變換,從空間域到頻率域的變換是傅里葉變換,而從頻率域到空間域是傅里葉的反變換。這篇文章主要為大家介紹的是通過Python實(shí)現(xiàn)圖像的傅里葉變換,感興趣的可以了解一下

前言

首先是本文總體代碼,改一下圖像的讀取路徑就可以運(yùn)行了,但我還是建議大家先看后面的步驟一行行敲代碼,這樣效果更好:

"""
Author:XiaoMa
date:2021/11/7
"""
import cv2
import matplotlib.pyplot as plt
import numpy as np
 
#讀取圖像信息
from numpy.fft import ifftshift
 
img0 = cv2.imread("E:\From Zhihu\For the desk\cvthirteen2.jpg")
img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)               #轉(zhuǎn)化為灰度圖
h, w = img1.shape[:2]
print(h, w)
cv2.namedWindow("W0")
cv2.imshow("W0", img2)
cv2.waitKey(delay = 0)
#將圖像轉(zhuǎn)化到頻域內(nèi)并繪制頻譜圖
##numpy實(shí)現(xiàn)
plt.rcParams['font.family'] = 'SimHei'       #將全局中文字體改為黑體
f = np.fft.fft2(img2)
fshift = np.fft.fftshift(f)   #將0頻率分量移動(dòng)到圖像的中心
magnitude_spectrum0 = 20*np.log(np.abs(fshift))
#傅里葉逆變換
#Numpy實(shí)現(xiàn)
ifshift = np.fft.ifftshift(fshift)
# 將復(fù)數(shù)轉(zhuǎn)為浮點(diǎn)數(shù)進(jìn)行傅里葉頻譜圖顯示
ifimg = np.log(np.abs(ifshift))
if_img = np.fft.ifft2(ifshift)
origin_img = np.abs(if_img)
imggroup = [img2, magnitude_spectrum0, ifimg, origin_img]
titles0 = ['原始圖像', '經(jīng)過移動(dòng)后的頻譜圖', '逆變換得到的頻譜圖', '逆變換得到的原圖']
for i in range(4):
    plt.subplot(2, 2, i + 1)
    plt.xticks([])                               #除去刻度線
    plt.yticks([])
    plt.title(titles0[i])
    plt.imshow(imggroup[i], cmap = 'gray')
plt.show()
##OpenCV實(shí)現(xiàn)
dft = cv2.dft(np.float32(img2), flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
magnitude_spectrum1 = 20*np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
plt.subplot(121), plt.imshow(img2, cmap = 'gray')
plt.title('原圖'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum1, cmap = 'gray')
plt.title('頻譜圖'), plt.xticks([]), plt.yticks([])
plt.show()

(1)基本概念

一般我們觀察信號是直接在時(shí)域內(nèi)(聲音信號)或者空間內(nèi)(圖像)對其進(jìn)行分析,這樣雖然符合常理,但信號中的一些有用的條件就不會(huì)被我們考慮進(jìn)去,從而達(dá)不到分析的效果,所以我們要將信號轉(zhuǎn)化到其他的一些變換域中進(jìn)行分析。

(2)讀取圖像信息

本系列文章經(jīng)典操作:

"""
Author:XiaoMa
date:2021/11/7
"""
import cv2
import matplotlib.pyplot as plt
import numpy as np
 
#讀取圖像信息
img0 = cv2.imread("E:\From Zhihu\For the desk\cvthirteen2.jpg")
img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)               #轉(zhuǎn)化為灰度圖
h, w = img1.shape[:2]
print(h, w)
cv2.namedWindow("W0")
cv2.imshow("W0", img1)
cv2.waitKey(delay = 0)

得到圖像信息如下:

540 960?

1. 傅里葉變換

代碼參考:OpenCV官網(wǎng)

(1)基本概念

當(dāng)我們描述一段聲音時(shí),我們不僅會(huì)說它的音量的大小如何,還有可能會(huì)說它的頻率是高的還是低的,那么我們該怎么理解頻率這個(gè)概念呢?以前學(xué)習(xí)三角函數(shù)時(shí)我們被告知每一個(gè)正弦信號有它的固定的頻率,就是它的周期的倒數(shù)。那么什么是頻域呢?我們也接觸過其他形狀的波形,比如方波、三角波等等,而這些不同形狀的波呢,就是用一個(gè)個(gè)頻率不相同的正弦波組成的,如果我們將那些不同頻率的正弦波按照它們的頻率大小排列起來,就得到了一個(gè)頻率軸(這是一維的),然后我們將各個(gè)頻率對應(yīng)的幅度值給它們對應(yīng)起來(就像xoy平面一樣)得到的二維的平面,就是頻域了。傅里葉變換就是將信號從時(shí)域轉(zhuǎn)化到頻域的一個(gè)工具。對于傅里葉變換中的的理解可以參考下面的圖片:

當(dāng)然如果你想更加深入的了解傅里葉變換,你可以按照圖片上的水印去搜索,他那里講的非常清晰。?

(2)numpy實(shí)現(xiàn)

#將圖像轉(zhuǎn)化到頻域內(nèi)并繪制頻譜圖
plt.rcParams['font.family'] = 'SimHei'       #將全局中文字體改為黑體
f = np.fft.fft2(img2)
fshift = np.fft.fftshift(f)       #將0頻率分量移動(dòng)到中心
magnitude_spectrum = 20*np.log(np.abs(fshift))
plt.xticks([])                               #除去刻度線
plt.yticks([])
plt.title("頻譜圖")
plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.show()

(3)OpevCV實(shí)現(xiàn)?

#OpenCV實(shí)現(xiàn)
dft = cv2.dft(np.float32(img2), flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
magnitude_spectrum1 = 20*np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
plt.subplot(121), plt.imshow(img2, cmap = 'gray')
plt.title('原圖'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum1, cmap = 'gray')
plt.title('頻譜圖'), plt.xticks([]), plt.yticks([])
plt.show()

2. 傅里葉逆變換

(1)基本概念

前面提到,經(jīng)過傅里葉變換圖像可以轉(zhuǎn)化到頻域內(nèi),那么經(jīng)過傅里葉逆變換,圖像肯定能從頻域內(nèi)轉(zhuǎn)化到時(shí)域中,所以傅里葉逆變換就是將信號從頻域轉(zhuǎn)化到時(shí)域的工具。

(2)代碼實(shí)現(xiàn)

此處的代碼接上面的使用 Numpy 進(jìn)行傅里葉變換

#傅里葉逆變換
#Numpy實(shí)現(xiàn)
ifshift = np.fft.ifftshift(fshift)
# 將復(fù)數(shù)轉(zhuǎn)為浮點(diǎn)數(shù)進(jìn)行傅里葉頻譜圖顯示
ifimg = np.log(np.abs(ifshift))
if_img = np.fft.ifft2(ifshift)
origin_img = np.abs(if_img)
imggroup = [img2, magnitude_spectrum0, ifimg, origin_img]
titles0 = ['原始圖像', '經(jīng)過移動(dòng)后的頻譜圖', '逆變換得到的頻譜圖', '逆變換得到的原圖']
for i in range(4):
    plt.subplot(2, 2, i + 1)
    plt.xticks([])                               #除去刻度線
    plt.yticks([])
    plt.title(titles0[i])
    plt.imshow(imggroup[i], cmap = 'gray')
plt.show()

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

相關(guān)文章

  • Python中AI圖像識別實(shí)現(xiàn)身份證識別

    Python中AI圖像識別實(shí)現(xiàn)身份證識別

    圖像識別說白了就是把一張照片上面的文字進(jìn)行提取,提供工作效率,本文主要介紹了Python 身份證識別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python給list排序的簡單方法

    python給list排序的簡單方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python給list排序的簡單方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-12-12
  • python3如何去除字符串中的特殊字符

    python3如何去除字符串中的特殊字符

    這篇文章主要介紹了python3如何去除字符串中的特殊字符,在平時(shí)處理字符串的時(shí)候,經(jīng)常會(huì)遇到字符串中夾雜著我們不希望看到的特殊字符,那么如何處理這些特殊字符呢,今天就跟著小編來看看吧
    2023-04-04
  • python修改FTP服務(wù)器上的文件名

    python修改FTP服務(wù)器上的文件名

    這篇文章主要介紹了python修改FTP服務(wù)器上的文件名,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中的 any() 函數(shù)和 all() 函數(shù)

    Python中的 any() 函數(shù)和 all() 函數(shù)

    這篇文章主要介紹了Python中的 any() 函數(shù)和 all() 函數(shù),文章基于Python的相關(guān)資料展開對 any 和 all() 函數(shù)的語法詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Python 多線程處理任務(wù)實(shí)例

    Python 多線程處理任務(wù)實(shí)例

    這篇文章主要介紹了Python 多線程處理任務(wù),下面文章利用一個(gè)真實(shí)實(shí)例圍繞Python 多線程處理任務(wù)的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • python對視頻畫框標(biāo)記后保存的方法

    python對視頻畫框標(biāo)記后保存的方法

    今天小編就為大家分享一篇python對視頻畫框標(biāo)記后保存的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python實(shí)現(xiàn)密鑰密碼(加解密)實(shí)例詳解

    Python實(shí)現(xiàn)密鑰密碼(加解密)實(shí)例詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)密鑰密碼(加解密),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Pytorch損失函數(shù)nn.NLLLoss2d()用法說明

    Pytorch損失函數(shù)nn.NLLLoss2d()用法說明

    這篇文章主要介紹了Pytorch損失函數(shù)nn.NLLLoss2d()用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python中openpyxl和xlsxwriter對Excel的操作方法

    python中openpyxl和xlsxwriter對Excel的操作方法

    這篇文章主要介紹了python中openpyxl和xlsxwriter對Excel的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評論

乌海市| 芜湖市| 定南县| 陇川县| 微博| 通榆县| 婺源县| 庆云县| 新乡县| 长丰县| 大方县| 万盛区| 神农架林区| 广灵县| 贡山| 湖北省| 右玉县| 洛隆县| 淮阳县| 图们市| 玛沁县| 平泉县| 永州市| 乾安县| 那曲县| 柳河县| 贵港市| 互助| 吉首市| 丹凤县| 东乡县| 河北省| 东台市| 白水县| 英超| 江门市| 沙河市| 叙永县| 凤山市| 辽中县| 鄄城县|