代码主要实现了两点功能
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:nn
temp=(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:N2
d=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('处理后图像');
问题:
为什么加噪声以后频率域会出现十字形状,为什么对周围造成了影响?