概述
✔️ Grabcut是基于图割(graph cut)实现的图像分割算法,用户输入一个bounding box作为分割目标位置,实现目标与背景的分离/分割。
✔️ Grabcut分割速度快,效果好,支持交互操作,因此在很多APP图像分割/背景虚化的软件中经常使用。
算法流程
- 在图片中定义含有(一个或多个)物体的矩形;
- 矩形外的区域被自动认为是背景;
- 对于用户定义的矩形区域,可以使用背景中的数据来区分矩形内的区域是前景还是背景;
- 用高斯混合模型(GMM)来对背景和前景进行建模,并将未定义的像素标记为可能的前景或背景
- 图像中的每一个像素都被看做通过虚拟边与周围像素相连接,而每条边都有一个属于前景和背景 的概率,这基于他与周围像素颜色上的相似性
- 每一个像素(即算法中的节点)会与一个前景和背景节点连接。这与下图类似:

- 在节点完成连接后(可能与背景或前景连接),若节点之间的边属于不同的终端(一个属于背景,一个输入前景),则会切断他们之间的边,这就将图像的各个部分分割出来,下图能够很好的说明算法: