頻率域濾波 2 高通濾波

2021-09-24 10:04:32 字數 2037 閱讀 6318

//快速傅利葉變換

void fft2image(inputarray _src, outputarray _dst)

//求傅利葉變換的幅度譜 amplitude spectrum

void amplitudespectrum(inputarray _srcfft, outputarray _dstspectrum)

//傅利葉譜的灰度級顯示

mat grayspectrum(mat spectrum)

//求相位譜 phase spectrum

mat phasespectrum(mat _srcfft)

} return phase;

}//高通濾波器

mat ihpfilter(mat &src, mat &f, point maxloc, int type, int radius)

} /*-- 第六步:低通濾波器和影象快速傅利葉變換點乘 --*/

f_ihpfilter.create(f.size(), f.type());

for (int r = 0; r < f_ihpfilter.rows; r++) }

//低通傅利葉變換的傅利葉譜

amplitudespectrum(f_ihpfilter, fihpspectrum);

//低通傅利葉譜的灰度級的顯示

fihpspectrum = grayspectrum(fihpspectrum);

/* -- 第

七、八步:對低通傅利葉變換執行傅利葉逆變換,並只取實部 -- */

dft(f_ihpfilter, result, dft_scale + dft_inverse + dft_real_output);

/* -- 第九步:同乘以(-1)^(x+y) -- */

for (int r = 0; r < result.rows; r++) }

//注意將結果轉換 cv_8u 型別

result.convertto(result, cv_8uc1, 1.0, 0);

/* -- 第十步:擷取左上部分,大小等於輸入影象的大小 --*/

result = result(rect(0, 0, src.cols, src.rows)).clone();

return result;

}void main()

} /* -- 第

三、四步:補零和快速傅利葉變換 -- */

mat f;//影象的快速傅利葉變換

fft2image(fi, f);

//傅利葉譜

mat amplspec;

amplitudespectrum(f, amplspec);

//傅利葉譜的灰度級顯示

mat spectrum = grayspectrum(amplspec);

//找到傅利葉譜的最大值的座標

point maxloc;

minmaxloc(spectrum, null, null, null, &maxloc);

mat result;

//低通

//result = lpfilter(image, f, maxloc, 0, 25);

//高通

頻率域濾波 3 帶通濾波

快速傅利葉變換 void fft2image inputarray src,outputarray dst 求傅利葉變換的幅度譜 amplitude spectrum void amplitudespectrum inputarray srcfft,outputarray dstspectrum 傅...

空間域 頻域 高通濾波 低通濾波

最近由於深度學習做影象,要看影象處理的知識,看了幾篇部落格,本文的圖和大部分的文字均來自於那些參考的部落格,在這把知識點總結了一下 通過 觀察灰度分布來描述一幅影象 稱為空間域 觀察影象變化的頻率被 稱為頻域。頻域濾波 是在頻率域對影象做處理的一種方法。步驟如下 濾波器大小和頻譜大小相同,相乘即可得...

高通濾波與低通濾波公式

from 設 x n 為取樣資料 y n 為濾波結果 初始y 0 x 0 高通濾波 i從1到n 1迴圈操作 y i y i 1 x i x i 1 a 1,迴圈乘就不斷弱化上次濾波的值,使取樣間的差值相對強化,a 1時沒有濾波效果。在不斷變弱上次濾波值的基礎上,增加本次取樣值與上次取樣值之間的變化。...