graphcut/banded graphcut/grabcut解读

最近手头有个项目需要加速graph cut,这里就参考一篇论文banded graph cut: A Multilevel Banded Graph Cuts Method for Fast Image Segmentation(链接: https://pan.baidu.com/s/1-1Wjlzkgd2bd5rynwvKAtg 提取码: num5)

Graph Cut

首先回忆下graph cut的流程

  • 构图: 其中边有两种,一个是像素与像素之间的连接,主要看相邻像素的差异,越相似权重越大越不可分割。另一个是每个像素与S/T的连接,如果该像素被用户标记为背景那和T连接权重设为K,与S设置0;而如果是前景则与S连接权重为K,与T设置0;而如果是非种子像素则像素的灰度和给定的目标和前景的灰度直方图来获得
  • 最大流/最小割: 有很多解法,OpenCV用的是An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision 详情参考Grab Cut学习笔记1(new min-cut /max-flow algorithm)

在这里插入图片描述
在这里插入图片描述

banded graph cut

  1. 构建图像金字塔,以两层为例
  2. 在最小的图像上构建graph,做max flow算法得到小图的分割结果,放大到原图,此时的mask较为粗糙
  3. 对mask进行腐蚀膨胀,两者相减得到边缘位置的band,或者利用双边滤波/引导滤波得到更细更精准的band
  4. 只对band内的像素点构图,做max flow算法得到band内的分割结果
  5. “粗糙”的mask和band内的分割结果进行融合,得到边缘光滑的分割结果
    在这里插入图片描述

Grab cut

  1. Graph Cut的目标和背景的模型是灰度直方图,Grab Cut取代为RGB三通道的混合高斯模型GMM;

  2. Graph Cut的能量最小化(分割)是一次达到的,而Grab Cut取代为一个不断进行分割估计和模型参数学习的交互迭代过程(GMM可以用EM算法一直迭代更新)

  3. Graph Cut需要用户指定目标和背景的一些种子点,但是Grab Cut只需要提供背景区域的像素集就可以了。也就是说你只需要框选目标,那么在方框外的像素全部当成背景,这时候就可以对GMM进行建模和完成良好的分割了。即Grab Cut允许不完全的标注(incomplete labelling)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值