原理
SILC(simple linear iterative clustering)是一種圖像分割算法。默認情況下,該算法的唯一參數是k,約等於超像素尺寸的期望數量。對於CIELAB彩色空間的圖像,在相隔S像素上采樣得到初始聚類中心。為了產生大致相同尺寸的超像素,格點的距離是$S=\sqrt{N/k}$。中心需要被移到3x3領域內的最低梯度處,這樣做是為了避免超像素中心在邊緣和噪聲點上。
接下來為每一個像素$i$設置最近的聚類中心,該聚類中心的搜索區域要覆蓋該像素的位置。這是本算法加速的關鍵,因為通過限制搜索區域的大小減小了距離計算的數量,並且相對於傳統的k-means聚類算法有顯著的速度優勢,因為后者的每個像素都必須和所有的聚類中心進行比較。一個超像素的預期空間范圍是約為SxS的區域,這里對於相似像素的搜索是在超像素中心的2Sx2S區域完成。
一旦每個像素被關聯到最近的聚類中心后,就通過求聚類中心所有像素的均值來執行聚類中心的更新。使用$L_{2}$范數計算前一個聚類中心和當前聚類中心的殘差。assignment和update步驟被重復迭代直到誤差收斂,但是我們發現對於大多數圖像10次迭代就夠了。
算法步驟
1)通過在常規網格步長S處采樣像素來初始化聚類中心
2)在3x3的領域內移動聚類中心到最低的梯度位置
3)為每一個像素$i$設置標簽$l(i)$
4)為每一個像素設置距離$d(i)=\infty$
5)對於每一個聚類中心遍歷2Sx2S區域內的每一個像素點,計算距離決定是否更新像素的標簽和距離
6)更新聚類中心
7)重復步驟5)6)直到收斂
