图像分割 实验报告文档格式.docx
- 文档编号:17273993
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:20
- 大小:355.70KB
图像分割 实验报告文档格式.docx
《图像分割 实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《图像分割 实验报告文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
但增强的图像仅显示灰度变化比较陡的边缘轮廓,而灰度变换比较平缓的区域则呈暗色。
加阈值的梯度输出
加阈值的梯度输出表达式为
式中,T是一个非负的阈值,适当选取T,既可以使明显的边缘得到突出,又不会破坏原来灰度变化比较平缓的背景。
给边缘指定一个特定的灰度级
式中LG是根据需要指定的一个灰度级,它将明显的边缘用一个固定的灰度级表现,而其他的非边缘区域的灰度级仍保持不变。
给背景指定一个特定的灰度级
该方法将背景用一个固定灰度级LG表现,便于研究边缘灰度的变化。
二值图像输出
在某些场合(如字符识别等),既不关心非边缘像素的灰度级差别,又不关心边缘像素的灰度级差别,只关心每个像素是边缘像素还是非边缘像素,这时可采用二值化图像输出方式,其表达式为
此法将背景和边缘用二值图像表示,便于研究边缘所在位置。
2.Sobel算子法
Sobel相对于先对图像进行加权平均再做差分。
对于图像的3×
3窗口
,设
则定义Sobel算子为
Sobel模板
3.拉普拉斯运算法
拉普拉斯算子定义图像f(x,y)的梯度为
锐化后的图像g为
式中k为扩散效应系数。
对系数k的选择要合理,太大会使图像中的轮廓边缘产生过冲;
太小则锐化不明显。
常用laplacian算子模板为
,
,
另外还有一些模板也常用于图像增强,如
Prewitt模板
四、实验结果与分析
(包括实验原理、数据的准备、运行过程分析、源程序(代码)、图形图象界面等)
注:
本项可以增加页数
%例1手动阈值分割
[I,map]=imread('
cameraman.tif'
);
%读入图像
imshow(I);
figure;
%显示图像
J=imhist(I);
imhist(I);
%生成直方图并显示
[M,N]=size(I);
%返回图像的行数和列数
fori=1:
1:
M%将i以步长1从1增加到M
forj=1:
N%将j以步长1从1增加到N
ifI(i,j)>
80%如果图像阈值大于80
g(i,j)=0;
%则大于80的就变成黑的
elseg(i,j)=1;
%小于80就变成白的
end
end
imshow(g);
%保持原图,显示图像g
图1原图图2直方图图3阈值分割后的二值图像
分析:
手动阈值分割的阈值是取直方图中双峰的谷底的灰度值作为阈值,若有多个双峰谷底,
则取第一个作为阈值。
本题的阈值取80。
%例2迭代阈值分割
f=imread('
subplot(1,2,1);
imshow(f);
%创建一个一行二列的窗口,在第一个窗口显示图像
title('
原始图像'
%标注标题
f=double(f);
%转换位双精度
T=(min(f(:
))+max(f(:
)))/2;
%设定初始阈值
done=false;
%定义开关变量,用于控制循环次数
i=0;
%迭代,初始值i=0
while~done%while~done是循环条件,~是“非”的意思,此
处done=0;
说明是无限循环,循环体里面应该还
有循环退出条件,否则就循环到死了;
r1=find(f<
=T);
%按前次结果对t进行二次分
r2=find(f>
T);
%按前次结果重新对t进行二次分
Tnew=(mean(f(r1))+mean(f(r2)))/2;
%新阈值两个范围内像素平均值和的一半
done=abs(Tnew-T)<
1;
%设定两次阈值的比较,当满足小于1时,停止循环,
1是自己指定的参数
T=Tnew;
%把Tnw的值赋给T
i=i+1;
%执行循坏,每次都加1
f(r1)=0;
%把小于初始阈值的变成黑的
f(r2)=1;
%把大于初始阈值的变成白的
subplot(1,2,2);
%创建一个一行二列的窗口,在第二个窗口显示图像
迭代阈值二值化图像'
图4原始图像图5迭代阈值二值化图像
本题是迭代阈值二值化分割,步骤是:
1.选定初始阈值,即原图大小取平均;
2.用初阈
值进行二值分割;
3.目标灰度值平均背景都取平均;
4.迭代生成阈值,直到两次阈值的灰
度变化不超过1,则稳定;
5.输出迭代结果。
%例3Laplacian算子和模板匹配法
I=imread('
subplot(1,3,1);
%创建一个一行三列的窗口,在第一个窗口显示图像
原图像'
H=fspecial('
laplacian'
%生成laplacian滤波器
laplacianH=filter2(H,I);
%以laplacian为模板对图像I进行锐化滤波
subplot(1,3,2);
%创建一个一行三列的窗口,在第二个窗口显示图像
imshow(laplacianH);
laplacian算子锐化图像'
prewitt'
%生成Prewitt滤波器
prewittH=filter2(H,I);
%以prewitt为模板对图像I进行锐化滤波
subplot(1,3,3);
%创建一个一行三列的窗口,在第三个窗口显示图像
imshow(prewittH);
prewitt模板锐化图像'
图6原图像图7laplacian算子锐化图像图8prewitt模板锐化图像
从结果图可以看出,laplacian算子对边缘的处理更明显,它是二阶微分算子,能加强
边缘效果,对噪声很敏感,Prewitt算子是平均滤波的一阶的微分算子,不仅能检测边缘
点,而且能抑制噪声的影响。
%例4不同边缘检测方法比较
%读取图像
subplot(2,2,1);
%创建一个二行二列的窗口,在第一个窗口显示图像
[g,t]=edge(f,'
roberts'
[],'
both'
%用roberts检测器对图像进行边缘检测,阈值自动选
取,检测边缘方向(双向)为both
subplot(2,2,2);
%创建一个二行二列的窗口,在第二个窗口显示图像
Roberts算子分割结果'
%标注标题
sobel'
%用sobel检测器对图像进行边缘检测,阈值自动选取,检测边缘方向(双向)为both
subplot(2,2,3);
%创建一个二行二列的窗口,在第三个窗口显示图像
Sobel算子分割结果'
%用prewitt检测器对图像进行边缘检测,阈值自动
选取,检测边缘方向(双向)为both
subplot(2,2,4);
%创建一个二行二列的窗口,在第四个窗口显示图像
prewitt算子分割结果'
图9原始图像图10Roberts算子分割结果图像
图11Sobel算子分割结果图像图12prewitt算子分割结果图像
从结果图可以看出,Prewitt和Sobel算子分割效果比Roberts效果要好一些,提取
边缘较完整,其边缘连续性较好。
但是这三种算子的边缘的连续性都不太好,这时我们
需要采用霍夫变换使间断变成连续,连接边缘。
思考题
1.分析Sobel算子特点,并给予说明。
skull.tif'
%转化图像f的类型为双精度
subplot(3,3,1);
%创建有3*3子图像的窗口,原图在位置1
imshow(f,[]);
%显示原图像f
%给图像加标题为'
J=imnoise(f,'
gaussian'
0.02);
%对图像加高斯噪声
subplot(3,3,2);
%创建有3*3子图像的窗口,原图在位置2
imshow(J,[]);
%显示加噪声的图像
加高斯噪声图像'
%给图像加标题为'
[g1,t]=edge(f,'
%用sobel检测器对原图像进行边缘检测,阈值自动选
[g2,t]=edge(J,'
%用sobel检测器对加噪图像进行边缘检测,阈值自动
[g3,t]=edge(f,'
vertical'
%用sobel检测器对原图像进行边缘检测,阈值自动
选取,检测边缘方向为垂直方向
[g4,t]=edge(J,'
%用sobel检测器对加噪图像进行边缘检测,阈值自
动选取,检测边缘方向为垂直方向
[g5,t]=edge(f,'
horizontal'
%用sobel检测器对原图像进行边缘检测,阈值自
动选取,检测边缘方向为水平方向
[g6,t]=edge(J,'
%用sobel检测器对加噪图像进行边缘检测,阈值
自动选取,检测边缘方向为水平方向
subplot(3,3,3);
%创建有3*3子图像的窗口,图在位置3
imshow(g1);
%显示经sobel算子处理后的图像
sobel算子双向分割结果'
%给图像加标题为‘sobel算子双向分割结果’
subplot(3,3,4);
imshow(g2);
加噪后sobel双向分割结果'
%在3*3子图像的位置4
显示加噪后sobel双向分割结果图像
subplot(3,3,5);
imshow(g3);
sobel水平方向分割结果'
%在3*3子图像的位置5显示
sobel水平方向分割结果结果图像
subplot(3,3,6);
imshow(g4);
加噪后sobel水平方向分割结果'
%在3*3子图像的位
置6显示加噪后sobel水平方向分割结果图像
subplot(3,3,7);
imshow(g5);
sobel垂直方向分割结果'
%在3*3子图像的位置7显示
sobel垂直方向分割结果图像
subplot(3,3,8);
imshow(g6);
加噪后sobel垂直方向分割结果'
置8显示加噪后sobel垂直方向分割结果图像
图13原始图像图14加高斯噪声图像图15sobel算子双向分割结果图像
图16加噪后sobel双向分割图图17sobel水平方向分割图图18加噪后sobel水平分割图
图19sobel垂直方向分割结果图像图20加噪后sobel垂直方向分割结果图像
在边缘检测中,常用的一种模板是Sobel
算子。
Sobel算子有三个,一个是检测双向边缘的,一个是检测水平边缘的;
另一个是检
测垂直边缘的。
由于Sobel算子是一节微分滤波算子的,用于提取边缘,有方向性,从结
果可以看出双向both的分割效果最好。
缺点:
Sobel算子并没有将图像的主体与背景严格
地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严
格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
2.分析laplacian算子特点,并解释它为何能增强图像的边缘?
%读取原图
subplot(2,3,1),imshow(I,[]);
)%在2*3子图像的位置1显示原图像
H1=fspecial('
0);
%生成Laplacian算子滤波器,滤波器的标
准差为0,说明H1模板的中间系数是-4
H2=fspecial('
准差为默认值0.2,说明H2模板的中间系数是-3.333
H3=fspecial('
1);
准差为1,说明H3模板的中间系数是-2
J=imnoise(I,'
salt&
pepper'
%添加椒盐噪声
subplot(2,3,2),imshow(J,[]);
添加椒盐噪声图像'
)%在2*3子图像的位置3显示添
加椒盐噪声图像
I1=imfilter(I,H1);
%用H1模板进行均值滤波
subplot(2,3,3),imshow(I1,[]);
HI模板laplacian算子滤波结果'
)%在2*3子图像的
位置3显示'
HI模板laplacian算子滤波结果图像
I2=imfilter(I,H2);
%用H2模板进行均值滤波
subplot(2,3,4),imshow(I2,[]);
H2模板laplacian算子滤波结果'
位置4显示H2模板laplacian算子滤波结果图像
I3=imfilter(I,H3);
%用H3模板进行均值滤波
subplot(2,3,5),imshow(I3,[]);
H3模板laplacian算子滤波结果'
位置5显示H3模板laplacian算子滤波结果图像
图21原图像图22添加椒盐噪声图像图23HI模板laplacian算子滤波图
图24H2模板laplacian算子滤波结果图像图25H3模板laplacian算子滤波结果图像
laplacian算子对边缘的处理明显,它是二阶微分算子,能加强边缘效果,对噪声很敏
感。
它没有方向性,但是可以改变模板的中间系数,会有不同的效果。
3.比较各个边缘算子对图像边缘的检测效果。
subplot(3,3,1),imshow(I),title('
),imshow(I);
)%在3*3子图像的
位置1显示原图像
BW1=edge(I,'
0.1);
%用sobel算子进行边缘检测,判断阈值为0.1
subplot(3,3,2),imshow(BW1);
sobel算子处理后图像'
)%在3*3子图像的位置2显示
sobel算子处理后图像
BW2=edge(I,'
%用roberts算子进行边缘检测,判断阈值为0.1
subplot(3,3,3),imshow(BW2);
roberts算子处理后图像'
)%在3*3子图像的位置3显示
roberts算子处理后图像
BW3=edge(I,'
%用prewitt算子进行边缘检测,判断阈值为0.1
subplot(3,3,4),imshow(BW3);
prewitt算子处理后图像'
)%在3*3子图像的位置4显示
prewitt算子处理后图像
BW4=edge(I,'
log'
0.01);
%用log算子进行边缘检测,判断阈值为0.01
subplot(3,3,5),imshow(BW4);
log算子处理后图像'
)%在3*3子图像的位置5显示log
算子处理后图像
BW5=edge(I,'
canny'
%用canny算子进行边缘检测,判断阈值为0.1
subplot(3,3,6),imshow(BW5);
canny算子处理后图像'
)%在3*3子图像的位置6显示canny算子处理后图像
%生成Laplacian算子滤波器(突出图像中的小细节)(它具有各向
同性)(Laplacian算子对噪声比较敏感,所以图像一般先经过平滑
处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都
是把Laplacian算子和平滑算子结合起来生成一个新的模板。
)
%图像I经Laplacian算子锐化滤波处理
Laplacian算子锐化图像'
置7显示Laplacian算子锐化图像
图26原图像图27sobel算子处理后图像图28roberts算子处理后图像
图29prewitt处理后图图30log处理后图图31canny处理后图像图32Laplacian锐化图
laplacian算子对边缘的处理最明显,Sobel和prewitt较差一些。
Roberts算子定位
比较精确,Prewitt算子是平均滤波的一阶的微分算子,Canny是一阶传统微分中检测阶
跃型边缘效果最好的算子之一。
Prewitt和Sobel算子比Roberts效果要好一些。
Log
滤波器和Canny算子的检测效果优于梯度算子,能够检测出图像较细的边缘部分。
比较
几种边缘检测结果,可以看到Canny算子提取边缘较完整,其边缘连续性较好,效果优
于其它算子。
其次是Prewitt算子,其边缘比较完整。
再次就是Sobel算子。
4.比较各个边缘检测算子对噪声的敏感性,并提出抗噪声性能较好的边缘检测的方法。
subplot(3,3,1),imshow(I),title('
),imshow(I);
)%在3*3子图像的
%给图像加噪声密度为0.02的椒盐噪声
subplot(3,3,2),imshow(J,[]);
)%在3*3子图像的位置2显示添加
椒盐噪声图像
BW1=edge(J,'
subplot(3,3,3),imshow(BW1,[]);
BW2=edge(J,'
subplot(3,3,4),imshow(BW2,[]);
)%在3*3子图像的位置4
显示roberts算子处理后图像
BW3=edge(J,'
subplot(3,3,5),imshow(BW3,[]);
)%在3*3子图像的位置5
显示prewitt算子处理后图像
BW4=edge(J,'
subplot(3,3,6),imshow(BW4,[]);
)%在3*3子图像的位置6显示
log算子处理后图像
BW5=edge(J,'
%用canny算子进行边缘检测,判断阈值为0.1
subplot(3,3,7),imshow(BW5,[]);
)%在3*3子图像的位置7显示
canny算子处理后图像
同性)(Laplacian算子对噪声比较敏感,所以图像一般先经过平
滑处理,因为平滑处理也是用模板进行的,所以通常的分割算法
都是把Laplacian算子和平滑算子结合起来生成一个新的模板。
laplacianH=filter2(H,J);
置8显示Laplacian算子锐化图像
图33原图像图34添加椒盐噪声图像图35sobel算子处理后图像
图3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像分割 实验报告 图像 分割 实验 报告