国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

opencv python 傅里葉變換的使用

2020-02-15 22:28:12
字體:
來源:轉載
供稿:網友

理論

傅立葉變換用于分析各種濾波器的頻率特性,對于圖像,2D離散傅里葉變換(DFT)用于找到頻域.快速傅里葉變換(FFT)的快速算法用于計算DFT.

于一個正弦信號,x(t)=Asin(2πft),我們可以說 f 是信號的頻率,如果它的頻率域被接受,我們可以看到 f 的峰值.如果信號被采樣來形成一個離散信號,我們得到相同的頻率域,但是在[−π,π] or [0,2π]范圍內是周期性的 (or [0,N] for N-point DFT).

可以將圖像視為在兩個方向上采樣的信號.因此,在X和Y方向上進行傅里葉變換可以得到圖像的頻率表示.

更直觀的是,對于正弦信號,如果振幅在短時間內變化得非常快,你可以說它是一個高頻信號.如果它變化緩慢,它是一個低頻信號,可以把同樣的想法擴展到圖片上,邊和噪聲是圖像中的高頻內容,如果振幅沒有很大的變化,那就是低頻分量.

Numpy中的傅里葉變換

np.fft.fft2()

第一個參數是輸入圖像,它是灰度圖像

第二個參數是可選的,它決定了輸出數組的大小,如果它大于輸入圖像的大小,則輸入圖像在計算FFT之前填充了0.如果它小于輸入圖像,輸入圖像將被裁剪,如果沒有參數傳遞,輸出數組的大小將與輸入相同.

一旦得到結果,零頻率分量(DC分量)將位于左上角。 如果要將其置于中心位置,則需要在兩個方向上將結果移動N2.np.fft.fftshift(),一旦你找到頻率變換,你就能找到大小譜.

代碼:

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('img.jpg',0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)magnitude_spectrum = 20*np.log(np.abs(fshift))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()

可以在中心看到更多的白色區域,表示低頻率的內容更多.

現在可以在頻域做一些運算,比如高通濾波和重建圖像也就是找到逆DFT,只需用一個矩形窗口大小的60x60來移除低頻部分,使用np.fft.ifftshift()應用反向移動,使DC組件再次出現在左上角,然后使用np.ifft2()函數找到反FFT,結果將會是一個復數,可以取它的絕對值.

代碼:

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('img.jpg',0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)magnitude_spectrum = 20*np.log(np.abs(fshift))rows, cols = img.shapecrow,ccol = int(rows/2) , int(cols/2)fshift[crow-30:crow+30, ccol-30:ccol+30] = 0f_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.subplot(221),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(222),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(223),plt.imshow(img_back)plt.title('Result in JET'), plt.xticks([]), plt.yticks([])plt.subplot(224),plt.imshow(img_back, cmap = 'gray')plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])plt.show()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 茂名市| 厦门市| 祁东县| 富宁县| 亚东县| 盘锦市| 冷水江市| 高青县| 左云县| 建宁县| 新安县| 项城市| 达日县| 蚌埠市| 宣城市| 九江县| 成安县| 大连市| 长宁区| 和政县| 申扎县| 罗定市| 房山区| 内黄县| 盐源县| 宣威市| 呼图壁县| 尼玛县| 习水县| 科技| 阜南县| 满城县| 宁武县| 建瓯市| 茂名市| 靖安县| 长阳| 古丈县| 秀山| 富裕县| 延长县|