湖北大学学生课程论文设计(论文)1XX大学学生课程设计(论文)题目:GrabCut图像分割算法研究学号:姓名:专业年级:2012级计算机科学与技术教师姓名:2015年6月3日湖北大学学生课程论文设计(论文)21.绪论..................................................................................................................51.1选题目的.................................................................................................51.2简单介绍.................................................................................................52.算法实现............................................................................................................62.1算法原理................................................................................................62.2算法效果................................................................................................82.3代码实现................................................................................................93.总结..................................................................................................................11湖北大学学生课程论文设计(论文)3GrabCut图像分割算法研究摘要图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。1998年以来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。图像分割后提取出的目标可以用于图像语义识别,图像搜索等等领域。Graphcuts是一种十分有用和流行的能量优化算法,GraphCuts理论最早是出现在流网络优化领域的,比如说水管网络,通信传输网络,城市车流网络等。而GrabCut是在GraphCut基础上改进的一种图像分割算法,它并非基于图像形态学,而是基于图割理论。在使用GrabCut时,需要人工给定一定区域的目标或者背景,然后算法根据设定的参数来进行分割。GrabCut适合从静态图像中提取前景照片的应用。在计算机视觉领域普遍应用于前背景分割(Imagesegmentation)、立体视觉(stereovision)、抠图(Imagematting)等。OpenCV中提供了cv::grabcut函数,因此只需提供图像并标记背景像素和前景像素,基于局部的标记,算法即可将图像中的像素进行分割。【关键词】图像分割GraphCutGrabCut背景分割抠图OpenCV湖北大学学生课程论文设计(论文)4GrabCutimagesegmentationalgorithmAbstractImagesegmentationisthetechnologyandprocessofdividingtheimageintoanumberofspecific,uniqueandinterestingregions..Itisthekeystepofimageprocessingtoimageanalysis..Existingimagesegmentationmethodsaremainlydividedintothefollowingcategories:Basedonthethresholdsegmentationmethodbasedonregionsegmentationmethod,basedonedgebasedsegmentationmethodandsegmentationalgorithmsbasedonaparticulartheory.Since1998,researchershaveimprovedtheexistingimagesegmentationmethodandappliedsomenewtheoriesandnewmethodstoimagesegmentation..Theobjectextractedfromtheimagesegmentationcanbeusedforimagesemanticrecognition,imagesearchandsoon..Graphcutsisaveryusefulandpopularenergyoptimizationalgorithm,graphcutstheorytheearliestisappearedinthenetworkflowoptimizationfield,forexamplewaterpipenetwork,communicationnetwork,urbantrafficnetwork.GrabCutisanimagesegmentationalgorithmbasedonGraphCut,whichisnotbasedonimagemorphology,butbasedongraphcuttheory..IntheuseofGrabCut,theneedtomanuallygivenacertainregionofthetargetorbackground,andthenthealgorithmaccordingtotheparametersofthesetofsegmentation.GrabCutissuitableforextractingforegroundimagesfromstaticimages..Inthefieldofcomputervision,andwidelyusedintheforegroundandbackgroundsegmentation(imagesegmentation,stereovision,stereovision),mattingmatting(image).Cv:providestheOpenCV:grabcutfunction,sosimplyprovidetheimageandthebackgroundpixelsandforegroundpixels,basedonlocalmarkers,thealgorithmcanthensegmentthepixelsintheimage.【Keywords】ImagesegmentationGraphcutsGrabCutOpenCV湖北大学学生课程论文设计(论文)51.绪论1.1选题目的数字图像处理技术是一个跨学科的领域。随着计算机科学技术的不断发展,图像处理和分析逐渐形成了自己的科学体系,新的处理方法层出不穷,尽管其发展历史不长,但却引起各方面人士的广泛关注。首先,视觉是人类最重要的感知手段,图像又是视觉的基础,因此,数字图像成为心理学、生理学、计算机科学等诸多领域内的学者们研究视觉感知的有效工具。其次,图像处理在军事、遥感、气象等大型应用中有不断增长的需求。图像分割是图像识别和计算机视觉至关重要的预处理。没有正确的分割就不可能有正确的识别。但是,进行分割仅有的依据是图像中像素的亮度及颜色,由计算机自动处理分割时,将会遇到各种困难。例如,光照不均匀、噪声的影响、图像中存在不清晰的部分,以及阴影等,常常发生分割错误。因此图像分割是需要进一步研究的技术。人们希望引入一些人为的知识导向和人工智能的方法,用于纠正某些分割中的错误,是很有前途的方法。而Grabcut是一种十分有用和流行的能量优化算法,所以我选择研究这种算法。1.2简单介绍GrabCut是微软研究院的一个课题,主要功能是分割和抠图。而对于彩色图片的Grabcut算法,提取连续的相同颜色作为边界,一般有下面三个步骤。1.降低噪声降低图像噪声的算法那就不是一般多了。例如最常用的卡尔曼滤波就不少变种。关于这方面可以参考信号与系统的书籍以及相关论文,这里不再赘述。2.相同颜色的边缘提取关于这方面论文也是很多,我就我说说身边人使用的方法吧。我们有一个老师在做项目的时候用的方法是模糊化处理方法。那就是,拿一个RGB表,从中人工识别所要的颜色。计算机记录RGB范围,在RGB向量空间中画出一个立方体,以后凡是落入这个立方体的都算作这种颜色。结果证明使用这种方式可以较大程度上减小噪声带来的影响。但是这种方法对光线高度敏感,光亮度一变,不好意思,重新来过。而且这种方法画出来的立方体不小,其中包含不少明显不是这种颜色的RGB值(因为RGB任何一个分量和颜色直接不是线性关系)。再加上这个对人工的工作精确度要求不小,劳动强度不小。所以不太推荐。我们有些大牛引入机器学习的k临近算法,结果如何我没有太了解。3.插值有的时候噪声太厉害,使得有些点明显大幅偏离应有的RGB值。使得边缘不连续。这样,可以引入插值算法使得边缘成为封闭的边缘。常用的有H插值算法、多项式插值算法等等。关于这方面论文也是很多,可以加以参考。以上三个步骤做完以后,基本上就差不多了。如果还是不行,要么是某个方面效果不好,湖北大学学生课程论文设计(论文)6要么是噪声太大。它的卖点在于:(1)你只需要在目标外面画一个框,把目标框住,它就可以完成良好的分割:(2)如果增加额外的用户交互(由用户指定一些像素属于目标),那么效果就可以更完美:当然了,它也有不完美的地方,一是没有任何一个算法可以放之四海而皆准,它也不例外,如果背景比较复杂或者背景和目标相似度很大,那分割就不太好了;二是速度有点慢。当然了,现在也有不少关于提速的改进。2.算法实现2.1算法原理GrabCut是微软研究院的一个课题,主要功能是分割和抠图。OpenCV中的GrabCut算法是依据《GrabCut-InteractiveForegroundExtraction湖北大学学生课程论文设计(论文)7usingIteratedGraphCuts》这篇文章来实现的。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要少量的用户交互操作即可得到比较好的分割结果。我们首先理解GrabCuts中的Grab和Cuts的意思。此处的Graph和普通的Graph稍有不同。普通的图由顶点和边构成,如果边的有方向的,这样的图被则称为有向图,否则为无向图,且边是有权值的,不同的边可以有不同的权值,分别代表不同的物理意义。而GrabCuts图是在普通图的基础上多了2个顶点,这2个顶点分别用符号”S”和”T”表示,统称为终端顶点。其它所有的顶点都必须和这2个顶点相连形成边集合中的一部分。所有GrabCuts中的边也分为两种,一种是普通顶点与相邻点或者与之有关联的点之间的连线,一种是刚讲的普通顶点和2个终端顶点之间的连线。GrabCuts中的Cuts是指这样一个边的集合,很显然这些边集合包括了上面2种边,该集合中边的断开会导致残留”S”和”T”图的分开,且这些边的集合中所有权值之和是最小的。因此也称为最小割。在