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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【图像处理】——傅里叶变换、DFT以及在图像上的应用

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【图像处理】——傅里叶变换、DFT以及在图像上的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

1、傅里葉變換

2、DFT

1)一維離散傅里葉變換:

離散傅里葉變換例子

2)二維離散傅里葉變換:

注:連續變換和離散變化學習心得

3、DFT在圖像上的應用

注意:二維和一維的區別

4、DFT在圖像上的意義

5、dft用Python實現、顯示傅里葉變換圖像、取高低頻操作

?


1、傅里葉變換

傅里葉變換就是將函數轉換成三角函數來表示,也可以通過歐拉公式將其用復數域表示

其實就是時域轉換為頻域,時域是指物理量關于時間的變化,頻率注重的是幅度和頻率

任何的周期函數都可以轉換成三角函數的和,也就是能夠解析出一個周期函數含有哪些頻率的三角函數信號

以下圖片摘自:https://daily.zhihu.com/story/3935067

如上圖經過越來越多的三角函數的疊加,使得三角函數疊加后的形狀越來越接近方形波

下圖則展示了疊加狀和分量的關系

下面這張圖很好的展示了傅里葉變換在頻域和時域之間的作用

2、DFT

參考:https://zhuanlan.zhihu.com/p/137509394

以下參考:https://blog.csdn.net/linmingan/article/details/51077437

1)一維離散傅里葉變換:

全是理論假把式,先上個例子:參考:https://blog.csdn.net/linmingan/article/details/51077437

離散傅里葉變換例子

1、列出離散傅里葉變換公式以及歐拉公式

離散傅里葉變換公式:

歐拉公式:

2、計算W

3、寫出離散變換式子

4、計算每個時域離散數字在頻率中對應的值

2)二維離散傅里葉變換:

常用于圖像處理,見下文

注:連續變換和離散變化學習心得

離散傅里葉變換就是根據離散傅里葉變換公式,將其在頻域上對應的值給計算出來,對于連續傅里葉變換道理也是一樣的,只是他是有無窮個點,準確來說是一條曲線,計算出在頻域上對應的曲線,就可以得到時域上任一點在頻域上的值

3、DFT在圖像上的應用

參考:https://blog.csdn.net/keith_bb/article/details/53389819

注意:二維和一維的區別

這里不能單純地將單獨拿出來,單獨拿出來的話根據歐拉公式就變成1,然后離散變換就變成了,這是錯誤的!!!因為會受到M,N的影響,不過可以進行下面的操作:

?

具體幅值圖像和實數圖像求解為:(也就是譜)

?????? 圖像是二維的,我們可以將其看成像素值關于兩坐標軸的離散函數,這樣的話就可以利用上面的二維離散公式也就是二維DFT來將圖像像素值進行傅里葉變換,然后就可以知道圖像像素值含有什么頻率的信號,通過對信號的抑制來對圖像進行濾波增強等。

4、DFT在圖像上的意義

參考:https://blog.csdn.net/enjoy_pascal/article/details/81478582

下面這個視頻講得很詳細建議看

參考視頻:https://www.bilibili.com/video/BV1mp4y1X73u?from=search&seid=10659753793963239089

參考:https://blog.csdn.net/u013921430/article/details/79934162

1)對于數字圖像這種離散的信號,頻率大小表示信號變化的劇烈程度或者說是信號變化的快慢。

2)頻率越大,變化越劇烈,頻率越小,信號越平緩,對應到圖像中,高頻信號往往是圖像中的邊緣信號和噪聲信號,而低頻信號圖像主體。

3)傅里葉變換得到的頻譜圖上的點與原圖像上的點之間不存在一一對應的關系。

4)低通濾波會讓圖像變得模糊,高通濾波獲得了圖像的邊緣和紋理信息。

5)從頻譜圖上可以看出,當將頻譜移頻到原點以后,圖像中心比較亮。在頻譜圖中,一個點的亮暗主要與包含這個頻率的數目有關,也就是說在空間域中包含這種頻率的點越多,頻譜圖中對應的頻率的位置越亮,而一般情況下,一幅圖像素值變換平緩的地方多,即低頻信號多也就是白色代表白色。

6)經過頻移后,頻率為0的部分,也就是傅里葉變換所得到的常量分量在圖像中心,由內往外擴散,點所代表的頻率越來越高

7)只取核心的小范圍內的低頻信號再將其轉換回到時域空間,已經能夠在一定程度是看到圖像的基本輪廓信息,這說明了圖像中的“能量”主要集中在低頻部分

8)可以把圖像的二維傅里葉變換得到的頻譜圖看作圖像的梯度分布圖(兩幅圖像中的點并不是一一對應),頻譜圖中的某一個點所表征的是空間域中某一個點與周圍點的灰度差異性,灰度差異越大,則頻率越大。當然時域中灰度變化劇烈的區域也包含了低頻信號,因為低頻信號是構成圖像信息的基礎。

一般步驟:

?

5、dft用Python實現、顯示傅里葉變換圖像、取高低頻操作

參考:

https://www.cnblogs.com/my-love-is-python/p/10406038.html

使用python(scipy和numpy)實現快速傅里葉變換(FFT)最詳細教程

這篇文章寫得非常的全面

完整代碼和圖片展示:

''' https://www.cnblogs.com/my-love-is-python/p/10406038.html 1. cv2.dft(img, cv2.DFT_COMPLEX_OUTPUT) 進行傅里葉變化參數說明: img表示輸入的圖片, cv2.DFT_COMPLEX_OUTPUT表示進行傅里葉變化的方法2. np.fft.fftshift(img) 將圖像中的低頻部分移動到圖像的中心參數說明:img表示輸入的圖片3. cv2.magnitude(x, y) 將sqrt(x^2 + y^2) 計算矩陣維度的平方根參數說明:需要進行x和y平方的數4.np.fft.ifftshift(img) # 進圖像的低頻和高頻部分移動到圖像原來的位置參數說明:img表示輸入的圖片5.cv2.idft(img) # 進行傅里葉的逆變化參數說明:img表示經過傅里葉變化后的圖片傅里葉變化:將圖像從空間域轉換為頻率域, 下面是傅里葉變化的公式 '''import numpy as np import cv2 as cv from matplotlib import pyplot as plt# 讀取圖片以及獲得圖像長寬 img = cv.imread(r'E:\gitHubProjects\Halcon_learn\detect_bottle_mouth\images\bottle_mouth_2\detectResult.jpg',0) rows, cols = img.shape# 離散傅里葉變換以及中心化 dft = cv.dft(np.float32(img),flags = cv.DFT_COMPLEX_OUTPUT) # dft變換,二通道 dft_shift = np.fft.fftshift(dft) # 中心化,二通道 # 進行取幅值操作,,1通道 dft_shift_magnitude = (cv.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1])) # 使用cv2.magnitude將實部和虛部轉換為實部,乘以20是為了使得結果更大,1通道 dft_shift_magnitude2 = 20 * np.log(cv.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))# 創建一個掩模,用于提取頻率中心區域的信號也就是低頻信號 # create a mask first, center square is 1, remaining all zeros crow, ccol = rows//2 , cols//2 mask = np.zeros((rows,cols,2),np.uint8) # 這里兩通道,一個通道裝實部,一個通道裝虛部 mask[crow-30:crow+31, ccol-30:ccol+31, :] = 1# apply mask and inverse DFT,反傅里葉變換及去中心化 fshift = dft_shift*mask # 相當于只是取了低頻信號,乘積,mask為1處留下,,二通道 f_ishift = np.fft.ifftshift(fshift) # 去中心化,,二通道 img_back = cv.idft(f_ishift) # 反傅里葉變換,,二通道 img_back = cv.magnitude(img_back[:,:,0],img_back[:,:,1]) # 取幅度值圖,也就是頻譜圖,,1通道# 顯示原圖像 plt.subplot(221),plt.imshow(img, cmap = 'gray') plt.title('Input Image'), plt.xticks([]), plt.yticks([]) # 顯示低通濾波后的圖像 plt.subplot(222),plt.imshow(img_back, cmap = 'gray') plt.title('Low Pass Filter'), plt.xticks([]), plt.yticks([]) # 顯示dft變換后的頻率圖像 plt.subplot(223),plt.imshow(dft_shift_magnitude,cmap='gray') # 顯示dft變換后的頻率圖像,乘以了20.np.log plt.subplot(224),plt.imshow(dft_shift_magnitude2,cmap='gray') plt.show()

?

?

???????

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【图像处理】——傅里叶变换、DFT以及在图像上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

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