一、傅里葉分析基本概念
傅里葉分析是指用正弦波或餘弦波的集合將一個周期信號分解成若干項具有不同振幅、頻率和初相位的正弦波或餘弦波的加權組合的過程。而傅里葉變換則是將非周期信號也分解成為一系列正弦波或餘弦波,它是在傅里葉分析的基礎上發展起來的。
傅里葉分析的基本思想是“複雜的波形由簡單的波形疊加組成”。傅里葉將任何周期函數都表示成一系列正弦和餘弦函數的疊加。也即可理解為將一個存在時間和空間上的信號分解為它的頻域或是頻譜的集合。這其中就包含了傅里葉變換、傅里葉係數、傅里葉級數、快速傅里葉變換等。
二、傅里葉級數
傅里葉級數是指在周期T的函數f(x)可以表達為如下三角級數:
f(x) = a0 + Σ(a_n cos(nωx) + b_n sin(nωx)) n=1
其中,a0、an、bn都是常數,其計算公式如下:
a0 = (1/T)* ∫(-T/2到T/2)f(x)dx an = (2/T)* ∫(-T/2到T/2)f(x)cos(nωx)dx bn = (2/T)* ∫(-T/2到T/2)f(x)sin(nωx)dx
可以發現傅里葉級數是傅里葉分析的特殊情況,即函數是周期函數的情況。其實任何正常的函數都可以看成這裡的特殊情況,因此傅里葉級數是傅里葉分析的基礎。
三、傅里葉變換
如果一個函數是非周期的,那麼就無法使用傅里葉級數來表示,這時傅里葉變換就派上用場了。傅里葉變換是將信號從時域(也即時間)轉換到頻域的過程,即對時域信號進行傅里葉變換之後,可以得到一組頻域下的係數,代表了不同頻率上的振幅和相角。
傅里葉變換可以用如下公式表示:
F(ω) = ∫(t從-∞到∞) f(t)e^{-iωt}dt
其中,F(ω)表示傅里葉變換後的頻域係數。求解過程比較複雜,需要對複雜積分有一定的了解。為了方便計算,傅里葉變換還有一種被稱為傅里葉積分的公式:
F(ω) = 1/(2π) * ∫(t從-∞到∞) f(t)e^{-iωt}dt f(t) = 1/(2π) * ∫(ω從-∞到∞) F(ω)e^{iωt}dω
四、傅里葉逆變換
傅里葉變換可以將時域信號轉換到頻域上,那麼是否可以將頻域上的信號還原回時域上呢?回答是可以的,這個就是傅里葉逆變換。
傅里葉逆變換同樣有一個公式可以表示:
f(t) = ∫(ω從-∞到∞) F(ω)e^{iωt}dω
其中,F(ω)表示頻域上的係數。
五、傅里葉變換在圖像處理中的應用
傅里葉變換在圖像處理中有着廣泛的應用。在圖像處理中,我們需要計算頻率分量,如低頻、中頻、高頻等,而這些正是傅里葉變換可以幫助我們計算得到的。另外,圖像壓縮、濾波器設計、圖像增強等都有着廣泛的應用。
下面,我們給出一個圖像處理中的傅里葉變換代碼示例:
import numpy as np import cv2 # 讀取原始圖像 img = cv2.imread('lena.jpg', 0) # 進行傅里葉變換 f = np.fft.fft2(img) # 將頻率為0的直流分量移到頻譜中心 fshift = np.fft.fftshift(f) # 構建振幅譜圖 magnitude_spectrum = 20*np.log(np.abs(fshift)) # 可視化振幅譜圖 cv2.imshow('magnitude_spectrum', magnitude_spectrum) # 構建高通濾波器(例如,去除低於閾值的頻率分量) rows, cols = img.shape crow, ccol = rows//2, cols//2 mask = np.zeros((rows,cols), np.uint8) mask[crow-30:crow+30, ccol-30:ccol+30] = 1 # 應用高通濾波器,並進行傅里葉逆變換 fshift *= mask f_ishift = np.fft.ifftshift(fshift) img_back = np.fft.ifft2(f_ishift) img_back = np.abs(img_back) # 可視化處理後的圖像 cv2.imshow('img_back', img_back) cv2.waitKey(0) cv2.destroyAllWindows()
原創文章,作者:PQTCZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331501.html