日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 计算机视觉(十三)—— 图像的傅里叶变换

發布時間:2025/3/19 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 计算机视觉(十三)—— 图像的傅里叶变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考的一些文章以及論文我都會給大家分享出來 —— 鏈接就貼在原文,論文我上傳到資源中去,大家可以免費下載學習,如果當天資源區找不到論文,那就等等,可能正在審核,審核完后就可以下載了。大家一起學習,一起進步!加油!!??

目錄

前言

(1)基本概念

(2)讀取圖像信息

1. 傅里葉變換

(1)基本概念

(2)numpy實現

(3)OpevCV實現?

2. 傅里葉逆變換

(1)基本概念

(2)代碼實現

結束語


前言

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

""" Author:XiaoMa date:2021/11/7 """ import cv2 import matplotlib.pyplot as plt import numpy as np#讀取圖像信息 from numpy.fft import ifftshiftimg0 = 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) #轉化為灰度圖 h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img2) cv2.waitKey(delay = 0) #將圖像轉化到頻域內并繪制頻譜圖 ##numpy實現 plt.rcParams['font.family'] = 'SimHei' #將全局中文字體改為黑體 f = np.fft.fft2(img2) fshift = np.fft.fftshift(f) #將0頻率分量移動到圖像的中心 magnitude_spectrum0 = 20*np.log(np.abs(fshift)) #傅里葉逆變換 #Numpy實現 ifshift = np.fft.ifftshift(fshift) # 將復數轉為浮點數進行傅里葉頻譜圖顯示 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 = ['原始圖像', '經過移動后的頻譜圖', '逆變換得到的頻譜圖', '逆變換得到的原圖'] 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實現 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)基本概念

? ? ? ? 一般我們觀察信號是直接在時域內(聲音信號)或者空間內(圖像)對其進行分析,這樣雖然符合常理,但信號中的一些有用的條件就不會被我們考慮進去,從而達不到分析的效果,所以我們要將信號轉化到其他的一些變換域中進行分析,對于信號轉化的重要性,可以參考我之前的文章:

數字信號處理 3.1 — 信號的變換域分析的重要性

(2)讀取圖像信息

本系列文章經典操作:

""" 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) #轉化為灰度圖 h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img1) cv2.waitKey(delay = 0)

得到圖像信息如下:

540 960?

1. 傅里葉變換

代碼參考:OpenCV官網

(1)基本概念

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

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

(2)numpy實現

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

(3)OpevCV實現?

#OpenCV實現 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)基本概念

? ? ? ?前面提到,經過傅里葉變換圖像可以轉化到頻域內,那么經過傅里葉逆變換,圖像肯定能從頻域內轉化到時域中,所以傅里葉逆變換就是將信號從頻域轉化到時域的工具

(2)代碼實現

此處的代碼接上面的使用 Numpy 進行傅里葉變換

#傅里葉逆變換 #Numpy實現 ifshift = np.fft.ifftshift(fshift) # 將復數轉為浮點數進行傅里葉頻譜圖顯示 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 = ['原始圖像', '經過移動后的頻譜圖', '逆變換得到的頻譜圖', '逆變換得到的原圖'] 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()

?

結束語

? ? ? ? 圖像的傅里葉變換無非是就包括正變換、逆變換兩種情況,在本文中沒有介紹頻域內的高通和低通濾波,在后面會加以介紹,比起使用代碼實現傅里葉變換,了解它的本質是更加重要的,所以建議小伙伴們點進前面分享的那個鏈接進行學習,加油!

總結

以上是生活随笔為你收集整理的Python 计算机视觉(十三)—— 图像的傅里叶变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男生操女生网站 | www.xxx.国产 | 国产伦精品一区二区三区高清 | 久久久高清免费视频 | 亚洲成人系列 | aaaaav| 亚洲伦理在线 | 四虎在线免费播放 | 免费看黄色三级三级 | 人妻 校园 激情 另类 | 91娇羞白丝网站 | 久久久久久久久久久久电影 | 白白色视频在线 | 操日本女人 | 亚洲乱码中文字幕久久孕妇黑人 | 国产精品丝袜一区 | 巨胸大乳www视频免费观看 | 超碰碰碰碰 | av观看网站 | 韩国av电影网站 | 欧美综合第一页 | 伊人激情综合网 | 国产一二三精品 | 免费成人在线看 | 天堂网在线观看视频 | 在线观看欧美精品 | 殴美黄色大片 | 成年人激情视频 | 青青草99 | 动漫一区二区三区 | 黄色1级片| 亚洲97在线| 亚洲黄色片免费看 | 无码日韩精品一区二区 | 国产女人呻吟高潮抽搐声 | 欧美激情亚洲综合 | 制服下的诱惑暮生 | 国产69精品久久久久久 | 天天操夜夜操狠狠操 | 亚洲第一黄色 | 欧洲性猛交 | 日韩av中文字幕在线播放 | 制服 丝袜 激情 欧洲 亚洲 | 老色驴综合网 | 在线国产日韩 | 亚洲精品成人a | 国产在线视频一区二区 | 亚洲最大av网 | 国产成人一区二区在线 | 亚洲色图欧美日韩 | 天天色天天爱 | 九九精品视频在线 | 久久久久久久国产精品美女 | 成人刺激视频 | 久久国产在线视频 | 欧美日本成人 | 色图一区 | 天天干人人 | xxx黄色片 | 欧美久久久久久久久中文字幕 | 国产最爽的乱淫视频国语对白 | 久久久久久国产精品视频 | 人与拘一级a毛片 | 色婷婷久久 | 久久视频一区二区 | 爱插美女网 | 精品久久久久久无码中文野结衣 | 亚洲情涩| 亚洲激情综合 | 日韩三级欧美 | 国产亚洲精久久久久久无码苍井空 | 欧美人狂配大交3d | 亚洲午夜精品久久久久久app | 97在线看 | 人妻精品一区二区在线 | 无码成人精品区在线观看 | 久久www视频| 日韩精品中文字幕在线 | 韩国伦理片在线看 | 青青草久久伊人 | 在线观看亚洲a | 欧美中文字幕第一页 | 国产a线 | 在线黄色观看 | 国产丝袜自拍 | 色婷婷一区 | 亚洲第一精品在线 | 欧美女优一区 | 日韩黄色在线观看 | 中文字幕福利视频 | 男人的天堂99 | 中国极品少妇xxxxx | 青草99 | 一级黄网站 | 国产一区二区不卡视频 | 色视频免费在线观看 | 少妇视频一区 | 亚洲一区二区精品在线观看 | 日韩日b|