分水岭算法3_watershed

在matlab中正确的使用水坝算法分割图像

网址:http://www.it165.net/pro/html/201312/8297.html

上看到一篇讲解这个算法的帖子,看看如何能够正确的使用这个算法。 例如,这是一张图像,我们希望用watershed的方法对这幅图像进行分割。

当然,在matlab里面,直接对这幅图像使用watershed这个函数,并不能得到很好的分割结果。这里我们看看如何能够正确的使用watershed分割这个图像,同时也看看watershed变换和watershed分割的区别。

首先,我们直接调用watershed,看看结果是什么样的

view sourceprint?

1.url = 'http://www.bfcat.com/wp-content/uploads/auto_save_image/2013/12/004306JQI.png';

2.bw = imread(url);

3.L = watershed(bw);

4.Lrgb = label2rgb(L);

5.imshow(Lrgb)

刚刚看到结果的时候,我们可能很纳闷分割结果为什么是这个样子。让我们用imfuse这个函数,将两幅图像显示在一起,将图像中的一个区块放大看

imshow(imfuse(bw,Lrgb))

axis([10 175 15 155])

我们可以看出,watershed变换总会在每一个局部最小的地方给出一个水坝区域。这些小的黑色“点”就是局部最小值,因此在每个周围都有一个watershed区域。

即使我们填补了这些空洞,我们也没法获得用户想要的分割效果。这就是我们要注意到的watershed变换和watershed分割的区别。也就是说,watershed分割算法是watershed变

换的一种应用,而简单的对图像进行watershed

变换,并不能达到最终的分割目的。

这里有一个帖子 The Watershed Transform: Strategies for Image Segmentation,详细介绍了watershed变换的原理。这个帖子的中心思想概括为一句话:用水坝变换进行图像分割的关键,在于先要将图像进行转换,使得目标对应不同的“蓄水池”.

对于这样一副图像,包含一些接近圆形,互相接触的区块,我们可以使用距离变换来生成另一幅图像,其中的目标对应“蓄水池”。

进行距离变换之前,我们先清理一下噪声。bwareaopen这个“开”运算,可以用来清除很小的点。

bw2 = ~bwareaopen(~bw, 10);

imshow(bw2)

然后我们进行距离变换。

D = -bwdist(~bw);

imshow(D,[])

基于这个图像,我们再来做水坝变换

Ld = watershed(D);

imshow(label2rgb(Ld))

这里的白线就是分割的边缘。由于原图是二值图,因此我们很容易区分前景和背景。

bw2 = bw;

bw2(Ld == 0) = 0;

imshow(bw2)

这样的结果中包含了不少过分割。原因和上面提到的一样,局部最小太多。对于这种情况,通用的技巧是,在基于watershed的图像分割中使用imextendedmin这个函数过滤掉一些特别小(指区域小)的局部最小。然后,我们修改距离变换的结果,让滤波后的区域不会出现局部最小值,这个操作叫做“强制最小(minima imposition)”,可以用imimposemin这个函数实现。

使用imextendedmin将会只在我们希望分割的区块中间产生小点。然后我们使用imshowpair来将模板叠加到原图上。

mask = imextendedmin(D,2);

imshowpair(bw,mask,'blend')

最后,我们我们修改距离变换的结果,让其只在想要的位置具有局部最小。然后进行watershed。这就是我们想要的结果了。

D2 = imimposemin(D,mask);

Ld2 = watershed(D2);

bw3 = bw;

bw3(Ld2 == 0) = 0;

imshow(bw3)

在matlab中正确的使用水坝算法分割图像

网址:http://www.it165.net/pro/html/201312/8297.html

上看到一篇讲解这个算法的帖子,看看如何能够正确的使用这个算法。 例如,这是一张图像,我们希望用watershed的方法对这幅图像进行分割。

当然,在matlab里面,直接对这幅图像使用watershed这个函数,并不能得到很好的分割结果。这里我们看看如何能够正确的使用watershed分割这个图像,同时也看看watershed变换和watershed分割的区别。

首先,我们直接调用watershed,看看结果是什么样的

view sourceprint?

1.url = 'http://www.bfcat.com/wp-content/uploads/auto_save_image/2013/12/004306JQI.png';

2.bw = imread(url);

3.L = watershed(bw);

4.Lrgb = label2rgb(L);

5.imshow(Lrgb)

刚刚看到结果的时候,我们可能很纳闷分割结果为什么是这个样子。让我们用imfuse这个函数,将两幅图像显示在一起,将图像中的一个区块放大看

imshow(imfuse(bw,Lrgb))

axis([10 175 15 155])

我们可以看出,watershed变换总会在每一个局部最小的地方给出一个水坝区域。这些小的黑色“点”就是局部最小值,因此在每个周围都有一个watershed区域。

即使我们填补了这些空洞,我们也没法获得用户想要的分割效果。这就是我们要注意到的watershed变换和watershed分割的区别。也就是说,watershed分割算法是watershed变

换的一种应用,而简单的对图像进行watershed

变换,并不能达到最终的分割目的。

这里有一个帖子 The Watershed Transform: Strategies for Image Segmentation,详细介绍了watershed变换的原理。这个帖子的中心思想概括为一句话:用水坝变换进行图像分割的关键,在于先要将图像进行转换,使得目标对应不同的“蓄水池”.

对于这样一副图像,包含一些接近圆形,互相接触的区块,我们可以使用距离变换来生成另一幅图像,其中的目标对应“蓄水池”。

进行距离变换之前,我们先清理一下噪声。bwareaopen这个“开”运算,可以用来清除很小的点。

bw2 = ~bwareaopen(~bw, 10);

imshow(bw2)

然后我们进行距离变换。

D = -bwdist(~bw);

imshow(D,[])

基于这个图像,我们再来做水坝变换

Ld = watershed(D);

imshow(label2rgb(Ld))

这里的白线就是分割的边缘。由于原图是二值图,因此我们很容易区分前景和背景。

bw2 = bw;

bw2(Ld == 0) = 0;

imshow(bw2)

这样的结果中包含了不少过分割。原因和上面提到的一样,局部最小太多。对于这种情况,通用的技巧是,在基于watershed的图像分割中使用imextendedmin这个函数过滤掉一些特别小(指区域小)的局部最小。然后,我们修改距离变换的结果,让滤波后的区域不会出现局部最小值,这个操作叫做“强制最小(minima imposition)”,可以用imimposemin这个函数实现。

使用imextendedmin将会只在我们希望分割的区块中间产生小点。然后我们使用imshowpair来将模板叠加到原图上。

mask = imextendedmin(D,2);

imshowpair(bw,mask,'blend')

最后,我们我们修改距离变换的结果,让其只在想要的位置具有局部最小。然后进行watershed。这就是我们想要的结果了。

D2 = imimposemin(D,mask);

Ld2 = watershed(D2);

bw3 = bw;

bw3(Ld2 == 0) = 0;

imshow(bw3)


相关文章

  • 基于分水岭的图像分割程序设计
  • 摘 要 在图像处理中,图像分割是一项非常关键的技术,在图像工程中占有重要的地位.随着科学技术的发展,它在众多领域中有着广泛的应用.如医学.地质.环保.气象.常见的分割算法包括阔值分割算法.边缘检测方法.区域提取方法和结合特定理论工具分割法. ...查看


  • 基于Matlab的图像阈值分割算法研究_李小琦
  • 基于Matlab的图像阈值分割算法研究 李小琦 ()武汉大学珞珈学院计算机科学系,湖北武汉406430 摘 要:重点讨论了图像分割法中的阈值研究法,包括全局阈值法和自适应阈值法.对全局阈值算法中的人工选择 法.迭代式阈值选择法.最大类间方差 ...查看


  • 图像分割方法综述
  • 第31卷第6期世界科技研究与发展 V01.31No.6 2009年12月1074-1078页 WORLDSCI-TECHR&D Dee・2009 PP・1074-1078 图像分割方法综述宰 魏伟波潘振宽 (青岛大学信息工程学院,青 ...查看


  • 基于数字图像处理的TC4钛合金金相组织定量分析
  • 2014年4月第9卷 第2期 失效分析与预防 April , 2014Vol. 9, No. 2 基于数字图像处理的TC4钛合金金相组织定量分析 吴 伟1, 吴剑剑1, 张永华2, 邬冠华1, 卢 鹏1, 吴 宇1, 张士晶1 (1. 无损 ...查看


  • ArcGIS_在DEM的基础上划分小流域
  • ArcGIS 10.0 在DEM 的基础上划分小流域 根据DEM 提取河流网络,计算流水累积量.流向.根据指定的流域面积大小自动划分流域 1. 加载DEM 打开ArcMap ,加载数据DEM 数据文件 如果DEM 中有很多异常值,可能刚加载 ...查看


  • 图像处理技术
  • 关键词: 数学形态学; 形态滤波; 边缘检测; 图像分割 摘要: 数学形态学作为一种新的图像处理和分析工具越来越受到人们的重视, 其应用领域非常广泛, 包括文字识别.图像压缩与编码.医学图像处理.视觉检测以及机器人视觉等.一些图像分析系统还 ...查看


  • 遥感影像分类实验报告
  • 面向对象分类实验报告 姓名: 学号: 指导老师: 地球科学与环境工程学院 一.实验目的 面向对象法模拟人类大脑认知过程,将图像分割为不同均质的对象,充分利用对象所包含的信息,将知识库转换为规则特征,从而提取影像信息.因为分析的是对象而不是像 ...查看


  • 黄山英文介绍
  • :1990年12月,安徽黄山风景区被联合国科教文组织评为"世界自然和文化遗产名录". 黄山屹立在中国安徽省南部(北纬30度1分,东经118度1分),盘垣于歙.黟.太平.休宁四县之间,方圆250平方公里,精华部份154平方 ...查看


  • 数字图像处理大作业
  • 图像处理技术 大作业 院 (系): 物联网工程学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 摘要 图像分割就是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程.它是图像处理.模式识别和人工智能等多个领域中的重要课题 ...查看


热门内容