opencv 阈值分割_68.图像分割(基于图论的分割方法Grab Cut) OpenCV从零开始到图像识别...

本文介绍了图像分割的概念和主要方法,包括阈值分割、边缘分割、区域分割、能量泛函分割、区域色彩分割、张量分割和基于图论的分割。重点讨论了基于图论的分割方法,如Grab Cut,它与图的最小割问题相关联,用于优化图像的边界和区域分割。文章适合对图像处理感兴趣的读者,提供了相关算法的简介和参考资料。
摘要由CSDN通过智能技术生成

本文作者:小嗷

微信公众号:aoxiaoji

吹比QQ群:736854977(需要几位吹比大佬)


86eb8f5754efe577f69360da1a1e9922.png

所谓图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性。我们先对目前主要的图像分割方法做个概述,后面再对个别方法做详细的了解和学习。

4da0ae3597e34dcbd12d3698e717d682.png


在本篇中,您将学习:

小嗷写过的N种分割方法(与其说分割不如说区分):

  • 基于阈值的分割方法

  • 基于边缘的分割方法

  • 基于区域的分割方法

  • 基于能量泛函的分割方法

  • 基于区域色彩分割方法

  • 基于张量进行各向异性图像分割方法

还有就是小嗷接下来要写的:

  • 基于图论的分割方法


本文你会找到以下问题的答案:

  1. 复习一下小嗷的以前的文章

  2. 新的分割方法


2.1 理论

1、基于阈值的分割方法

阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值相比较,最后将像素根据比较结果分到合适的类别中。因此,该类方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。

5.过滤很小或很大像素的图像点(阈值化)--- OpenCV从零开始到图像(人脸 + 物体)识别系列

就是大于小于等于没啥意思。当然,就看我们怎么用。

2、基于边缘的分割方法

所谓边缘是指图像中两个不同区域的边界线上连续的像素点的集合,是图像局部特征不连续性的反映,体现了灰度、颜色、纹理等图像特性的突变。通常情况下,基于边缘的分割方法指的是基于灰度值的边缘检测,它是建立在边缘灰度值会呈现出阶跃型或屋顶型变化这一观测基础上的方法。

阶跃型边缘两边像素点的灰度值存在着明显的差异,而屋顶型边缘则位于灰度值上升或下降的转折处。正是基于这一特性,可以使用微分算子进行边缘检测,即使用一阶导数的极值与二阶导数的过零点来确定边缘,具体实现时可以使用图像与模板进行卷积来完成。

37.Sobel算子(离散函数、差分、有限集、可列集、真子集、自然数、Sobel、convertScaleAbs、Scharr)

38.Laplace算子(拉普拉斯算子、极坐标、各向同性/异性、边缘/拉普拉斯算子)--- OpenCV从零开始到图像

40.使用Canny算法查找图像中的边缘(亚像素、Scalar、copyTo)--- OpenCV从零开始到图像

3、基于区域的分割方法

此类方法是将图像按照相似性准则分成不同的区域,主要包括种子区域生长法、区域分裂合并法和分水岭法等几种类型。

       种子区域生长法是从一组代表不同生长区域的种子像素开始,接下来将种子像素邻域里符合条件的像素合并到种子像素所代表的生长区域中,并将新添加的像素作为新的种子像素继续合并过程,直到找不到符合条件的新像素为止。该方法的关键是选择合适的初始种子像素以及合理的生长准则。

        区域分裂合并法(Gonzalez,2002)的基本思想是首先将图像任意分成若干互不相交的区域,然后再按照相关准则对这些区域进行分裂或者合并从而完成分割任务,该方法既适用于灰度图像分割也适用于纹理图像分割。

        分水岭法(Meyer,1990)是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。该算法的实现可以模拟成洪水淹没的过程,图像的最低点首先被淹没,然后水逐渐淹没整个山谷。当水位到达一定高度的时候将会溢出,这时在水溢出的地方修建堤坝,重复这个过程直到整个图像上的点全部被淹没,这时所建立的一系列堤坝就成为分开各个盆地的分水岭。分水岭算法对微弱的边缘有着良好的响应,但图像中的噪声会使分水岭算法产生过分割的现象。

58.基于距离变换和分水岭算法的图像分割(拓扑学、垂直平分线、distanceTransform /watershed)

4、基于能量泛函的分割方法

       该类方法主要指的是活动轮廓模型(active contour model)以及在其基础上发展出来的算法,其基本思想是使用连续曲线来表达目标边缘,并定义一个能量泛函使得其自变量包括边缘曲线,因此分割过程就转变为求解能量泛函的最小值的过程,一般可通过求解函数对应的欧拉(Euler.Lagrange)方程来实现,能量达到最小时的曲线位置就是目标的轮廓所在。按照模型中曲线表达形式的不同,活动轮廓模型可以分为两大类:参数活动轮廓模型(parametric active contour model)和几何活动轮廓模型(geometric active contour model)。

       参数活动轮廓模型是基于Lagrange框架,直接以曲线的参数化形式来表达曲线,最具代表性的是由Kasset a1(1987)所提出的Snake模型。该类模型在早期的生物图像分割领域得到了成功的应用,但其存在着分割结果受初始轮廓的设置影响较大以及难以处理曲线拓扑结构变化等缺点,此外其能量泛函只依赖于曲线参数的选择,与物体的几何形状无关,这也限制了其进一步的应用。

       几何活动轮廓模型的曲线运动过程是基于曲线的几何度量参数而非曲线的表达参数,因此可以较好地处理拓扑结构的变化,并可以解决参数活动轮廓模型难以解决的问题。而水平集(Level Set)方法(Osher,1988)的引入,则极大地推动了几何活动轮廓模型的发展,因此几何活动轮廓模型一般也可被称为水平集方法。

39.积分、泛函 + 欧拉-拉格朗日方程、实数、标量、变分法、极值、弧微分、范数(数学篇)

53.轮廓(findContours/drawContours)--- OpenCV从零开始到图像

55.在轮廓中创建边框和圆(迭代算法、boundingRect、minEnclosingCircle)

5、基于区域色彩分割方法

在窗口中左键长按拉到你想要的区域,松手 -> 自动获取选中区域色彩直方图 -> 移动就跟着走(实际受到环境因素的影响,效果不怎么好,不同于软件生成图。),代码在本篇百度云链接上,

32.色彩分割(inRange/cvtColor/iostream/max/min)--- OpenCV从零开始到图像

6、基于张量进行各向异性图像分割方法

因为涉及的知识点较多,文章较长。故拆分几篇,对大家说声不好意思。

张量这玩意在深度学习是比重还是有相当分量

63.利用梯度结构张量进行各向异性图像分割之一(张量篇)

64.矩阵及其运算(数学篇)

65.逆矩阵/线性独立/矩阵的秩/初等变换/阶梯型矩阵/消元法/高斯消元法

66.利用梯度结构张量对图像进行各向异性分割--- OpenCV从零开始到图像识别

当然,小嗷知道自己写张量不够彻底不够好,会补上。

7、基于图论的分割方法

此类方法把图像分割问题与图的最小割(min cut)问题相关联。首先将图像映射为带权无向图G=,图中每个节点N∈V对应于图像中的每个像素,每条边∈E连接着一对相邻的像素,边的权值表示了相邻像素之间在灰度、颜色或纹理方面的非负相似度。而对图像的一个分割s就是对图的一个剪切,被分割的每个区域C∈S对应着图中的一个子图。而分割的最优原则就是使划分后的子图在内部保持相似度最大,而子图之间的相似度保持最小。基于图论的分割方法的本质就是移除特定的边,将图划分为若干子图从而实现分割。目前所了解到的基于图论的方法有GraphCut,GrabCut和Random Walk等。

下篇文章主要参考文献如下

《Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images》(Boykov,iccv01)这篇paper讲怎么用graphcut来做image segmentation。

在Boykov 和 Kolmogorov 俩人的主页上就有大量的code。包括maxflow/min-cut、stereo algorithms等算法:

http://pub.ist.ac.at/~vnk/software.html

http://vision.csd.uwo.ca/code/

康奈尔大学的graphcuts研究主页也有不少信息:

http://www.cs.cornell.edu/~rdz/graphcuts.html

《Image Segmentation: A Survey of Graph-cut Methods》(Faliu Yi,ICSAI 2012)

3c1f116c85e5442ed3582f0697aea63c.png

  1. 本人是抱着玩一玩的心态,学习opencv(其实深度学习没有外界说的这么高深,小嗷是白板,而且有工作在身并且于代码无关)

  2. 大家可以把我的数学水平想象成初中水平,毕竟小嗷既不是代码靠吃饭又不是靠数学吃饭,毕业N年

  3. 写文章主要是为了后人少走点弯路,多交点朋友,一起学习

  4. 如果有好的图像识别群拉我进去QQ:631821577

  5. 就我一个白板,最后还是成的,你们别怕,慢慢来吧

e1a1fbbbf77e3d2e0eb2efa1e2acadc3.png

分享可以无数次,转载成自己文章QQ邮箱通知一下,未经授权请勿转载。

邮箱:631821577@qq.com

QQ群:736854977

有什么疑问公众号提问,下班或者周六日回答,ths

感言

分割系列分成三部曲。第一部是先简单总结分割类型;第二部写一下Graph Cut原理和Grab Cut原理;第三部,opencv实现代码和源码解析。

不出意外,周五继续出第二部

推荐文章:

代码链接:

2eed08785d506125f6aad3c1c9bbf426.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值