如何在 OpenCV Python 中找到高斯和拉普拉斯濾波器的傅立葉變換?
我們應用傅立葉變換來分析各種濾波器的頻率特性。我們可以使用np.fft.fft2()對高斯和拉普拉斯濾波器應用傅立葉變換。我們使用np.fft.fftshift()將零頻率分量移到頻譜的中心。
步驟
要找到高斯或拉普拉斯濾波器的傅立葉變換,可以按照以下步驟操作:
匯入所需的庫。在下面所有 Python 示例中,所需的 Python 庫是OpenCV、Numpy和Matplotlib。請確保您已安裝它們。
定義高斯或拉普拉斯濾波器。
使用np.fft.fft2(filter)對上述定義的濾波器應用傅立葉變換。
呼叫np.fft.fftshift()將零頻率分量移到頻譜的中心。
應用對數變換並可視化濾波器和幅度譜。
讓我們看一些示例,以便更清楚地瞭解問題。
示例
在這個 Python 程式中,我們找到了高斯濾波器的傅立葉變換。我們還可視化了高斯濾波器和傅立葉變換後的高斯濾波器。
# import required libraries import cv2 import numpy as np from matplotlib import pyplot as plt # create a Gaussian filter x = cv2.getGaussianKernel(5,10) gaussian = x*x.T # apply Fourier transform on the Gaussian Filter fft_filter = np.fft.fft2(gaussian) # Shift zero-frequency component to the center of the spectrum fft_shift = np.fft.fftshift(fft_filter) # apply log transformation mag_spectrum = np.log(np.abs(fft_shift)+1) # visualize the Gaussian filter and transformed Gaussian Filter plt.subplot(1,2,1),plt.imshow(gaussian,cmap = 'gray') plt.title('Gaussian Filter'), plt.xticks([]), plt.yticks([]) plt.subplot(1,2,2),plt.imshow(mag_spectrum,cmap = 'gray') plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([]) plt.show()
輸出
上述 Python 程式將生成以下輸出視窗:

示例
在這個程式中,我們找到了拉普拉斯濾波器的傅立葉變換。我們還可視化了拉普拉斯濾波器和傅立葉變換後的拉普拉斯濾波器。
# import required libraries import cv2 import numpy as np from matplotlib import pyplot as plt # create a laplacian Filter laplacian=np.array([[0, 1, 0],[1,-4, 1],[0, 1, 0]]) # apply Fourier transform on the Laplacian Filter fft_filter = np.fft.fft2(laplacian) # shift zero-frequency component to the center of the spectrum fft_shift = np.fft.fftshift(fft_filter) # apply log transformation mag_spectrum = np.log(np.abs(fft_shift)+1) # visualize the Laplacian filter and transform Laplacian Filter plt.subplot(1,2,1),plt.imshow(laplacian,cmap = 'gray') plt.title('Laplacian Filter'), plt.xticks([]), plt.yticks([]) plt.subplot(1,2,2),plt.imshow(mag_spectrum,cmap = 'gray') plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([]) plt.show()
輸出
它將生成以下輸出視窗:

廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP