频率域滤波之带阻滤波器matlab代码
生活随笔
收集整理的這篇文章主要介紹了
频率域滤波之带阻滤波器matlab代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼主要實現了兩點功能
1、增加頻率域噪聲
2、用帶阻濾波器去掉頻率域噪聲
效果:
原圖像? ?和? ? 加噪聲后的圖像(多了很多波紋)
? ? ? ? ??
頻率域圖像
帶阻濾波器
????
最后的圖像
上代碼:
clear; close all; clc;I=imread('m.tif'); I=im2double(I); [m,n]=size(I);r = 0:m-1;%Row coordinates. c = 0:n-1;%Column coordinates. [C, R] = meshgrid(c, r); A=0.01; %半徑2 r=2; %劃區域10個 nn=10; f = zeros(m, n); for i=1:nntemp=(i-0.5)*pi/nn;u0=r*sin(temp);v0=r*cos(temp);f = f+A*sin(u0*R + v0*C); end J=I+f; figure; imshow(J);%傅里葉變換 IF=fftshift(fft2(I)); JF=fftshift(fft2(J)); %對數變換將高頻細節擴展出來 IF=log(1+abs(IF)); JF=log(1+abs(JF)); figure; subplot(1,2,1), imshow(IF,[]), title('原圖像'); subplot(1,2,2), imshow(JF,[]), title('周期噪聲圖像');%% %%%%%%%%%%%%%%%%%%%%%%%%%% %處理J k=fft2(J); g=fftshift(k); imshow(log(abs(g)+1),[]);[N1,N2]=size(g);W=10; n=2; d0=148; n1=round(N1/2); n2=round(N2/2); Homo = zeros(N1, N2); for i=1:N1 for j=1:N2d=sqrt(((i-n1)*N2/N1)^2+((j-n2))^2);Home(i,j)=1/(1+((d*W)/(d^2-d0^2))^(2*n));end end figure; mesh(abs(Home(1:10:N1,1:10:N2))); figure; imshow(Home,[]);%y=g.*Home; y=g.*Home; figure; imshow(log(abs(y)+1),[]);y=ifftshift(y); E1=ifft2(y); E2=real(E1);subplot(1,3,1), imshow(I,[]), title('原圖像'); subplot(1,3,2), imshow(J,[]), title('周期噪聲圖像'); subplot(1,3,3), imshow(E2,[]), title('處理后圖像');問題:
為什么加噪聲以后頻率域會出現十字形狀,為什么對周圍造成了影響?
總結
以上是生活随笔為你收集整理的频率域滤波之带阻滤波器matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017云栖大会门票转让_2017云栖大
- 下一篇: 树莓派4+ docker+ homeas