set(handles.axes2,'HandleVisibility','OFF');
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。 在function gaussian_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
y=imnoise(x,'gaussian',0,0.05); %加高斯噪声 imshow(y);
imwrite(y,'gaussian.jpg'); title('加高斯噪声')
在function salt_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
y=imnoise(x,'salt & pepper',0.04); %加椒盐噪声 imshow(y);
imwrite(y,'salt.jpg'); title('加椒盐噪声')
在function medfilt_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
y=imnoise(x,'salt & pepper',0.04); %加椒盐噪声 z=medfilt2(y,[5 5],'symmetric'); %中值滤波 imshow(z);
imwrite(z,'medfilt.jpg'); title('中值滤波');
在function wiener_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
y=imnoise(x,'gaussian',0,0.05); %加高斯噪声 z=wiener2(y,[5 5]); %自适应滤波 imshow(z);
imwrite(z,'wiener.jpg'); title('自适应滤波')
7)频谱处理,能够分析图像频谱,显示频谱图。
在function pinputu_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
J2=fft2(x); %傅立叶变换 K2=fftshift(J2); %转换数据矩阵
imshow(log(abs(K2)),[]); %显示频谱图 title('频谱图');
8)设计巴特沃斯低通滤波对图像进行低通滤波处理,显示结果。
在function butterdi_Callback(hObject, eventdata, handles) 后面输入如下程序 axes(handles.axes2); x=(handles.img);
y1=imnoise(x,'salt & pepper'); % 叠加椒盐噪声
f=double(y1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fft2(f); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 [M,N]=size(g);
nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器
d0=50; %截止频率为50 m=fix(M/2); n=fix(N/2); for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数
result(i,j)=h*g(i,j); end end
result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2));
imshow(y3); 显示滤波处理后的图像 imwrite(y3,'butterdi.jpg'); title('巴特沃斯低通滤波')
9)设计高斯高通虑波器,显示结果。 axes(handles.axes2); x=(handles.img);
y1=imnoise(x,'gaussian'); f=double(y1); 转换
k=fft2(f); 叶变换
g=fftshift(k); 据矩阵 [M,N]=size(g); nn=2;
% 加高斯噪声 % 数据类型 % 傅立 % 转换数 % d0=25; %截止频率为25
m=fix(M/2); n=fix(N/2); for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2); 传递函数
if d<=d0 h=0; else h=1; end
result(i,j)=h*g(i,j); end end
result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2));
imshow(y3); 滤波处理后的图像
imwrite(y3,'gaussiangao.jpg'); title('高斯高通滤波')
四、课程设计的体会
计算高通滤波器 % 显示 %
MATLAB的图像处理的课程设计



