文章目录
Abstract
作者的方法的一个重要的特点该方法能在低变化性(low-variability)图像区域保留细节,而在高变化性(high-variability)区域忽略细节(参见图一,左边渐变区域和右边中间为高变化性区域,此时忽略细节,将这两个区域各自变成统一颜色)
1.Introduction
一个好的图像分割应该有如下特征:
1.Capture perceptually important groupings or regions,which often reflect global aspects of the image.
捕获视觉上重要的组群或区域,这些区域经常反映图像的全局方位。
2.Be highly efficient, running in time nearly linear in the number of image pixels.
效率高,运行时间和图像像素数量间的关系接近线性
作者的方法是基于选择graph中的edges,把每个像素看成一个节点,然后和周围节点由无向边(undirected edges)连接,这些边上有衡量对应节点相似度的属性。而且根据图像邻近区域的可变性程度自适应调整分割准则。
此例说明,作者认为不应只把强度当作划分区域的依据,明显可见斜坡和右边密集区域应有不同划分阈值,因此作者采用自适应或非局部(adaptive or non-local)准则,具体算法在3.1中详细介绍。
2. Related Work
说了写其他人做了什么,但是这些方法都不行。
3 .Graph—Based Segmentation
作者采用的是一种基于图的分割方法,
,
是将要被分割的顶点集合,
,
是相邻的两个顶点之间的边
,
是相邻的区域
的不相似的非负测量(比如亮度、颜色、运动、位置或其他自身属性)(就是说,E的权重值越大,越不相似)。
每个属于S的区域C ( component, 不相交 ,之间没有公共点) 代表一个component in a graph
,
。
换句话说,任何segmentation部分都被一系列E中的边缘连接,作者希望同一component的内的两个顶点之间的相似度高,不同component之间的顶点间的相似度低。对应过来就是希望同一component中顶点间的权重小,不同component之间的顶点之间权重大。
3.1 Pairwise Region Comparison Predicate
定义一个预测d,为了评估两个component之间是否存在边界(boundary)。
这个预测是基于两个component之间的不相似度,和两个组件内部的不相似度进行比较。因为是将component之间的差异和component内部的差异进行比较,所以能根据数据的局部特征进行自适应。
先假定的
已经分割成了多个component(在最开始,每个vi都是一个component),一个componet包含若干个顶点,顶点之间通过该component的MST的边连接,内部差就是component的MST中包含的最大权重的边。
Internal difference:最小的生成树里最大的权重(
中的最大weight )
这样的话,给定的component只会考虑在weight大于等于Int©时保持连接。
就是说已经连接的已经是最小的了,从别的地方已经找不到比int小的能连接边了,要连接的话必定大于Int©,此时若插进去一个点,无论如何都不会影响MST的环路。如果在此之前能插的话,早就插了,毕竟edge已经排序过了,后面也没有那么小的还能往前插的了,后面合并的只会越来越大。
Difference between two components:连接到两个component的最小的权重(也就是最像的地方)
如果没有边连接C1和C2就认为dif为无穷大。
用dif和int来比较来判断两个component是否存在边界
两个component间的差别必须大于两个component的Int中最小的那个,才算是有boundary
当c的大小是1时,Int©=0,
是个阈值函数,当component很小的时候,int©并不能很好的评估数据的局部特征,因此作者使用一个基于component尺寸的阈值函数,该函数对区域的合并起到了很重要的作用。
C 是component的大小(也就是component中的顶点个数,或像素点个数), k 是一个固定的参数,设置了观测范围,k越大,component的大小就越大(划分出边界的要求提高了)。对于小的component我们要用更强的边界证据(就是边界很明显,让
变大)。当相邻的component之间很明显存在很大的差异的时候,component小一点也没关系。
4.The Algorithm and Its Properties
作者的算法遵循下列定义:
Definetion 1 A segmentation S is too fine fi there is some pair of regions for which there is no evidence for a boundary between them.
Definition 1:如果分割S中存在两个region之间没有存在boundary的证据,那么分割S is too fine。(分的过于精细,不应该有边界的也分开了)
refinement的概念:给定相同集合中的两个分割T和S,如果每个T的component包含在、或等于S的component,那么叫T是S的refinement。当T S的时候,作者叫T是S的proper refinement,如此,T能够通过分割S的一个或多个区域来获得。这个时候,我们说T is finer than S, and S is coarser than T.
Definition 2 A segmention S is too coarse when there exists a proper refinement of S that is not too fine
Definition 2: 当存在S的proper refinement is not too fine, 此时S is too coarse(分割太粗糙,分割程度还不够大,还能继续分割,内部的两个区域内还是有明显的边界)
如果一个segmentation的region能被分割并生成一个分割区域,而且这个分割中在相邻的区域由boundary的evidence,那么这个初始分割有太少的区域??(少和有evidence有什么关系)
Property 1 For any (finite) graph there exists some segmentation S that is neither too coarse nor too fine.
Property 1 :对于任何有限的G,存在一些分割S既不too coarse也不too fine
很好理解,当全部的图片时一个component时,is too corase, 继续往下分割,一定会有too fine,而二者之间就是既不too coarse也不too fine
Algorithm 1:
输入:graph
有n个顶点和m个边
输出:V分割成components
流程如下
Step 0: 对E进行递增排序,
Step 1: 初始一个分割
,每个顶点
都在自己的component中
Stpe 2:
for( int q=1; q<=m; q++)
{
Step 3:
用
生成
的方法:
用
和
表示被第q个edge连接的顶点,
。如果,
和
分别在
的不相交的component, 并且
比这些component的Int都小,那么将这两个component合并,否则什么都不做。设
的
包含
,
包含
, 如果
并且
,如此
可以通过合成
和
来得到,否则
}
Step 4: return
我的理解是, 代表一个component中的最不相似的部分, 代表在两个component之外的连接两个component最相似的边,如果在component之外的最相似的比component之内的最不相似的还不相似,那么这个边就不会被该component接受为“自己人”,如果两个component都不认同该边为“自己人”,那么两个component就不会通过这个“外人”来连接合并。
接下来是几个定理的证明:
Lemma 1: In Step 3 of the algorithm, when considering edge , if two distinctcom-ponents are considered and not merged then one of these two components will be in the final segmentation. Let and denote the two components connected by edge when this edge is considered by the algorithm.The neither
or ,where is the component containing and is the component containing in the final segmentation .
Lemma 1:如果两个区域没能合并到一块,那么必然会有一个留到最后。
Proof :因合并失败,所以可知在其中一个component中
,因为我们已经对edge进行升序重排,所以往后所有的
必然都大于该component的
,所以往后这个component都没有合并的机会。
Theorem 1: The segmentation produced by Algorithm 1 is not too fine according to Definition1,using the region comparison predicate defined in (3).
Theorem 1:通过算法1得出的
不是 too fine。
Proof:反证法,假设有一区域
,将
分成两个区域
、
,设
和
之间有一个边界,如此一来可知
,由
定义可知,
(同为两个component之间相连接的最小权重),但如果
、
是
的一部分,则
,矛盾,所以
、
之间有边界不成立。
Theorem 2: The segmentation produced by Algorithm 1 is not too coarse according to Definition 2 ,using the region comparison predicate defined in (3).
Theorem 2:通过算法1得出的
不是 too coarse。
Proof:也用反证法,同Theorem 1的证明。
Theorem 3: The segmentation produced by Algorithm 1 does not depend on which non-decreasing weight order of the edges is used.
Theorem 3:对于排序好的edge,相同权重的边的顺序不会影响算法1的分割结果。
Proof:分情况讨论之。
公式1:
公式2:
4.1 Implementation Issues and Running Time
作者分割区域S的实现,是通过一个不相交的forest的rank和path compression联合。
- 时间复杂度:第一部分:给权重排序,复杂度是O(m logm).
step1-3花费了O(malpha(m))时间 , alpha是增长的非常慢的逆Ackerman函数。(因为逆Ackerman函数增长很慢,所以可以看作常数,这是算法时间和像素点个数成线性的原因。)
作者对每个顶点用u->find来检查是否两个顶点在相同的component中,用u->join来聚合两个component。因此每条边最多有三条disjoint-set操作(find, join, size)。
如果知道每个component的size和Int的话,每次的MInt的计算花费的时间都是固定的。每次聚合的时候可以花固定的时间保留一个component的Int,造成合并的边就是一个component的MST的最大的权重边。
后加入 的edge的权重必然大于之前所有的,因为处理的顺序就是按edge的权重大小排序的,从公式的角度看,如果不考虑阈值函数, 必然不是最大,但是如果阈值函数够大,就能实现新来的edge权重比Int还大而且还能合并的情况。
由引理1可知,造成合并的边是两个被合并的component之间的最小的权重的边。聚合后的component的size就是两个component的size之和。
5.Results ofr Grid Graphs
- 先考虑单颜色图像,每个顶点有八个相连的,如果有n个顶点,那么算法时间复杂度是
,顶点之间的权值是由像素间亮度差异决定的:
在计算权值之前会用 =0.8的高斯平滑处理一下,作为数字化的补偿(有个正则化没搞懂,希望能有人解答一下)这个平滑不会产生什么可见的影响,但有利于去除伪阴影。
- 对于彩色的图片,作者在三个通道上各处理一次,然后取这三个component集合的交集。此外,如果两个相邻的顶点在三个channel中都在一个component中,那么把这两个放到一个component中。还可以只处理一次,权重的测量方法是像素在一些颜色空间上的距离,但是处理三次是最好的。
影响运算的参数k,如果k大,那么分出来的component就是大的,如何设置取决于分辨率和需要的细致程度。
6.Results ofr Nearest Neighbor Graphs
一种常见的图像分割方法是将每个像素映射到一些feature sapce中的point内,然后寻找相似point的簇。作者用之前提到的基于图的分割算法来找到相似点的簇,连接在feature space中相邻的 ,而不是图像网格。有两种方法,一种是找附近的固定个数的最近的近邻点,另一种是一定范围内的所有的近邻点。无论如何,都不想考虑全部的O(n^2)个feature point。
两个顶点之间的权重是两个对应的Point(因为已经把像素map到point(x, y, r, g, b)了)在特征空间的距离。作者使用欧式距离来计算权重。
- 对于特征空间中特征点的含义:指明连接一些C中的feature point到一个feature space 中的单独的volume所需要扩张的最小半径。
作者想用一个半径是r的球来代替每个feature point。由 的定义可知,只有当 时,这些feature point的并集才会形成一个单独的connect volume.
-
的含义:连接至少 和 中一个点的要扩张的最小半径,
-
时间复杂度:先是像素映射的运算O(n), 然后是分割方法的时间O(n log n).
作者使用ANN算法[1]来找到每个点的近似近邻,找10个近邻点。神经网络方法算法也能找到近似近邻,这两个都比找实际的近邻运算速度快。
作者的基于图的方法,所有graph中的邻居都是image中的邻居。因此,有的点可能在image上里的很远但仍然是近邻 (只要他们足够颜色相似而且中间的图像像素颜色不同)。在image中断开的区域可能分段,但这在grid-graph中不会发生(在grid-graph中点的空间距离和聚合无关)。
作者用了上述两种方法
1.使用图像网格来定义图像像素之间的局部邻域
2.将图像像素映射到feature space 中的点
测试算法,效果都不错
最后,是代码解读部分