(一)基本介绍

Graphcut是一种基于图论的分割方法,在计算机视觉领域中应用于前背景分割、医学处理、纹理分割及立体视觉灯方能,基于图论的分割技术是图像分割领域中新的研究热点,该方法基于能量优化算法,将图像分割问题转化为图的最小割优化问题。Grabcut是Graphcut算法的改进。

graphcut是一种直接基于图切算法的图像分割技术,仅仅需要确认前景与背景输入,该算法就可以完成背景与前景相似督导额赋权图,并通过最优切割来实现图像分割。Grabcut算法不需要用户交互,仅仅需要输入包含目标前景的区域就可以完成前景与背景的分离。

基于图论的图像分割重点关注的是如何将图像映射为图,对于图像w * h,构造图G =(V,E),将一幅图像看作一个矩阵,图像中的每个像素对应着矩阵中的一个位置。像素位置可以看作图中的顶点,将相邻顶点之间连接起来形成边,由边和顶点构成图。其中涉及图的有两种顶点与边,分别定义为n-links与t-links,n-links为普通顶点,对应图像中的每个像素,每两个邻域顶点构成相应的边;t-links为除图像像素,还有另外两个终端顶点,每个普通顶点与这两个终端顶点之间都有连接。在进行图分析时,我们关注的是图像的4邻域,给每条边分配权重,权重的大小反映着相邻两个像素之间的相似程度。

Graphcut的目标和背景模型是灰度直方图,Grabcut采用的是RGB三通道混合高斯模型;Graphcut的能量最小化分割是一次计算实现的,而Grabcut是根据分割模型参数更新完成的学习过程;Graphcut需要用户输入前景与背景区域点集,而Grabcut只需要提供含有背景的区域像素集就可以完成分割。

注意:疑似背景或前景也被分类成确定性的。

(二)函数原型

void grabcut(InputArray img,InputOutputArray mask,Rect rect,InputOutputArray bgdModel,InputOutoutArray fgdModel,int iterCount,int mode = GC_EVAL);

其中,img为待输入分割图像,要求是8位3通道;mask位输入/输出掩码图像,当掩码设置位GC_INIT_WITH_RECT时,掩码必须要初始化,其元素可以选择以下参数:GCD_BGD的定义为确认背景,GCD_FGD的定义为确认前景,GCD_PR_FGD的定义为肯的前景,GCD_PR_BGD的定义为可能的背景,rect分割目标的ROI限定区域范围,该窗口内的像素被处理,参数可设置为GC_INIT_WITH_RECT;bgdModel为背景模型的临时储存数组;fgdModel为前景模型的临时储存数组;iterCount为迭代次数,结果返回前应该保证该参数已生成。