ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:850.31KB ,
资源ID:4329919      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4329919.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图像处理中的标记分水岭分割算法.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图像处理中的标记分水岭分割算法.docx

1、图像处理中的标记分水岭分割算法图像处理中的标记分水岭分割算法如果图像中的目标物体是连接在一起的,则分割起来会更困难,分水岭分割算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一幅“地形图”,其中亮度比较强的区域像素值较大,而比较暗的区域像素值较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。直接应用分水岭分割算法的效果往往并不好,如果在图像中对前景对象和背景对象进行标注区别,再应用分水岭算法会取得较好的分割效果。有很多图像处理工具箱函数可以用到,如fspecial、imfilter、watershed、lable2rgb、imopen、imclose、imr

2、econstruct、imcomplement、imregionalmax、bwareaopen、graythresh、和imimposemin函数等。下面进行一个例子,步骤如下。1、 读取图像并求其边界,代码如下。rgb = imread(pears.png);%读取原图像I = rgb2gray(rgb);%转化为灰度图像figure; subplot(121)%显示灰度图像imshow(I)text(732,501,Image courtesy of Corel,. FontSize,7,HorizontalAlignment,right)hy = fspecial(sobel);%so

3、bel算子hx = hy;Iy = imfilter(double(I), hy, replicate);%滤波求Y方向边缘Ix = imfilter(double(I), hx, replicate);%滤波求X方向边缘gradmag = sqrt(Ix.2 + Iy.2);%求模subplot(122); imshow(gradmag,), %显示梯度title(Gradient magnitude (gradmag)在这一步骤中,首先读取一套真彩色图像,然后把真色图像转化为灰度图像,结果如图所示:图1原图和梯度图像使用sobel边缘算子对图像进行水平和垂直方向的滤波,然后求取模值,sob

4、el算子滤波后的图像在边缘处会显示比较大的值,在没有边界处的值会很小,如上图右图所示。2、 直接使用梯度模值进行分水岭算法,代码如下。L = watershed(gradmag);%直接应用分水岭算法Lrgb = label2rgb(L);%转化为彩色图像figure; imshow(Lrgb), %显示分割后的图像title(Watershed transform of gradient magnitude (Lrgb)直接使用梯度模值图像进行分水岭算法得到的结果往往会存在过度分割的现象,如下图所示。因此通常需要对前景对象和背景对象进行标记,以获得更好的分割效果。图2直接对梯度图像进行分水岭

5、分割3、 分别对前景和背景进行标记,代码如下。se = strel(disk, 20);%圆形结构元素Io = imopen(I, se);%形态学开操作figure; subplot(121)imshow(Io), %显示执行开操作后的图像title(Opening (Io)Ie = imerode(I, se);%对图像进行腐蚀Iobr = imreconstruct(Ie, I);%形态学重建subplot(122); imshow(Iobr), %显示重建后的图像title(Opening-by-reconstruction (Iobr)Ioc = imclose(Io, se);%形

6、态学关操作figure; subplot(121)imshow(Ioc), %显示关操作后的图像title(Opening-closing (Ioc)Iobrd = imdilate(Iobr, se);%对图像进行膨胀Iobrcbr = imreconstruct(imcomplement(Iobrd), . imcomplement(Iobr);%形态学重建Iobrcbr = imcomplement(Iobrcbr);%图像求反subplot(122); imshow(Iobrcbr), %显示重建求反后的图像title(Opening-closing by reconstruction

7、 (Iobrcbr)fgm = imregionalmax(Iobrcbr);%局部极大值figure; imshow(fgm), %显示重建后局部极大值图像title(Regional maxima of opening-closing by reconstruction (fgm)I2 = I;I2(fgm) = 255;%局部极大值处像素设置为255figure; imshow(I2), %在原图上显示极大值区域title(Regional maxima superimposed on original image (I2)se2 = strel(ones(5,5);%结构元素fgm2

8、= imclose(fgm, se2);%关操作fgm3 = imerode(fgm2, se2);%腐蚀fgm4 = bwareaopen(fgm3, 20);%开操作I3 = I;I3(fgm4) = 255;%前景处设置为255figure; subplot(121)imshow(I3)%显示修改后的极大值区域title(Modified regional maxima)bw = im2bw(Iobrcbr, graythresh(Iobrcbr);%转化为二值图像subplot(122); imshow(bw), %显示二值图像title(Thresholded opening-clo

9、sing by reconstruction)可以使用很多算法来对前景对象进行标记,标记的每个对象内部的像素值是连接在一起的。在这个例子中,使用形态学重建技术对前景对象进行标记,首先使用imopen函数对图像进行开操作,如图3左图所示,使用半径为20的圆形结构元素,开操作是膨胀和腐蚀操作的结合。另外一种方法是先对图像进行腐蚀,然后对图像进行形态学重建,处理后的图像如图3右图所示。图3开操作和重建操作结果对比在开操作之后进行关键操作可以去除一些很小的目标,如苹果上的茎干和一些污点等,如图4中左图所示。另外一种方法是先对图像进行腐蚀,然后对图像进行形态学重建,重建后的图像如图4右图所示,注意在重建

10、之前需要先对图像求反,然后再重建之后再进行一次求反。图4关操作和重建操作结果对比对比两幅图像Iobrcbr和Ioc,以重建为基础的开关操作(结果为Iobrcbr)比一般的开关操作(结果为Ioc)比一般的开关操作(结果为Ioc)在去除小的污点时会更有效,并且不会影响这个图像的轮廓。计算Iobrcbr的局部极大值会得到比较好的前景标记,如图5所示。图5求取局部极大值的图像为了更好的理解这个结果,可以在原图像的基础上,显示局部极大值,对前景图像进行标记,如图6所示。图6在原图上显示局部极大值注意到图像中还有少部分目标物体,即苹果,未被正确的标记出,如果这些目标物体不能被正确的进行标记,则不能正确的进

11、行分割。并且,少部分前景目标物体已经拓展到边缘,因此应该收缩一下边缘,可以先对图像进行操作,然后进行腐蚀来达到这样的效果。这个过程会产生一些孤立的像素点,可以使用bwareaopen函数来达到这样的效果,这个过程将像素点数量较少的孤立像素点去除,如图7左图所示。图7调整后的局部极大值图像和二值图像将图像Iobrcbr使用合适的阈值转化成二值图像,其中淡颜色的值为背景,转化成二值图像如图7右图所示。4、 进行分水岭变换并显示,代码如下。D = bwdist(bw);%计算距离DL = watershed(D);%分水岭变换bgm = DL = 0;%求取分割边界figure; imshow(bg

12、m), %显示分割后的边界title(Watershed ridge lines (bgm)gradmag2 = imimposemin(gradmag, bgm | fgm4);%设置最小值L = watershed(gradmag2);%分水岭变换I4 = I;I4(imdilate(L = 0, ones(3, 3) | bgm | fgm4) = 255;%前景及边界处设置为255figure; subplot(121)imshow(I4)%突出前景及边界title(Markers and object boundaries)Lrgb = label2rgb(L, jet, w, sh

13、uffle);%转化为伪色彩图像subplot(122); imshow(Lrgb)%显示伪色彩图像title(Colored watershed label matrix)figure; imshow(I), hold onhimage = imshow(Lrgb);%在原图上显示伪色彩图像set(himage, AlphaData, 0.3);title(Lrgb superimposed transparently on original image)从图7中可以看出,背景像素是黑色的,但在理想情况下,我们不希望背景标记太靠近目标对象的边缘,可以通过“骨骼化”进行细化,对二值图像的距离进

14、行分水岭变换,然后寻找分水岭的界限,分水岭的界限如图8所示。图8分水岭界限 函数imimpesemin可以用来对图像进行修改,使图像在一些特定的区域像素值最小。在本程序中,使用imimpesemin函数修改梯度模值图像,使梯度模值图像在标记的前景对象和背景对象中有最小值,然后进行分水岭变换得到矩阵L。 还有一种可视化的技术是在原图像中分别标记前景对象,背景对象和边界。为了使分割的边界更清楚,可以对图像进行膨胀操作,如图9左图所示。 从图9左图中可以看出,对前景对象和背景对象标记后再进行分水岭变换比直接在梯度模值图像上进行分水岭变换的效果要好得多。 另外一种显示分割图像的方法是使用彩色图像显示,使用label2rgb函数将分水岭变换后的图像显示为彩色,如图9右图所示。图9分割图像的显示同样也可以在原图的基础上,使用透明技术将图像显示为伪彩色图像,如图10所示。图10 分割图像的伪彩色显示

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1