(转)图像分割算法——Graph Cuts

https://mp.****.net/mdeditor?not_checkout=1#

1. 由图像构建一个图。G=(V,E)
(转)图像分割算法——Graph Cuts
由上图可以看到图中分别有两种顶点和两种边。
第一种顶点:普通顶点,对应于图像中的每个像素;
第一种边:每两个邻域顶点(即图像中的邻域像素)的连接构成的边,称为“n-links”;
第二种顶点:两个终端顶点,s(source terminal)和t(sink terminal);
第二种边:每一个普通顶点和这两个终端顶点之间都有连接,构成的边,称为“t-links”。

2. 几个定义
cost:代价或者费用,即图中每条边的权值we
cut(割):图中边集合E的一个子集,该cut(割)的cost(表示为|C|)就是边集C的所有边的权值的总和。
如果一个割,其包含的所有边的权值之和最小,那么这个割就称为最小割,也就是图割的结果。在图分割里,是要求两个终端顶点被分离开的,即最小割把图的顶点划分为两个不相交的子集S和T,其中s∈S,t∈T,T=V/S。事实上,这两个子集对应于图像的前景像素集和背景像素集,也就相当于完成了图像分割。

3. 图分割
寻找最优图像分割就是寻找最小化图割的过程,是通过最小化能量函数得到的。因此,发生在目标和背景的边界处的cut就是我们想要的(相当于把图像中背景和目标连接的地方割开,就相当于把其分割了)。同时,这个时候的能量应该是最小的。

假设整幅图像的标签label(每个像素的label)为A= {A1,A2,,,, Ap },其中Ai为0(背景)或者1(目标)。那假设图像的分割为A时,图像的能量可以表示为:E(A)=λR(A)+B(A)。
其中,R(A)为区域项(regional term),B(A)为边界项(boundary term),而a就是区域项和边界项之间的重要因子,决定它们对能量的影响大小。如果a为0,那么就只考虑边界因素,不考虑区域因素。E(L)表示的是权值,即损失函数,也叫能量函数,图割的目标就是优化能量函数使其值达到最小

区域项:
(转)图像分割算法——Graph Cuts:定义了将像素点归为某一类(前景或背景)的惩罚。Ap只能为0或1。

t-link的权值如下:
Rp(1) = -ln Pr(Ip|’obj’); Rp(0) = -ln Pr(Ip|’bkg’)。(因为希望能量最小,所以对于每一个像素,比较其灰度值与前景和背景的灰度直方图,得到其属于前景和背景的概率为Pr(Ip|’obj’)和Pr(Ip|’bkg’),这里希望像素p最终被归类为其概率最大的那一类,但是又因为希望能量最小,所以这里取概率的负对数值。)

由上面两个公式可以看到,当像素p的灰度值属于目标的概率Pr(Ip|’obj’)大于背景Pr(Ip|’bkg’),那么Rp(1)就小于Rp(0),也就是说当像素p更有可能属于目标时,将p归类为目标就会使能量R(A)更小。那么,如果全部的像素都被正确划分为目标或者背景,那么这时候能量就是最小的。

边界项:
(转)图像分割算法——Graph Cuts
其中(转)图像分割算法——Graph Cuts
其中,p和q为邻域像素,边界平滑项主要体现分割L的边界属性,B(p,q)可以解析为像素p和q之间不连续的惩罚,一般来说如果p和q越相似(例如它们的灰度),那么B(p,q)越大,如果他们非常不同,那么B(p,q)就接近于0。【这里我不太明白,当p和q的像素值完全相等时,B是等于0的啊,这和差异越大越接近0有点矛盾啊???】换句话说,如果两邻域像素差别很小,那么它属于同一个目标或者同一背景的可能性就很大,如果他们的差别很大,那说明这两个像素很有可能处于目标和背景的边缘部分,则被分割开的可能性比较大,所以当两邻域像素差别越大,B(p,q)越小,即能量越小。

总结:
我们目标是将一幅图像分为目标和背景两个不相交的部分,我们运用图分割技术来实现。首先,图由顶点和边来组成,边有权值。那我们需要构建一个图,这个图有两类顶点,两类边和两类权值。普通顶点由图像每个像素组成,然后每两个邻域像素之间存在一条边,它的权值由上面说的“边界平滑能量项”来决定。还有两个终端顶点s(目标)和t(背景),每个普通顶点和s都存在连接,也就是边,边的权值由“区域能量项”Rp(1)来决定,每个普通顶点和t连接的边的权值由“区域能量项”Rp(0)来决定。这样所有边的权值就可以确定了,也就是图就确定了。这时候,就可以通过min cut算法来找到最小的割,这个min cut就是权值和最小的边的集合,这些边的断开恰好可以使目标和背景被分割开,也就是min cut对应于能量的最小化。而min cut和图的max flow是等效的,故可以通过max flow算法来找到s-t图的min cut。

权值如下:
(转)图像分割算法——Graph Cuts