win10+Python3.7.3+OpenCV3.4.1入门学习(十七 图像分割与提取)————17.1 图像分割与提取—分水岭算法基本原理

Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm

第17章 图像分割与提取

在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来。例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆、行人或者其他对象。我们希望将这些对象从视频中提取出来,而忽略那些没有对象进入背景的视频内容。
在前面的章节中,我们讨论了如何使用诸如图像形态学变换、阈值算法、图像金字塔、图像轮廓、边缘检测等方法对图像进行分割。本章介绍使用分水岭算法及GrabCut算法对图像进行分割及提取。
用分水岭算法实现图像分割与提取
图像分割是图像处理过程中一种非常重要的操作。分水岭算法将图像形象地比喻为地理学上的地形表面,实现图像分割,该算法非常有效。

17.1 算法原理

冈萨雷斯在《数字图像处理》一书中,对分水岭算法进行了细致的分析与介绍。OpenCV的官网建议学习者阅读国立巴黎高等矿业学校图像处理实验室(The Image Processing Laboratory of MINES ParisTech)的CMM(Centre for Mathematical Morphology)网站上关于分水岭算法的介绍和动画演示。
下面对分水岭算法的相关内容做简单的介绍。
任何一幅灰度图像,都可以被看作是地理学上的地形表面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。如下图所示,其中左图是原始图像,右图是其对应的“地形表面”。
如果我们向每一个山谷中“灌注”不同颜色的水(这里采用了OpenCV官网的表述,冈萨雷斯将灌注表述为在山谷中打洞,然后让水穿过洞以均匀的速率上升)。那么,随着水位不断地升高,不同山谷的水就会汇集到一起。在这个过程中,为了防止不同山谷的水交汇,我们需要在水流可能汇合的地方构建堤坝。该过程将图像分成两个不同的集合:集水盆地和分水岭线。我们构建的堤坝就是分水岭线,也即对原始图像的分割。这就是分水岭算法。
在这里插入图片描述

在下图中,左图是原始图像,右图是使用分水岭算法得到的图像分割结果。在CMM的网站上不仅提供了该示例图像,还提供了动画演示效果,有兴趣的读者可以去网站上看看。
在这里插入图片描述

由于噪声等因素的影响,采用上述基础分水岭算法经常会得到过度分割的结果。过度分割会将图像划分为一个个稠密的独立小块,让分割失去了意义。下图展示了过度分割的图像。其中左图是电泳现象的图像,右图是过度分割的结果图像,可以看到过度分割现象非常严重。
在这里插入图片描述

为了改善图像分割效果,人们提出了基于掩模的改进的分水岭算法。改进的分水岭算法允许用户将他认为是同一个分割区域的部分标注出来(被标注的部分就称为掩模)。这样,分水岭算法在处理时,就会将标注的部分处理为同一个分割区域。大家可以尝试使用微软PowerPoint中的“删除背景”功能,加深对此改进算法的理解。
在下图中,左图是原始图像,我们对其做了标注处理,其中被标注为深色的三个小色块表示:在使用掩模分水岭算法时,这些部分所包含的颜色都会被分割在同一个区域内。使用掩模分水岭算法得到的分割结果如下图中的右图所示。

在这里插入图片描述

采用改进的分水岭算法对下图中左侧的电泳图像进行掩模处理,得到右侧的分割结果。可以看出,分割结果得到明显的改进。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值