在頻譜中低頻主要對應影象在平滑區域的總體灰度級分布,而高頻對應影象的細節部分,如邊緣和雜訊。因此影象平滑可以通過衰減影象頻譜中的高頻部分來實現,這就建立了空間域影象平滑和頻域低通濾波之間的對應關係。
理論基礎
最容易想到的衰減高頻成分方法是在乙個稱為『截止頻率』的位置截斷所有的高頻成分,將影象頻譜中所有高於這一截止的頻譜 成分設為0,低於截止頻率的成分設為保持不變。能夠達到這種效果的濾波器我們稱之為理想低通濾波器。如果影象的寬度為 m,高度為n,那麼理想的低通頻域濾波器可以形式化的描述為
其中d0表示理想低通濾波器的截止頻率,濾波器的頻率域原點在頻譜影象的中心處,在以截止頻率為半徑的圓形區域 之內的濾鏡元素值全部為1,而該圓之外的濾鏡元素值全部為0.理想低通濾波器的頻率特性在截止頻率處十分陡峭,無法用硬體實現,這也是我們稱之為理想的原因,但其軟體程式設計的模擬實現較為簡單。
理想低通濾波器可以在一定程度上去除影象雜訊,但由此帶來的影象邊緣和細節的模糊效應也比較明顯,其濾波之後的處理效果比較類似於平均模板的平均平滑,實際上,理想低通濾波器是乙個與頻譜影象同樣尺寸的二維矩陣,通過將矩陣中對應較高頻率的部分設為0,較低頻率的部分設為1,可在與頻譜影象相乘後有效去除頻譜的高頻部分,其中0和1的交界處即對應濾波器的截止頻率。
我們用imidealflpf 函式可以得到截止頻率為freq的理想低通濾波器。**如下:
用imfreqfilt 函式表示頻率濾波的基本步驟**如下:function out=imidealflpf(i, freq)
%imidealflpf 函式 構造理想的頻域低通濾波其
%i引數 輸入的灰度影象
%freq 低通濾波器的截止頻率
%返回值 out指定的理想低通濾波
[m,n]=size(i);
out=ones(m,n);
for i=1:m
for j=1:n
if (sqrt(((i-m/2)^2+(j-n/2)^2))>freq)
out(i,j)=0;
endend
end
用ditonglvbo 函式來進行影象處理**function out=imfreqfilt(i,ff)
% imfreqfilt函式 對灰度影象進行頻域濾波
%引數i 輸入的空域影象
%引數ff 應用的與原圖等大的頻域濾鏡
if (ndims(i)==3)&&(size(i,3)==3) %rgb影象
i=rgn2gray(i);
endif (size(i)~=size(ff))
msg1=sprintf('%s: 濾鏡與原影象不等大,檢查輸入',mfilename);
msg2=sprintf('%s: 濾波操作已經取消',mfilename);
eid=sprintf('images:%s: imagessizenotequal',mfilename);
error(eid,'%s',msg1,msg2);
end%快速傅利葉變換
f=fft2(double(i));
%移動原點
s=fftshift(f);
%應用濾鏡及反變換
out=s.*ff;%對應元素相乘實現頻域濾波
out=ifftshift(out);
out=ifft2(out);
%求模值
out=abs(out);
%歸一化以便顯示
out=out/max(out(:));
效果如下:i=imread('lena.bmp');
i=rgb2gray(i);
ff=imidealflpf(i,20);%生成濾鏡
out=imfreqfilt(i,ff);%應用濾鏡
figure(1);
subplot(2,2,1);
imshow(i);
title('source');
%計算fft並顯示
temp=fft2(double(i));
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,1);
imshow(temp,);
title('source1');
figure(1);
subplot(2,2,2);
imshow(out);
title('ideal lpf ,freq=20');
%計算fft並顯示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,2);
imshow(temp,);
title('ideal lpf ,freq=20');
ff=imidealflpf(i,40);%生成濾鏡
out=imfreqfilt(i,ff);%應用濾鏡
figure(1);
subplot(2,2,3);
imshow(out);
title('tdeal lpf,freq=40');
%計算fft並顯示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,3);
imshow(temp,);
title('ideal lpf ,freq=40');
ff=imidealflpf(i,60);%生成濾鏡
out=imfreqfilt(i,ff);%應用濾鏡
figure(1);
subplot(2,2,4);
imshow(out);
title('tdeal lpf,freq=60');
%計算fft並顯示
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);
subplot(2,2,4);
imshow(temp,);
title('ideal lpf ,freq=60');
% imfreqfilt函式 對灰度影象進行頻域濾波
%引數i 輸入的空域影象
%引數ff 應用的與原圖等大的頻域濾鏡
if (ndims(i)==3)&&(size(i,3)==3) %rgb影象
i=rgn2gray(i);
endif (size(i)~=size(ff))
msg1=sprintf('%s: 濾鏡與原影象不等大,檢查輸入',mfilename);
msg2=sprintf('%s: 濾波操作已經取消',mfilename);
eid=sprintf('images:%s: imagessizenotequal',mfilename);
error(eid,'%s',msg1,msg2);
end%快速傅利葉變換
f=fft2(double(i));
%移動原點
s=fftshift(f);
%應用濾鏡及反變換
out=s.*ff;%對應元素相乘實現頻域濾波
out=ifftshift(out);
out=ifft2(out);
%求模值
out=abs(out);
%歸一化以便顯示
out=out/max(out(:));
OpenCV C 實現頻域理想低通濾波器
1 理想低通濾波器 2 巴特沃思低通濾波器 3 高斯低通濾波器 邊緣和雜訊等尖銳變化處於傅利葉變換的高 頻部分 平滑可以通過衰減高頻成分的範圍來實現 理想低通濾波器 尖銳 巴特沃思低通濾波器 處於理想和高斯濾波 器之間 高斯低通濾波器 平滑 l 理想低通濾波器 截斷傅利葉變換中的所有高頻成分,這些高...
高通 低通 濾波器
在低通情況下,濾波器輸出滯後於輸入 負相移 在高通情況下,輸出領先於輸入 正相移 上積分 低通通?高通 低通 濾波器 圖7示出另外一種結構。該電路增加了乙個併聯電阻,對積分電容進行連續放電,從根本上來說它是乙個有損耗的積分器。其中心頻率同樣是1 2 rc 因為該放大器是以反相模式工作的,故反相模式將...
matlab設計低通濾波器
輸入 被白雜訊汙染的正弦訊號,fs 100khz,訊號頻率為10khz,雜訊訊號為20khz,現在要濾掉20khz的正弦訊號 clear all fs 100000 t 0 1 fs 0.003 f1 10000 f2 20000 signal1 sin 2 pi f1 t signal2 sin ...