OpenCV之分水岭算法

本文介绍了分水岭算法,它是一种基于拓扑理论的数学形态学分割方法,可将图像边缘转化为“山脉”、均匀区域转化为“山谷”以分割目标。还阐述了其计算过程,包括排序和淹没步骤。此外,讲解了基于标记的分割算法wartshed()函数的实现及使用方法。

分水岭算法

在许多实际的应用中,我们需要分割图像,但是无法从背景图像中获得有用信息。但是分水岭算法在这方面往往非常有效,它可以将图像中的边缘转化为“山脉”,将均匀区域转化为“山谷”,这样有助于分割目标。

分水岭算法是一种记忆拓扑理论的数学形态学的分割方法,其基本思想是把图像看作测地学上的拓扑地貌,图像中每点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。

分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法主要分两个步骤:一个是排序过程,一个是淹没过程首先对每个像素的灰度级进行从低到高的排序,然后在从低到高实现淹没的过程中,对每个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。分水岭变化得到的是输入图像的集水盆图像,集水盆之间的边界点,即分水岭。显然,分水岭表示的是输入图像的极大值点。

也就是说,分水岭算法首先计算灰度图像的梯度;这对图像中的“山谷”或没有纹理的“盆地”(亮度值低的点)的形成是很有效的,也对“山头”或图像中有主导线段的“山脉”的形成有效。然后开始从用户指定的点(或者算法得到的点)开始持续“灌注”盆地直到这些区域连成一片。基于这样产生的标记可以把区域合并到一起,合并后的区域通过聚集的方式进行分割。

实现分水岭算法:wartshed()函数

函数watershed实现的分水岭算法是基于标记的分割算法的一种。在把图像传给函数之前,我们需要大致的勾画出图像中期望分割的区域,它们被标记为正指数。所以,每一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值