图像处理:频域滤波_Matlab
生活随笔
收集整理的這篇文章主要介紹了
图像处理:频域滤波_Matlab
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記:數字圖像處理——頻域濾波matlab
相角的改變對圖像影響很大。
所以在濾波的時候,不改變相角,即等同影響實部和虛部,稱之為零相移濾波器。
零相移濾波器必須是關于原點對稱的。
?
基礎代碼:
%% 定義函數:二維傅里葉變化 和 逆變化 (中心化) F = @(x) fftshift(fft2(x)); Ft = @(x) ifft2(ifftshift(x));%% 傅里葉變化基礎 f = imread('rice.jpg'); f = rgb2gray(f); F = fft2(f); %傅里葉變化,未中心化 Fc = fftshift(F); %中心化 S = abs(Fc); %傅里葉譜,強度 S2 = log(1+abs(Fc)); %方便顯示 phi = atan(imag(F),real(F)); %求相角 phi = angle(F); %也是求相角 f = real(ifft2(F)); %原空間圖像%% 頻域濾波 % 頻域的濾波實際上是周期性的,成為 循環卷積 %為了保證空間濾波 和 頻域濾波 結果相同,在進行濾波之前,對空域圖像填充0 % 有時候僅僅為了看簡單的效果,可以不填充0,直接空間濾波% 函數paddedsize:matlab沒有自帶的,Gonzalez書中的:函數paddedsize,只是計算大小的 % function PQ = paddedsize(AB,CD,PARAM) % AB表示 f(x,y)的大小[A,B] % CD表示 h(x,y)的大小[C,D] % PQ表示 填充后的f大小[P,Q] % PARAM 是干嘛的,我也不知道% 函數lpfilter:M不帶,生成一個低通濾波器,中心在邊緣 % function H = lpfilter(type, M, N, D0, n) % 'ideal' 'btw' 'gaussian' % 內含 dftuv ,計算距離% 函數hpfilter:M不帶,生成一個高通濾波器,中心在邊緣% 函數dftfilt:M不帶,接受輸入圖像和濾波器,輸出濾波后圖像,H中心在邊緣 % function g = dftfilt(f, H)% bandfilter函數,帶阻,帶通濾波器%頻域濾波PQ = paddedsize(size(f));Fp = fft2(f,PQ(1),PQ(2)); %padding方式計算fft,f自動填充到PQ的大小Hp =lpfilter('gaussian',PQ(1),PQ(2),(PQ(1))/6);%生成一個PQ大小的高斯濾波器Gp = Hp .* Fp;gp = ifft2(Gp);gpc = gp(1:size(f,1),1:size(f,2)); %修剪左上部分矩形大小為原始大小imshow(gpc,[])%頻域濾波 直接使用 dftfiltgpc = dftfilt(f, Hp);% Hp大小應該是填充后的大小PQimshow(gpc,[])%空間濾波 都是matlab自帶h = fspecial('gaussian',15,7); %先生成空間濾波器gs = imfilter(f,h); %再濾波%空域生成 頻域濾波函數 %h是空間濾波器,R C 是生成的頻域濾波器的行列 %H的中心在中心 % H = freqz2(h,R,C); H = freqz2(h,PQ(1),PQ(2)); H1 = ifftshift(H); gf = dftfilt(f,H1);%頻域濾波后結果?
總結
以上是生活随笔為你收集整理的图像处理:频域滤波_Matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理:二维傅里叶变化的平移性_mat
- 下一篇: 图像处理:图像中噪声分布和概率密度函数的