python opencv之分水岭算法示例之分水岭算法示例
主要介绍了python opencv之分水岭算法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起
跟随小编过来看看吧
本文介绍了python opencv之分水岭算法示例,分享给大家,具体如下:
目标目标
1. 使用分水岭算法对基于标记的图像进行分割
2. 使用函数cv2.watershed()
原理:原理:
灰度图像可以被看成拓扑平面,灰度值高的区域可以看出山峰,灰度值低的区域可以看成是山谷。向每一个山谷当中灌不同颜
色的水。水位升高,不同山谷的水会汇合,为防止不同山谷的水汇合,小在汇合处建立起堤坝。然后继续灌水,然后再建立堤
坝,直到山峰都掩模。构建好的堤坝就是图像的分割。
此方法通常会得到过渡分割的结果,因为图像中的噪声以及其他因素。为了减少此影响,opencv使用基于标记的分水岭算
法,此算法要设置哪些山谷中的汇合点,哪些不是。这是一种交互式的图像分割算法那。我们要给已知对象打上不同表情。如
果某个区域肯定是前景或对象,就使用某个颜色或灰度值标签标记它。如果是背景那么使用其他颜色进行标记,其余不能确定
的部分用0标记。然后使用分水岭算法,每次灌水,标签会被更新,当两个不同颜色的标签相遇就会构建堤坝,知道所有山峰
掩模,最后得到的边界对象值是-1。
代码:代码:
对挨在一起的对象进行分割。
使用Otsu's 二值化后的结果为