OpenCV2编程手册笔记之 5.5分水岭算法对图像进行分割

本文介绍了OpenCV中的分水岭算法用于图像分割的原理和步骤,包括二值化、腐蚀与膨胀操作、生成标记图以及利用WatershedSegmenter类实现图像分割。代码示例展示了如何应用该算法进行实际操作。
摘要由CSDN通过智能技术生成

分水岭算法可以用来快速分割图像成为同类区域

原理概述:将图像视为拓扑结构的地图,均质区域就是被陡峭边缘包围的平坦盆地,因而,可以选出较为平坦的区域。

分水岭分割的结果通过cv::watershed函数获取,在这里,我们创建一个WatershedSegmenter类,进行分水岭算法的封装工作。

整体算法概述:

在选取的图像中,我们先进行二值化操作,操作争取将前景物体最大可能性提出。

之后,多次采用腐蚀的方法得到目标的前景图片,这个前景图片就只有0和255两个灰度值;

再多次使用膨胀的方法得到目标的背景图片,在之后使灰度图中高于128灰度的像素变为0,低于的部分为128(采用threshold);

之后,将前景背景相加,得到一张标记图,这张标记图就只有0,128,255三个灰度值。

之后,就可以得到图片了。

啥也不说,上代码。

分水岭算法概述:

1.一张灰度图,我们先将灰度值想象成柱状图,那么我们就能得到一张三维的灰度柱状图分布表。

2.如上所述,二值化后的图片只有0,128,255的几个值。

3.也就是说,腐蚀过后的图片是我们的前景图片,只有0和255这两个值,在三维图上,255的选定区域是最高的山峰,也就是标记区域,代表着目标图像。

   膨胀+二值化选取之后的图像拥有128和0两个值,0对应的是目标图像的区域,12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值