图像分割之图割工具箱GCO3.0的使用(二)

一):之前

之前在博客
matlab实现图割算法中的最大流最小割Max-flow/min-cut问题
中我们讲到了关于图中求取最小割最大流的一个软件包,并简单介绍了它在图像分割中的应用,但是并没有深入给出具体实例,这里我们再在最小割最大流原理基础上介绍同一个研究所出的另一种集成的软件包gco-v3.0,这个软件包则是直接可以对图像进行分割操作的,达到可以观测的效果。
关于软件包gco-v3.0的下载地址,同样在网址为:http://vision.csd.uwo.ca/code/在这里找到对应的内容即可;

二):准备

好了下载好的工具箱解压,里面会有一些c编写的代码以及另一个matlab版文件夹,这里说一下,同样是使用matlab来进行后面的所有操作(在使用之前需要编译一下成matlab可用的文件,程序里面有)。那么文件夹里面的文件正常的话就如下:这里写图片描述
乍一看,好多函数呀,不要着急,如果不了解要一个个看确实费劲,但是每个仔细看了以后就会发现其实每个都有用途的,后面也会对每个函数进行讲解说明的,以加快初学者学习的进度。

三):理解

好了现在我们来回味一下关于基础的图割算法需要哪些部分,连基本概念都不知道的建议去看一下上一篇文章:
matlab实现图割算法中的最大流最小割Max-flow/min-cut问题
看完后起码知道在进行图割算法操作的时候,一些必备的项,矩阵等等都知道,比如关于一个待分割图的数据项Datacost(点与源汇点(类点)之间的权值),平滑项Smoothcost(点与点之间的权值),标签Labeling(所有点各属于哪一个类),等等。借用上篇文章的图,比如下列的两分割问题:
这里写图片描述
当然,正常的一个图像可能不是两分割问题,可能存在多分割问题,这个时候类的点数(S,T)可能就不是两个了,可能就是多个,把S,T都统一为类L的话,那么一个图就可以分割为如下:
这里写图片描述
大概先简化为这样吧,画的比较丑,图中有分的类L(L1,L2…),点数N(n1,n2,…),以及所有的边的权值(两类不同的边的权值吧),datacost应该好理解,就是每一个点都会与所有的类有一个权值,这个值越大就说明它越属于这一类,smoothcost就是点与点之间的权值,这里画的是一维的情况,表示的是二维的关系,什么意思呢,想想一幅图是m*n的图是什么样子的,就是m*n的像素点吧,把每个像素点看成这里的一个点,假设现在是3*3的图吧,像素值都在0-255之间,那么你在matlab下看到的图像就是这样的:
这里写图片描述
这里我们只认为每个点与它附近的4连通区域有关(也有8连通区域),并且他们之间的权值(也就是smoothcost)简单的话就把他们之间的像素差值当做cost,如上图所示。这样看来这是个二维的点阵,那么如何应用到上述的图呢?这里我们就要在认识上转化为一维的了,把这些点从1-9依次排开,然后我们看到点1与2和4相连,点2和1,3,5相连,点3和2,6相连等等,而连接的权值就是相应的像素差绝对值,那么对于没有相连的,比如点1与3,5,6,7,8,9这些点怎么办了,我们也可以认为他们相连,只不过连接的权值为0而已;这样是不是就出来了smoothcost矩阵了,而且大小为[m*n,m*n],也可以看到,这个矩阵是一个稀疏矩阵,也就是有(大概)80%的点为0,这要是都写出来是非常占内存,所以在后面处理的时候会看到,这个矩阵是需要用稀疏矩阵来生

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值