常用傅里葉變換詳解

一、傅里葉分析基本概念

傅里葉分析是指用正弦波或餘弦波的集合將一個周期信號分解成若干項具有不同振幅、頻率和初相位的正弦波或餘弦波的加權組合的過程。而傅里葉變換則是將非周期信號也分解成為一系列正弦波或餘弦波,它是在傅里葉分析的基礎上發展起來的。

傅里葉分析的基本思想是“複雜的波形由簡單的波形疊加組成”。傅里葉將任何周期函數都表示成一系列正弦和餘弦函數的疊加。也即可理解為將一個存在時間和空間上的信號分解為它的頻域或是頻譜的集合。這其中就包含了傅里葉變換、傅里葉係數、傅里葉級數、快速傅里葉變換等。

二、傅里葉級數

傅里葉級數是指在周期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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PQTCZ的頭像PQTCZ
上一篇 2025-01-16 15:47
下一篇 2025-01-20 14:10

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在數據分析、機器學習、圖像處理等很多領域都有廣泛的應用。Python序列分為三種:列表(list)、元組(tuple)和字符串(string)。…

    編程 2025-04-28
  • 上傳多媒體文件的常用方法——uploadmediabyurl

    uploadmediabyurl是一個非常常用的方法,它允許我們將本地的多媒體文件上傳到微信服務器上。 一、uploadmediabyurl的基本使用方法 要使用uploadmed…

    編程 2025-04-27
  • Python數據看板開發:常用的包及其使用

    隨着數據分析和可視化的需求日漸增長,數據看板作為一種高效展示複雜數據信息的工具應運而生。Python語言作為一種面向數據分析和科學計算的編程語言,在數據看板開發中有着廣泛的應用。本…

    編程 2025-04-27
  • Python常用庫

    Python是一種高級編程語言,擁有豐富的第三方包和工具,常用庫涵蓋了各種應用場景。在此,我們將從以下幾個方面對Python常用庫進行闡述: 一、數據分析 數據分析是Python的…

    編程 2025-04-27
  • Python在運維中的常用庫

    Python被廣泛應用於各種Web應用程序、數據分析、自動運維、AI應用等領域。在運維領域,Python成為了最常用的編程語言之一。在本文中,我們將會討論Python運維中常用的庫…

    編程 2025-04-27
  • Python常用斷言函數用法介紹

    本文將詳細介紹Python中常用的斷言函數,讓大家了解這些函數的作用及使用方法,以便於進行代碼測試和調試。 一、assertEqual函數 1、assertEqual函數是Pyth…

    編程 2025-04-27
  • Python常用函數用法介紹

    Python是一種高級編程語言,擁有強大且易於使用的函數庫,可以輕鬆實現各種任務。本文將詳細介紹Python中常用的函數,包括字符串、數字、列表、字典、日期等方面的常見函數。 一、…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25

發表回復

登錄後才能評論