![da2cd476846be8f9b30e69136d306498.png](https://i-blog.csdnimg.cn/blog_migrate/4200a868c740cfaeab4b5e25bfb0c8c2.jpeg)
1. 分水岭分割方法
它是依赖于形态学的,图像的灰度等级不一样,如果图像的灰度等级一样的情况下怎么人为的把它造成不一样?可以通过距离变换实现,这样它们的灰度值就有了阶梯状的变换。风水岭算法常见的有三种方法:(1)基于浸泡理论的分水岭分割方法;(2)基于连通图方法;(3)基于距离变换的方法。OpenCV 中是基于距离变换的分割方法,就相当于我们的小山头(认为造成的)。
基本的步骤:
![b68c3b2e1fd08bc22f1bd473fdc4c1ba.png](https://i-blog.csdnimg.cn/blog_migrate/a51ff520d526340d100519f51087bce4.png)
例子1 粘连对象分离和计数。
例子代码:
#include
![e1c6b67460c2d56970ffb1ca34a056c2.png](https://i-blog.csdnimg.cn/blog_migrate/0df101d16a960b9a97ebfd02b61ff32f.jpeg)
总结:有时候会导致碎片化,过度分割,因为二值化中如果有很多小的黑点或碎片,在分割的时候导致很多 mask ,即小山头太多了,这个时候我们要考虑怎么去合并它,可以通过联通区域的直方图,或者像素值均值相似程度等。
例子2:图像分割
#include
效果图:
![0bee87ff737cc734da433dc965274ed6.png](https://i-blog.csdnimg.cn/blog_migrate/794475bd41cab038384fca3d9d380dcd.jpeg)
2. GrabCut 算法分割图像
GrabCut 算法的原理前面有介绍过,这里就不在介绍了,具体可以看下文章末尾往期推荐中阅读。下面例子实现图像中对象的抠图。
基本步骤:
![a481136eec6995511b4b6a282d731968.png](https://i-blog.csdnimg.cn/blog_migrate/6d7c221d7d9085696c476ade687c9a77.png)
例子代码:
#include
效果图:
![7051741e889770140eab5345f620fdce.png](https://i-blog.csdnimg.cn/blog_migrate/627d011d326624b46d1616471b69b0be.jpeg)
![fadbca8f021ea8df321263b02898bd30.png](https://i-blog.csdnimg.cn/blog_migrate/f04076cbcb8a4835d5bf1aa4161191fd.png)
欢迎关注我的微信公众号“OpenCV图像处理算法”,主要是记录自己学习图像处理算法的历程,包括特征提取、目标跟踪、定位、机器学习和深度学习,每一个例子都会提供源码和例子所用的资料,欢迎同行的同学关注我和我一起虚度光阴吧!!!