Paper : Efficient Graph-Based Image Segmentation
Code :
摘要
Efficient Graph-Based Image Segmentation 一文是将图片看作是图论中的图进行处理,用到的方法比较简单易懂,涉及到OI/ACM中常见的概念MST,而类MST的算法流程保证算法的时间复杂度为O(n log n)。Efficient Graph-Based Image Segmentation 是在像素级上进行融合,为Selective Search 算法提供了初始的区域。
基于图的分割
设无向带权图 G ( V , E ) G(V,E) G(V,E) 中 w ( v i , v j ) w(v_i,v_j) w(vi,vj) 为非负实数,表示节点 v i , v j v_i,v_j vi,vj 之间的差异度,那么基于图的分割方法中,分割 S S S 定义为对点集 V V V 的划分。
区域间边界断言(Pairwise Region Comparison Predicate) : 用于断言两区域之间是否有明确的证据表明存在边界。
对于区域 C ∈ S C\in S C∈S,定义区域 C C C 的内部差异度为
Int ( C ) = max e ∈ M S T ( C , E ) w ( e ) \textrm{Int}(C) = \max_{e\in MST(C,E)} w(e) Int(C)=e∈MST(C,E)maxw(e)
对于区域 C 1 , C 2 ∈ S C_1,C_2\in S C1,C2∈S,定义它们之间的差异度为
Dif ( C 1 , C 2 ) = min v i ∈ C 1 , v j ∈ C 2 , ( v i , v j ) ∈ E w ( v i , v j ) \textrm{Dif}(C_1,C_2) = \min_{v_i\in C_1,v_j\in C_2,(v_i,v_j)\in E w(v_i,v_j)} Dif(C1,C2)=vi∈C1,vj∈C2,(vi,vj)∈Ew(vi,vj)min
如果不存在连接两区域之间的边,令 Dif ( C 1 , C 2 ) = ∞ \textrm{Dif}(C_1,C_2) = \infty Dif(C1,C2)=∞
区域间边界断言定义为
D ( C 1 , C 2 ) = { true Dif ( C 1 , C 2 ) > MInt ( C 1 , C 2 ) false otherwise D(C_1,C_2) = \left\{\begin{matrix} \textrm{true} & \textrm{Dif}(C_1,C_2)>\textrm{MInt}(C_1,C_2)\\ \textrm{false} & \textrm{otherwise} \end{matrix}\right. D(C1,C2)={truefalseDif(C1,C2)>MInt(C1,C2)otherwise
其中最小内部差异值 MInt 定位为
M I n t ( C 1 , C 2 ) = min ( Int ( C 1 ) + τ ( C 1 ) , Int ( C 2 ) + τ ( C 2 ) ) MInt(C_1,C_2) = \min(\textrm{Int}(C_1)+\tau(C_1),\textrm{Int}(C_2)+\tau(C_2)) MInt(C1,C2)=min(Int(C1)+τ(C1),Int(C2)+τ(C2))
当 ∣ C ∣ |C| ∣C∣ 较小时, Int ( C ) \textrm{Int}(C) Int(C) 不是一个很好的评价局部数据性质的指标,例如 ∣ C ∣ = 1 |C| = 1 ∣C∣=1时为0,因此引入阈值函数 τ \tau τ,定义为
τ ( C ) = k ∣ C ∣ \tau(C) = \frac{k}{|C|} τ(C)=∣C∣k
其中更大的超参数k,表示更倾向于生成更大的划分块。通过修改 τ \tau τ 函数的定义,还可以表现出对区域形状的倾向性。
算法
过于细致的分割:对于分割 S S S,当存在区域 C 1 , C 2 C_1,C_2 C1,C2 ,满足 C 1 , C 2 C_1,C_2 C1,C2 的区域间边界断言为假,我们称分割 S S S 过于细致了。
过于粗糙的分割:对于分割 S S S,当存在对分割 S S S 更细致的划分 S ′ S' S′,且 S ′ S' S′ 不是过于细致的分割,那么我们称分割 S S S 过于粗糙了。
存在性:对于有限图 G ( V , E ) G(V,E) G(V,E),存在一个分割 S S S 不会过于细致或粗糙。
基于图的分割算法:
- 将边集根据边权 w w w 由小到大排序 π = ( o 1 . . . o m ) \pi = (o_1...o_m) π=(o1...om),设 S 0 S^0 S0 表示初始分割,每个点自己组成一个区域
- 重复步骤3 m 次
- 根据以下方法从 S q − 1 S^{q-1} Sq−1 生成 S q S^q Sq:设 v i ∈ C i q − 1 , v j ∈ C j q − 1 v_i \in C_i^{q-1},v_j \in C_j^{q-1} vi∈Ciq−1,vj∈Cjq−1,当 C i q − 1 ≠ C j q − 1 C_i^{q-1}\not = C_j^{q-1} Ciq−1=Cjq−1 且 w ( o q ) = w ( v i , v j ) ≤ MInt ( C i q − 1 , C j q − 1 ) w(o_q) = w(v_i,v_j) \leq \textrm{MInt}(C_i^{q-1},C_j^{q-1}) w(oq)=w(vi,vj)≤MInt(Ciq−1,Cjq−1),那么合并 C i q − 1 , C j q − 1 C_i^{q-1},C_j^{q-1} Ciq−1,Cjq−1,否则不变
可以证明,基于图的分割算法产生的分割 S S S 不会过于细致或粗糙。
应用到图片上
图片可以理解成由像素构成的矩阵,可以有以下两种方式建图
- 使用高斯模糊 σ = 0.8 \sigma = 0.8 σ=0.8 对图片进行降噪后,令每个像素对应一个点,向八相邻的像素建边,权值为 w ( v i , v j ) = ∣ I ( p i ) − I ( p j ) ∣ w(v_i,v_j) = |I(p_i)-I(p_j)| w(vi,vj)=∣I(pi)−I(pj)∣,对于彩色图,我们对RGB分别处理,只将三个通道上都划分为一个区域的点看作一个区域。
- 使用高斯模糊 σ = 0.8 \sigma = 0.8 σ=0.8 对图片进行降噪后,将图片中每个像素映射到特征空间中,例如 ( x , y , r , g , b ) (x,y,r,g,b) (x,y,r,g,b),使用 L2 正则作为距离函数,每个点连接固定数量的近邻
总结
基于图的分割算法给出了三个评价分割算法好坏的指标,并从数学上证明了算法的满足这三个标准。为了保证基于图的分割算法的时间复杂度是 O(n log n)的,作者使用了最大权重、最小权重等作为评价区域内、区域间的标准,可能会对算法的鲁棒性造成一定的影响。两种建图的方式一个更关注局部的特性,一个在感性上能够更关注图片的全局特性,可以根据实际问题进行调整。不过对于SS来说,前一种显然更优