实验目的:掌握采用图像灰度图像空间域平滑、去噪的一般方法方法,并编程实现。
实验内容:编程实现灰度图像空间域滤波:至少包括 3×3、5×5窗口的均值滤波与中值滤波,并比较不同方案增强后的效果及影响因素。
实验平台:Matlab
实验代码:
%matlab实现灰度图像空间域滤波,自定义窗口的均值、中值、高斯滤波,189064238刘航宇
try
%步骤一:彩色、灰度变换
h=imread('D:\图片\image\liu.jpg'); %读入彩色图片
subplot(2,2,1),imshow(h);title('原图'); %显示原图像
c=rgb2gray(h); %把彩色图片转化成灰度图片,256级
subplot(2,2,2),imshow(c),title('原始灰度图象'); %显示原始图象
g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声
subplot(2,2,3),imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象
%步骤二:用系统预定义滤波器进行均值滤波
n=input('请输入均值滤波器模板大小\n');
A=fspecial('average',n); %生成系统预定义的3X3滤波器
Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化
figure,imshow(Y),title('用系统函数进行均值滤波后的结果'); %显示滤波后的图象
%步骤三:用Matlab系统函数进行中值滤波
n2=input('请输入中值滤波的模板的大小\n');
Y1=medfilt2(g,[n2 n2]); %调用系统函数进行中值滤波,n2为模板大小
figure,imshow(Y1),title('用Matlab系统函数进行中值滤波之后的结果'); %显示滤波后的图象
%步骤四:用matlab系统函数进行高斯滤波
n3=input('请输入高斯滤波器的均值\n');
k=input('请输入高斯滤波器的方差\n');
A2=fspecial('gaussian',k,n3); %生成高斯序列
Y2=filter2(A2,g)/255; %用生成的高斯序列进行滤波
figure,imshow(Y2),title('用Matlab函数进行高斯滤波之后的结果'); %显示滤波后的图象
catch %捕获异常
disp(lasterr); %如果程序有异常,输出
end
ps:方差填1,2,3,4任意一个即可
步骤及其实验现象:
然后输入模板大小
然后产生三个图窗
然后输入 clc;clear
重新输入本代码,完成5*5模板,在此不再赘述。
结果分析:
请自行上网查询均值、中值、高斯滤波区别、学习。
评论 (0)