图像处理实验图像增强和图像分割.docx
《图像处理实验图像增强和图像分割.docx》由会员分享,可在线阅读,更多相关《图像处理实验图像增强和图像分割.docx(12页珍藏版)》请在冰豆网上搜索。
图像处理实验图像增强和图像分割
图像处理实验
图像增强和图像分割
一、实验目的:
掌握用空间滤波进行图像增强的基本方法,掌握图像分割的基本方法。
二、实验要求:
1、测试图像1中同时含有均值为零的均匀分布噪声和椒盐噪声。
用大小为5×5的算术均值滤波器和中值滤波器对图像进行处理,在不同窗口中显示原图像及各处理结果图像,并分析哪一种滤波器去噪效果好?
2、对测试图像2进行图像分割,求出分割测试图像2的最佳阈值。
分别显示原图、原图的直方图(标出阈值)、和分割后的二值图。
实验内容:
1.实验原理
1)
图像增强:
流程图:
图像增强可以通过滤波的方式来完成,即消除一部分的噪声。
滤波又可以分为均值滤波和中值滤波。
1.中值滤波原理:
中值滤波就是选用一个含有奇数个像素的滑动窗口,将该窗口在图像上扫描,把其中所含像素点按灰度级的升(或降)序排列,取位于中间的灰度值来代替窗口中心点的灰度值。
对于一维序列{
}:
对于二维序列{
}:
2.均值滤波原理:
对于含噪声的原始图像g(s,t)的每一个像素点去一个领域N,用N中所包含的相速的灰度平均值,作为领域平均处理后的图像f(x,y)的像素值,即:
2)图像分割:
图像分割:
依据图像的灰度、颜色等特征,将一幅图像分为若干个互不重叠的、具有某种同质特征的区域。
本实验中我们是根据灰度值,将灰度值大于阈值T的像素统一置为255,小于的则置为0。
如何求出最合适的分割阈值,则需要用到迭代算法。
迭代法算法步骤:
(1)初始化阈值T(一般为原图像所有像素平均值)。
(2)用T分割图像成两个集合:
G1和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素。
(3)计算G1中像素的平均值m1及G2中像素的平均值m2。
(4)计算新的阈值:
T=(m1+m2)/2。
(5)如果新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,否则继续
(2)-(4)步。
2.程序代码与分析:
1)图像增强:
clearall;clc;
%读入图像
I1=imread('Fig5.12(b).jpg');
%均值滤波模板
h1=ones(5,'uint8');
%获取分辨率
[a,b]=size(I1);
%创建变量
I2=zeros(a+4,b+4,'uint8');
I3=zeros(a+4,b+4,'uint8');
%复制原始图像
forn=3:
a+2
form=3:
b+2
I2(n,m)=I1(n-2,m-2);
I3(n,m)=I1(n-2,m-2);
end
end
%边界值设定
forn=1:
a+4
form=1:
b+4
%左上角设定
ifn<3&&m<3
I2(n,m)=I2(6-n,6-m);
I3(n,m)=I3(6-n,6-m);
%右下角设定
elseifn>a+2&&m>b+2
I2(n,m)=I2(2*a+4-n,2*b+4-m);
I3(n,m)=I3(2*a+4-n,2*b+4-m);
%右上角设定
elseifn<3&&m>b+2
I2(n,m)=I2(6-n,2*b+4-m);
I3(n,m)=I3(6-n,2*b+4-m);
%左下角设定
elseifm<3&&n>a+2
I2(n,m)=I2(2*a+4-n,6-m);
I3(n,m)=I3(2*a+4-n,6-m);
%上两行设定
elseifn<3
I2(n,m)=I2(6-n,m);
I3(n,m)=I3(6-n,m);
%下两行设定
elseifn>a+2
I2(n,m)=I2(2*a+4-n,m);
I3(n,m)=I3(2*a+4-n,m);
%左两列设定
elseifm<3
I2(n,m)=I2(n,6-m);
I3(n,m)=I3(n,6-m);
%右两列设定
elseifm>b+2
I2(n,m)=I2(n,2*b+4-m);
I3(n,m)=I3(n,2*b+4-m);
end
end
end
end
end
end
end
end
end
end
%图像处理
forn=3:
a+2
form=3:
b+2
%均值滤波
temp0=I2(n-2:
n+2,m-2:
m+2);
temp0=temp0.*h1;
temp1=mean(temp0(:
));
temp1=uint8(floor(temp1));
I2(n,m)=temp1;
%中值滤波
temp2=I3(n-2:
n+2,m-2:
m+2);
temp3=median(double(temp2(:
)));
temp3=uint8(floor(temp3));
I3(n,m)=temp3;
end
end
%保持分辨率
I4=I2(3:
a+2,3:
b+2);
I5=I3(3:
a+2,3:
b+2);
%显示图像
figure
(1);imshow(I1);
title('原始图像');
figure
(2);imshow(I4);
title('算数均值滤波输出');
figure(3);imshow(I5);
title('中值滤波输出');
图像分割:
clearall;clc;
%读取图像
I=imread('Fig10.29(a).jpg');
%创建变量
[a,b]=size(I);
J=zeros(a,b);
%设定迭代阈值
T0=1;
%初始化
T1=mean(I(:
));
r1=find(I>T1);
r2=find(I<=T1);
T2=(mean(I(r1))+mean(I(r2)))/2;
%迭代求解图像分割阈值
whileabs(T2-T1)>=T0
T1=T2;
r1=find(I>T1);
r2=find(I<=T1);
T2=(mean(I(r1))+mean(I(r2)))/2;
end
T2=ceil(T2);
%输出二值图像
fori=1:
a*b
J(i)=255*(I(i)>T2)+0*(I(i)<=T2);
end
%显示图像
figure
(1);imshow(I);
title('原始图像');
figure
(2);imhist(I);
title('灰度直方图');
holdon;
plot([T2,T2],[0,6000],'r');%画分割线
str1=num2str(T2);
text(T2+5,2000,'分割阈值');%标注分割阈值
text(T2+5,1800,str1);
holdoff;
figure(3);imshow(J);
title('迭代法分割输出');
3.实验结果
1)图像增强结果:
图像分割结果:
2)图像分割结果:
图6直方图
4.实验分析和总结
1)图像增强:
对比均值滤波和中值滤波的结果可知:
算术均值滤波和中值滤波对含噪声的图像都有去噪的效果。
对于均值滤波,算法简单,但在降低噪声的同时容易模糊图像边沿和细节。
对于中值滤波,去除图像中的椒盐噪声,消除孤立的噪声点,平滑效果优于均值滤波,在抑制噪声同时还能保持图像边缘清晰。
2)图像分割:
迭代法适用于图像灰度直方图中双峰明显的图像,从灰度直方图中我们可以看到该图像满足这一要求。
通过本次实验,了解了matlab中几个实用的子函数,更直接地了解均值滤波、中值滤波以及用迭代法求阈值的算法,通过实验观察到了图像增强和分割对图像的影响,了解到了用均值滤波和中值滤波两种方法进行图像增强的优缺点,使我对图像处理有了更进一步的理解。
在进行图像处理时,根据目标图像的特定情况选择正确的算法以及处理方法很重要,进行处理所采用的模板大小也同样重要。