//快速傅利葉變換
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時沒有濾波效果。在不斷變弱上次濾波值的基礎上,增加本次取樣值與上次取樣值之間的變化。...