Opencv之傅利葉變換

2021-10-02 05:09:22 字數 2475 閱讀 2513

想要了解什麼是傅利葉變換的,牆裂推薦這篇文章:傅利葉變換

import numpy as np

import cv2

import matplotlib.pyplot as plt

# 載入

)# 將畫素從整型轉換到浮點型

img_float32 = np.float32(img)

# 傅利葉變換--時域->頻域

dft = cv2.dft(img_float32, flags=cv2.dft_complex_output)

# 將結果轉換到中心位置

dft_shift = np.fft.fftshift(dft)

# 得到灰度圖能表示的形式

magnitude_spectrum =

20*np.log(cv2.magnitude(dft_shift[:,

:,0]

, dft_shift[:,

:,1]

))# 展示結果

plt.subplot(

121)

,plt.imshow(img, cmap =

'gray'

)plt.title(

'input image'

), plt.xticks(

), plt.yticks(

)plt.subplot(

122)

,plt.imshow(magnitude_spectrum, cmap =

'gray'

)plt.title(

'magnitude spectrum'

), plt.xticks(

), plt.yticks(

)plt.show(

)

傅利葉變換將轉化到頻域的目的往往是濾波,這分為低通濾波和高通濾波。

import numpy as np

import cv2

import matplotlib.pyplot as plt

# 載入

)# 將畫素從整型轉換到浮點型

img_float32 = np.float32(img)

# 傅利葉變換--時域->頻域

dft = cv2.dft(img_float32, flags=cv2.dft_complex_output)

# 將結果轉換到中心位置

dft_shift = np.fft.fftshift(dft)

# 獲得中心位置

rows, cols = img.shape

crow, ccol =

int(rows/2)

,int

(cols/2)

# 低通濾波器

mask = np.zeros(

(rows, cols,2)

, np.uint8)

mask[crow-

30:crow+

30, ccol-

30:ccol+30]

=1# 濾波

fshift = dft_shift*mask

# 將結果轉換回原位置

f_ishift = np.fft.ifftshift(fshift)

# 傅利葉變換--頻域->時域

img_back = cv2.idft(f_ishift)

# 得到灰度圖能表示的形式

img_back = cv2.magnitude(img_back[:,

:,0]

, img_back[:,

:,1]

)# 展示結果

plt.subplot(

121)

,plt.imshow(img, cmap =

'gray'

)plt.title(

'input image'

), plt.xticks(

), plt.yticks(

)plt.subplot(

122)

,plt.imshow(img_back, cmap =

'gray'

)plt.title(

'result'

), plt.xticks(

), plt.yticks(

)plt.show(

)

高通濾波的實現方法與低通濾波一模一樣,只是在設定濾波器的時候將上面**中的 # 低通濾波器 處改為:

# 高通濾波器

mask = np.ones(

(rows, cols,2)

, np.uint8)

mask[crow-

30:crow+

30, ccol-

30:ccol+30]

=0

opencv之離散傅利葉變換

c intgetoptimaldftsize intvecsize int cv getoptimaldftsize int size0 returnoptimaldftsizetab b optimaldftsizetab定義在namespace cv中,裡邊的數值為2 x 3 y 5 z sta...

OpenCV 傅利葉變換

我們生活在時間的世界中,早上7 00起來吃早飯,8 00去擠地鐵,9 00開始上班。以時間為參照就是時域分析。但是在頻域中一切都是靜止的!高頻 變化劇烈的灰度分量,例如邊界 低頻 變化緩慢的灰度分量,例如一片大海 低通濾波器 只保留低頻,會使得影象模糊 高通濾波器 只保留高頻,會使得影象細節增強 o...

Opencv離散傅利葉變換

include include includeusing namespace std using namespace cv int main mat compleximage merge plannes,2,compleximage 進行離散傅利葉變換 dft compleximage,comple...