Grabcut算法

Grabcut算法中涉及到GMM和最大流最小割,先介绍这两个再介绍Grabcut(只介绍基础定义)。

目录

GMM(高斯混合模型)

最大流最小割算法

Grabcut算法

References


GMM(高斯混合模型)

高斯混合模型可以看作是由 K 个单高斯模型组合而成的模型。

假设我们现在有一组狗的样本数据,不同种类的狗,体型、颜色、长相各不相同,但都属于狗这个种类,此时单高斯模型可能不能很好的来描述这个分布,因为样本数据分布并不是一个单一的椭圆,所以用混合高斯分布可以更好的描述这个问题。(也就是说无法只用一种形态来描述我们现在的目标。所以使用高斯混合模型。这里的k指的是混合模型中子高斯模型的数量。)

上图和下图表达的是一个意思,只是描述不太一样。可以综合起来进行理解。

对于每个子模型都有未知的参数,直接求导无法计算。需要通过迭代的方法求解。(EM算法)


最大流最小割算法

该算法是图像分割的经典算法之一。最小割最大流算法是指在一个有向的图中,能够从源点(source)到达汇点(terminal)的最大流量 等于 如果从图中剪除就能够导致网络流中断的边的集合的最小容量和。在任何网络中,最大流的值等于最小割的容量。


Grabcut算法

算法流程:

(1)将前景所在的大致区域位置使用矩形框标注出来。此时的矩形框框出的仅仅是前景的大致位置,其中即包含前景又包含背景,所以该区域实际上是未确定区域。但是该区域以外的区域被认为是“确定背景”。

(2)根据矩形框外部的“确定背景”数据来区分矩形框区域内的前景和背景。

(3)使用一个高斯混合模型(GMM)对前景和背景建模。根据输入,GMM会学习并创建新的像素分布。对那些分类未知的像素(可能是前景也可能是背景),可以根据未知与已知分类(如背景)的像素关系来进行分类。

(4)根据像素的分布情况生成一副图,图中的节点就是各个像素点。除了像素点之外,还有两个节点:前景节点(Source node)和背景节点(Sink node)。所有的前景像素都和前景节点相连,所有的背景像素都和背景节点相连。

​​​​​​​(5)将像素连接到前景节点或者背景节点的边的权重由它们属于同一类的概率决定。两个像素之间的权重由边的信息或者两个像素的相似性来决定,如果两个像素的颜色相差很大,那么它们之间的边的权重就会很小。

(6)使用mincut算法对上面的图进行分割。最小割根据能量方程将图像分为前景节点和背景节点。能量方程就是被剪掉的所有边的权重之和,在裁剪之后,所有连接到前景节点的像素被认为是前景,所有连接到背景节点的像素被认为是背景。

(7)不断重复上述过程,直到分类收敛为止。

琐碎知识点

(1)下图中S表示前景节点,T表示背景节点。实线的边表示每两个邻域普通顶点连接的边,虚线的边表示每个普通顶点与s和t连接的边。​​​​​​​

 (2)能量方程(其最小值应对应于良好的分割)

U是区域项,表示一个像素被归类为前景或者背景的惩罚。V是边界项,体现邻域像素之间不连续的惩罚,如果两邻域像素差别很小,那它属于同一个前景或者同一背景的可能性就很大;如果差别很大,那说明这两个像素很有可能处于前景和背景的边缘部分,则被分割开的可能性比较大;所以当两邻域像素差别越大,能量越小。


References

[1] 高斯混合模型(GMM) - 知乎

[2] 图像分割经典算法--《最小割最大流》(Minimum Cut——Max Flow)_我的她像朵花的博客-CSDN博客_最小割算法

[3] 图像分割之(三)从Graph Cut到Grab Cut_zouxy09的博客-CSDN博客_grabcut

[4]【计算机图形学】“Grabcut“Interactive Foreground Extraction using Iterated Graphcuts_Baily24的博客-CSDN博客

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值