頻域低通濾波器1

2021-09-01 13:21:47 字數 4323 閱讀 8841

在頻譜中低頻主要對應影象在平滑區域的總體灰度級分布,而高頻對應影象的細節部分,如邊緣和雜訊。因此影象平滑可以通過衰減影象頻譜中的高頻部分來實現,這就建立了空間域影象平滑和頻域低通濾波之間的對應關係。

理論基礎

最容易想到的衰減高頻成分方法是在乙個稱為『截止頻率』的位置截斷所有的高頻成分,將影象頻譜中所有高於這一截止的頻譜 成分設為0,低於截止頻率的成分設為保持不變。能夠達到這種效果的濾波器我們稱之為理想低通濾波器。如果影象的寬度為 m,高度為n,那麼理想的低通頻域濾波器可以形式化的描述為

其中d0表示理想低通濾波器的截止頻率,濾波器的頻率域原點在頻譜影象的中心處,在以截止頻率為半徑的圓形區域 之內的濾鏡元素值全部為1,而該圓之外的濾鏡元素值全部為0.理想低通濾波器的頻率特性在截止頻率處十分陡峭,無法用硬體實現,這也是我們稱之為理想的原因,但其軟體程式設計的模擬實現較為簡單。

理想低通濾波器可以在一定程度上去除影象雜訊,但由此帶來的影象邊緣和細節的模糊效應也比較明顯,其濾波之後的處理效果比較類似於平均模板的平均平滑,實際上,理想低通濾波器是乙個與頻譜影象同樣尺寸的二維矩陣,通過將矩陣中對應較高頻率的部分設為0,較低頻率的部分設為1,可在與頻譜影象相乘後有效去除頻譜的高頻部分,其中0和1的交界處即對應濾波器的截止頻率。

我們用imidealflpf 函式可以得到截止頻率為freq的理想低通濾波器。**如下:

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

用imfreqfilt 函式表示頻率濾波的基本步驟**如下:

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(:));

用ditonglvbo 函式來進行影象處理**

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 ...