- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字图像处理——阈值分割
计算机科学与通信工程学院
实验报告
课程 图像处理 实验题目 图像分割
1. 引言
图像分割是一种重要的图像分析技术。在对图像的研究和应用中,人们往往只对图像中的特定某一部分感兴趣,他们一般对应着图像中某些特定的区域。为了识别它们,可以把他们从图像中分离提取出来。
2. 基本知识
典型的图像分割方法可以分为基于阈值的方法、基于边缘的方法和基于区域的分割方法。
灰度阈值法将图片灰度划分为不同等级,用设置灰度阈值的方法确定有意义的区域。它是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
图像边缘是图像识别中抽取图像特征的重要属性。是由于相邻像素间灰度值剧烈变化引起的。图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测。常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。
水域分割是借鉴了形态学理论的分割方法,其本质是利用了图像的区域特征进行分割图像。将边缘检测与区域生长的优点相结合。
3. 功能分析及设计
用全局阈值、OTSU及迭代法求阈值。结果如图2,3所示
I=imread(i_boat_gray.bmp);
[width,height]=size(I);
%otsu algorithm
level=graythresh(I);
BW=im2bw(I,level);
figure
imshow(BW)
%global threshold
for i=1:width
for j=1:height
if(I(i,j) 80)
BW1(i,j)=0;
else
BW1(i,j)=1;
end
end
end
figure
imshow(BW1)
%迭代求阈值
I=double(I);
T=(min(I(:))+max(I(:)))/2;
done=false;
i=0;
while ~done
r1=find(I=T);
r2=find(IT);
Tnew=(mean(I(r1))+mean(I(r2)))/2;
done=abs(Tnew -T)1;
T=Tnew;
i=i+1;
end
I(r1)=0;
I(r2)=1;
Figure;
imshow(I)
用分水岭算法分割图像:
center1=-10;
center2=-center1;
dist=sqrt(2*(2*center1)^2);
radius=(dist/2) * 1.4;
lims=[floor(center1-1.2*radius) ceil(center2+1.2*radius)];
[x,y]=meshgrid(lims(1):lims(2));
bw1=sqrt((x-center1).^2 + (y-center1).^2) = radius;
bw2=sqrt((x-center2).^2 + (y-center2).^2) = radius;
bw=bw1 | bw2;
figure, imshow(bw,InitialMagnification,fit), title(二进制图像)
D=bwdist(~bw);
figure, imshow(D,[],InitialMagnification,fit)
title(距离变换)
D=-D;
D(~bw)=-Inf;
L=watershed(D);
rgb=label2rgb(L,jet,[.5 .5 .5]);
figure, imshow(rgb,InitialMagnification,fit)
title(分水岭方法)
Sobel、Prewitt、Roberts等算子的边缘提取算法。
a=imread(d:\skull.png);
bw1=edge(a,sobel);
bw2=edge(a,prewitt);
bw3=edge(a,r
文档评论(0)