分水岭算法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明:在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
分水岭的计算过程是一个迭代标注过程。分水岭计算分两个步骤:
一个是排序过程;
一个是淹没过程。首先对每个像素的灰度级进行从低到高的排序,然后在从低到高实现淹没的过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。分水岭表示的是输入图像的极大值点。
实现分水岭算法: watershed()函数 基于标记的分割算法
void watershed(InputArray image, InputoutputArray markers)
参数1,InputArray类型的src,输入图像,填Mat类的对象,且需为8位三通道的彩色图像。
参数2,markers,运算结果,输入 / 输出 32位单通道图像的标记结果。
需和源图片有一样的尺寸和类型。
《opencv学习笔记》-- 分水岭算法
最新推荐文章于 2024-05-03 14:17:52 发布