AG体育 形态学分水岭算法原理与实例实现

日期:2021-01-18 18:17:37 浏览量: 128

原理介绍

OTSU算法,最大熵算法AG体育 ,自适应阈值方法和基于区域的增长算法已在前面编写。它们都有各自的优缺点,分水岭算法也有其优点,因此通常可以产生更鲁棒的分割效果。

分水岭算法(watershed)是一种相对基本的数学形态学分割算法。其基本思想是将灰度图像转换为渐变图像。梯度值被认为是起伏的山脉,局部最小值及其附近被认为是“集水盆地”。想象每个“集水盆地”中都有积水分水岭算法,水位不断上升,洪水梯度低。当泛洪过程停止时亚博网页版 ,将找到分界线亚博app ,并且可以将图像分为几个相连的部分。区。这是带有动画图片的演示:

lpe1 (1)

ima3 (1)

因此找到局部最小值是该算法的关键,但是在实际图像中亚博yabo ,由于存在噪声点或其他干扰因素,使用分水岭算法经常会出现过分分割的现象,这是因为小局部极值点的存在,例如下图,这种分割效果是没有用的:

分水岭算法_杭州市桐庐分水珊瑚岭_分水高级中学贴吧

分水岭算法

为了解决过度分割的问题,可以使用基于标记图像的分水岭算法幸运七星 ,该算法使用先验知识指导分水岭算法以获得更好的图像分割效果。在通常的标记图像中,某些区域中定义了一些灰度。在该区域的洪水过程中,水平面从定义的高度开始,这可以避免对一些非常小的噪声极端区域进行分割。

标记:可以通过人为交互或计算来标记。下面显示了使用基于标记的分水岭算法的过程:第一张图像的红色区域是标记的灰度级。

ima4

lpe2

ima5

通过标记,我们可以获得很好的分割效果:

分水岭算法

OpenCV界面:

void watershed( InputArray image, InputOutputArray markers ); 

输入图像必须是3通道RGB图像。最重要的参数是第二个参数标记。此参数包含不同区域的轮廓。每个轮廓都有自己的唯一编号。轮廓的定位可以通过Opencv实现中的findContours方法完成。然后分水岭算法将使用标记传递的标记作为种子(所谓的注水点分水岭算法,标记点),根据分水岭算法的规则判断图像上的其他像素,并界定每个像素的区域归因。 ,直到处理完图像上的所有像素。将该区域和该区域之间的边界处的值设置为“ -1”以进行区分。

OpenCV的官方示例:

分水岭算法_分水高级中学贴吧_杭州市桐庐分水珊瑚岭

示例代码

效果

分水岭算法

分水岭算法

杭州市桐庐分水珊瑚岭_分水岭算法_分水高级中学贴吧

分水岭算法

标记原始图像+标记分割效果

分水岭算法

分水岭算法

分水岭算法

参考:

++