Normalized Cuts and Image Segmentation

介绍了一种基于图论的图像分割算法——归一化割(Normalized Cuts),该算法通过构造图模型来评估像素间的相似度,并利用特征向量进行分割。详细解释了算法原理、相似度计算及实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shi J. and Malik J. Normalized cuts and image segmentation. In IEEE Transactions on Pattern Analysis and Machine Intelligence.

在Digital Image Preprocessing的书上看到了这个算法, 对于其公式结果的推出不是很理解, 于是下载下来看了看. 本文主要讲的是一种利用图结构进行图像分割的算法.

主要内容

假设 f ( x , y ) , x = 1 , 2 , ⋯ M , y = 1 , 2 , ⋯ N f(x, y), x=1,2,\cdots M, y=1,2,\cdots N f(x,y),x=1,2,M,y=1,2,N为一张图片, 我们想要对其进行分割. 给定某一个距离函数, 可以用于衡量任意两点 i , j i, j i,j的相似度:
w i j = w ( i , j ) . w_{ij} = w(i, j). wij=w(i,j).

把图片的每一个pixel看成一个节点, pixel和pixel之间的边为一条无向边, 则整体构成了一个无向的图 G = ( V , E ) G = (V, E) G=(V,E), 每条边的权重如上所述是 w i j w_{ij} wij, 故易知 w i j = w j i w_{ij} = w_{ji} wij=wji. 我们的目标是将图分成相斥的两块 A , B A, B A,B, 即满足:
A ⋃ B = V , A ⋂ B = ∅ . A \bigcup B = V, A \bigcap B = \empty. AB=V,AB=.

以往的做法是, 找到一个分割, 使得下列指标最小:
c u t ( A , B ) = ∑ i ∈ A , j ∈ B w i j , cut(A, B) = \sum_{i \in A, j \in B} w_{ij}, cut(A,B)=iA,jBwij,
但是这种策略往往会导致不均匀的分割, 即最角落里的元素被单独分割出来:

于是作者提出了一种新的指标:
N c u t ( A , B ) = c u t ( A , B ) a s s o c ( A , V ) + c u t ( A , B ) a s s o c ( B , V ) , Ncut(A, B) = \frac{cut(A, B)}{assoc(A, V)} + \frac{cut(A, B)}{assoc(B, V)}, Ncut(A,B)=assoc(A,V)cut(A,B)+assoc(B,V)cut(A,B),
其中 a s s o c ( A , V ) = ∑ i ∈ A , j ∈ V w i j assoc(A, V) = \sum_{i \in A, j \in V} w_{ij} assoc(A,V)=iA,jVwij.
注意到:
N c u t ( A , B ) = c u t ( A , B ) c u t ( A , B ) + a s s o c ( A , A ) + c u t ( A , B ) c u t ( A , B ) + a s s o c ( B , B ) , Ncut(A, B) = \frac{cut(A, B)}{cut(A, B) + assoc(A, A)} + \frac{cut(A, B)}{cut(A, B) + assoc(B, B)}, Ncut(A,B)=cut(A,B)+assoc(A,A)cut(A,B)+cut(A,B)+assoc(B,B)cut(A,B),
所以只有到 a s s o c ( A , A ) , a s s o c ( B , B ) assoc(A, A), assoc(B, B) assoc(A,A),assoc(B,B)都足够大的时候Ncut才会足够小, 这说明该指标更关注了内部的一种紧密性.

求解


x i = + 1 ,  if  i ∈ A , x i = − 1  if  i ∈ B d i = ∑ j w i j . x_i = +1, \text{ if } i \in A, \quad x_i = -1 \text{ if } i \in B \\ d_i = \sum_{j}w_{ij}. xi=+1, if iA,xi=1 if iBdi=jwij.


N c u t ( A , B ) = ∑ x i > 0 , x j < 0 − w i j x i x j ∑ x i > 0 d i + ∑ x i < 0 , x i > 0 − w i j x i x j ∑ x i < 0 d i . Ncut(A, B) = \frac{\sum_{x_i > 0, x_j < 0} -w_{ij}x_i x_j}{\sum_{x_i > 0}d_i} +\frac{\sum_{x_i < 0, x_i > 0} -w_{ij}x_i x_j}{\sum_{x_i < 0}d_i}. Ncut(A,B)=xi>0dixi>0,xj<0wijxixj+xi<0dixi<0,xi>0wijxixj.

容易证明(但是不容易想到):
[ 1 + x 2 ] i = x i = + 1 ,   if  i ∈ A , [ 1 + x 2 ] i = 0 ,   if  i ∈ B . [\frac{1+x}{2}]_i = x_i = +1, \: \text{if } i \in A, \quad [\frac{1+x}{2}]_i = 0, \: \text{if } i \in B. [21+x]i=xi=+1,if iA,[21+x]i=0,if iB.
[ 1 − x 2 ] i = − x i = + 1 ,   if  i ∈ B , [ 1 − x 2 ] i = 0 ,   if  i ∈ A . [\frac{1-x}{2}]_i = -x_i = +1, \: \text{if } i \in B, \quad [\frac{1-x}{2}]_i = 0, \: \text{if } i \in A. [21x]i=xi=+1,if iB,[21x]i=0,if iA.

[ W ] i j = w i j , D i i = d i , [W]_{ij} = w_ij, \\ D_{ii} = d_i, [W]ij=wij,Dii=di,
D i i D_{ii} Dii为对角矩阵.
所以我们能够证明以下事实:
4 ⋅ c u t ( A , B ) = ( 1 + x ) T W ( 1 − x ) 4 ⋅ a s s o c ( A , V ) = 2 ⋅ ( 1 + x ) T D 1 = ( 1 + x ) T D ( 1 + x ) 4 ⋅ a s s o c ( B , V ) = 2 ⋅ ( 1 − x ) T D 1 = ( 1 − x ) T D ( 1 − x ) a s s o c ( V , V ) = ∑ i d i = 1 T D 1 ( 1 + x ) T D ( 1 − x ) = 0. 4\cdot cut(A, B) = (1+x)^T W (1 - x) \\ 4 \cdot assoc(A, V) = 2\cdot (1 + x)^T D 1 = (1 + x)^T D (1 + x) \\ 4 \cdot assoc(B, V) = 2\cdot (1 - x)^T D 1 = (1 - x)^T D (1 - x) \\ assoc(V, V) = \sum_i d_i = 1^T D 1 \\ (1 + x)^T D (1 - x) = 0. 4cut(A,B)=(1+x)TW(1x)4assoc(A,V)=2(1+x)TD1=(1+x)TD(1+x)4assoc(B,V)=2(1x)TD1=(1x)TD(1x)assoc(V,V)=idi=1TD1(1+x)TD(1x)=0.

又注意到:
∑ x i > 0 , x j < 0 − w i j x i x j = ∑ x i > 0 [ d i − ∑ x j > 0 w i j ] = 1 4 ( 1 + x ) T ( D − W ) ( 1 + x ) , \sum_{x_i > 0, x_j < 0} -w_{ij} x_i x_j = \sum_{x_i > 0} [d_i - \sum_{x_j >0} w_{ij}] = \frac{1}{4}(1 + x)^T (D - W) (1 + x), xi>0,xj<0wijxixj=xi>0[dixj>0wij]=41(1+x)T(DW)(1+x),
于是同理可证:
( 1 + x ) T W ( 1 − x ) = ( 1 + x ) T ( D − W ) ( 1 + x ) = ( 1 − x ) T ( D − W ) ( 1 − x ) . (1 + x)^TW(1 - x) = (1 + x)^T (D - W)(1 +x) = (1 - x)^T (D - W)(1 -x) . (1+x)TW(1x)=(1+x)T(DW)(1+x)=(1x)T(DW)(1x).


k = a s s o c ( A , V ) a s s o c ( V , V ) , k = \frac{assoc(A, V)}{assoc(V, V)}, k=assoc(V,V)assoc(A,V),

1 − k = a s s o c ( B , V ) a s s o c ( V , V ) . 1 - k = \frac{assoc(B, V)}{assoc(V, V)}. 1k=assoc(V,V)assoc(B,V).

综上可得:
N c u t ( A , B ) = c u t ( A , B ) k 1 T D 1 + c u t ( A , B ) ( 1 − k ) 1 T D 1 = c u t ( A , B ) k ( 1 − k ) 1 T D 1 . Ncut(A, B) = \frac{cut(A, B)}{k1^T D1} + \frac{cut(A, B)}{(1-k)1^TD1} = \frac{cut(A, B)}{k(1-k)1^TD1}. Ncut(A,B)=k1TD1cut(A,B)+(1k)1TD1cut(A,B)=k(1k)1TD1cut(A,B).


[ ( 1 + x ) − b ( 1 − x ) ] T ( D − W ) [ ( 1 + x ) − b ( 1 − x ) ] = ( 1 + x ) T ( D − W ) ( 1 + x ) + b 2 ( 1 − x ) T ( D − W ) − 2 b ( 1 + x ) T ( D − W ) ( 1 − x ) = 4 ( 1 + b 2 ) c u t ( A , B ) − 2 b ( 1 + x ) T D ( 1 − x ) + 2 b ( 1 + x ) T W ( 1 − x ) = 4 ( 1 + b 2 ) c u t ( A , B ) − 0 + 8 b c u t ( A , B ) = 4 ( 1 + b ) 2 c u t ( A , B ) . \begin{array}{ll} &[(1 + x) - b(1-x)]^T (D-W)[(1+x) - b(1-x)] \\ =& (1+x)^T(D-W)(1+x) + b^2 (1-x)^T(D-W) \\ &- 2b (1+x)^T(D-W)(1-x) \\ =&4(1+b^2)cut(A, B) - 2b (1 + x)^TD(1-x) + 2b(1 + x)^T W(1-x) \\ =&4(1+b^2)cut(A, B) - 0 + 8b cut(A, B) \\ =&4(1 + b)^2 cut(A, B). \end{array} ====[(1+x)b(1x)]T(DW)[(1+x)b(1x)](1+x)T(DW)(1+x)+b2(1x)T(DW)2b(1+x)T(DW)(1x)4(1+b2)cut(A,B)2b(1+x)TD(1x)+2b(1+x)TW(1x)4(1+b2)cut(A,B)0+8bcut(A,B)4(1+b)2cut(A,B).

( 1 + k 1 − k ) 2 = 1 ( 1 − k ) 2 , (1 + \frac{k}{1-k})^2 = \frac{1}{(1-k)^2}, (1+1kk)2=(1k)21,

4 ⋅ N c u t ( A , B ) = 4 ( 1 + b ) 2 b 1 T D 1 = [ ( 1 + x ) − b ( 1 − x ) ] T ( D − W ) [ ( 1 + x ) − b ( 1 − x ) ] b 1 T D 1 , b = k 1 − k . 4\cdot Ncut(A,B) = \frac{4(1+b)^2}{b1^TD1} = \frac{[(1 + x) - b(1-x)]^T (D-W)[(1+x) - b(1-x)]}{b1^TD1}, \\ b = \frac{k}{1-k}. 4Ncut(A,B)=b1TD14(1+b)2=b1TD1[(1+x)b(1x)]T(DW)[(1+x)b(1x)],b=1kk.
y = ( 1 + x ) − b ( 1 − x ) y = (1 + x) - b(1 - x) y=(1+x)b(1x), 且
y T D y = ∑ x i > 0 d i + b 2 ∑ x i < 0 d i = b ( ∑ x i < 0 d i + b ∑ x i < 0 d i ) = b 1 T D 1. y^TDy = \sum_{x_i > 0}d_i + b^2 \sum_{x_i < 0}d_i = b( \sum_{x_i < 0}d_i + b \sum_{x_i < 0}d_i) = b1^TD1. yTDy=xi>0di+b2xi<0di=b(xi<0di+bxi<0di)=b1TD1.
4 ⋅ N c u t ( A , B ) = y T ( D − W ) y y T D y . 4 \cdot Ncut(A, B) = \frac{y^T(D-W)y}{y^TDy}. 4Ncut(A,B)=yTDyyT(DW)y.

min ⁡ x N c u t ( A , B ) = min ⁡ y 1 4 y T ( D − W ) y y T D y , s . t . y i ∈ { 1 , 1 − b } . \min_x Ncut(A, B) = \min_y \frac{1}{4} \frac{y^T(D-W)y}{y^TDy}, \\ \mathrm{s.t.} \quad y_i \in \{1, 1 - b\}. xminNcut(A,B)=ymin41yTDyyT(DW)y,s.t.yi{1,1b}.
倘若我们能放松条件至实数域中, 此时只需要通过求解下列系统:
( D − W ) y = λ D y ⇔ D − 1 2 ( D − W ) D − 1 2 z = λ z , z = D 1 2 y . (D-W)y = \lambda Dy \Leftrightarrow D^{-\frac{1}{2}}(D-W)D^{-\frac{1}{2}} z = \lambda z, z = D^{\frac{1}{2}}y. (DW)y=λDyD21(DW)D21z=λz,z=D21y.
需要注意的是:
( D − W ) 1 = 0 , (D-W)1 = 0, (DW)1=0,
此时 z 0 = D 1 2 1 z_0 = D^{\frac{1}{2}}1 z0=D211,
1 1 1实际上上述系统的一个解, 且对应最小的特征值, 但其不是我们所要的解. 因为 y y y必须要还满足:
y T D 1 = ∑ x i > 0 d i − b ∑ x i < 0 d i = 0 , y^T D 1 = \sum_{x_i > 0}d_i - b \sum_{x_i < 0} d_i = 0, yTD1=xi>0dibxi<0di=0,
这意味着, 我们要的恰恰是
D − 1 2 ( D − W ) D − 1 2 z = λ z , z = D 1 2 y D^{-\frac{1}{2}}(D-W)D^{-\frac{1}{2}} z = \lambda z, z = D^{\frac{1}{2}}y D21(DW)D21z=λz,z=D21y
倒数第二小的特征值对应的特征向量 z 1 z_1 z1, 于是 y 1 = D − 1 2 z 1 y_1 = D^{-\frac{1}{2}}z_1 y1=D21z1.

相似度

文中采用如下的计算方式:

w i j = { e − ∥ F i − F j ∥ 2 / σ I 2 ⋅ e − ∥ X i − X j ∥ 2 / σ X 2 if  ∥ X i − X j ∥ < r 0 else . w_{ij} = \left \{ \begin{array}{ll} e^{-\|F_i - F_j\|^2 / \sigma^2_I} \cdot e^{-\|X_i - X_j\|^2 / \sigma^2_X} & \text{if } \|X_i - X_j\| < r \\ 0 & \text{else}. \end{array} \right. wij={eFiFj2/σI2eXiXj2/σX20if XiXj<relse.
其中 F F F对应颜色之类的距离, 如直接取密度值, 而 X X X对应空间距离, r r r限定了搜索范围, 同样会导致 W W W变成系数矩阵, 对应特征求解加速有帮助.

总的算法流程

  1. 计算权重矩阵 W W W以及 D D D;
  2. 通过
    D − 1 2 ( D − W ) D − 1 2 z = λ z D^{-\frac{1}{2}}(D-W)D^{-\frac{1}{2}} z = \lambda z D21(DW)D21z=λz
    计算得到倒数第二小的特征值所对应的特征向量 z 1 z_1 z1并令 y 1 = z 1 y_1=z_1 y1=z1;
  3. 通过某种方法(如网格搜索)找到一个阈值 t t t:
    x i = 1 ,   if  y i > t ,   else  − 1. x_i = 1, \: \text{if }y_i > t, \: \text{else } -1. xi=1,if yi>t,else 1.
    x x x的划分下
    N c u t ( A , B ) Ncut(A, B) Ncut(A,B)
    较小.
  4. 对于 A , B A, B A,B可以重复上述分割过程, 直到满足区域数目或者其它某种条件(比如文中说的特征向量的分布过于均匀时停止).

skimage.future.graph.cut

skimage.future.graph.cut

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值