您的位置:首页 > 其它

机器视觉第二次大作业

2019-06-17 14:51 204 查看

内容
给定图像,消除其中的周期性干扰

以下为处理过程:
1、显示图像的傅里叶变换后的频谱和傅里叶变换对数所得的频谱:

从图2 可以明显的看出周期性噪声在频谱上的分布,于是在低中高频段上都有分布,但是低
通部分较少,所以考虑使用低通滤波器;
此部分代码:

I=imread('C:\Users\18868\Desktop\陶瓷基片周期性噪声滤波.jpg');
%导入图像 I2=rgb2gray(I); s=fftshift(fft2(I2)); imshow(abs(s),[]);
%图像傅里叶所得的频谱 imshow(log(abs(s)),[]);
%图像傅里叶变换对数所得频谱

2、使用理想低通滤波器:


画面出现了意料之外的弯曲,即使周期性噪声已经不太明显。考虑使用别的低通滤波器,使得画面更加平滑。
此部分代码

[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d=12;
for i=1:a
for j=i:b
distance=sqrt((i-a0)^2+(j-b0)^2);
if distance<=d
h=1;
else
h=0;
end
s(i,j)=h.*s(i,j);
end
end
s=uint8(real(ifft2(ifftshift(s))));
imshow(s)
Hd=ones(size(I2));
Hd(r>0.2)=0;
figure
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','pho
ng');%三维

3、Butterworth 低通滤波器的使用:
通过查阅资料了解到,巴特沃斯低通滤波器对图像有较好的平滑滤波效果,于是尝试在本次
作业中使用,效果如下所示:


虽然平滑效果很好,但是可以看到抹去了很多细节,如果需要对边缘细节进行判断我们还要进行别的处理。
此部分代码

[f1,f2]=freqspace(size(A2),'meshgrid');%Butterworth 低通滤波器
D=50/size(A2,1);
r=f1.^2+f2.^2;
Hd=ones(size(A2));
for i=1:size(A2,1)
for j=1:size(A2,2)
t=r(i,j)/(D*D);
Hd(i,j)=exp(-t);
end
end
Y=fft2(double(A2));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia=real(ifft2(Ya));
figure;
imshow(uint8(Ia));
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','pho
ng');%三维

4、锐化处理突出边缘
在使用巴特沃斯低通处理之后,虽然滤波效果和平滑效果很好,但是如果对边缘细节有要求,
还需要进行锐化处理,我们使用Roberts 算子进行锐化处理。效果如下:

但是画面的亮度因此下降,可以考虑后续的上色处理。
此部分代码

%图像锐化
[m,n]=size(Ia);
Ia=double(Ia);
b=zeros(m,n);
c=zeros(m,n);
for i=1:m-2
for j=1:n-2
b(i+1,j+1)=Ia(i,j)-Ia(i+1,j+1);
c(i+1,j+1)=Ia(i,j+1)-Ia(i+1,j);
b(i+1,j+1)=sqrt(b(i+1,j+1)^2+c(i+1,j+1)^2)+150;
end
end
figure;
imshow(uint8(b));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: