超像素算法有很多,SLIC是效果比較好的一種,今天介紹SLIC算法。
SLIC算法與K-means有些類似。
主要步驟
- 將圖像轉(zhuǎn)換為CIE Lab顏色空間
- 初始化
k個種子點(聚類中心),在圖像上平均撒落k個點,k個點均勻的占滿整幅圖像。 - 對種子點在內(nèi)的
n*n(一般為3*3)區(qū)域計算每個像素點梯度值,選擇值最?。ㄗ钇交┑狞c作為新的種子點,這一步主要是為了防止種子點落在了輪廓邊界上。 - 對種子點周圍
2S*2S的方形區(qū)域內(nèi)的所有像素點計算距離度量(計算方法在后文),對于K-means算法是計算整張圖的所有像素點,而SLIC得計算范圍是2S*2S,所以SLIC算法收斂速度很快!
其中S = sqrt(N/k),N是圖像像素個數(shù)。
- 因為圖像上的每個像素點都可能被幾個種子點計算距離度量,選擇其中最小的距離度量對應(yīng)的種子點作為其聚類中心。
距離度量
前文說了圖像是要轉(zhuǎn)換為Lab顏色空間的,現(xiàn)在提取此三個顏色通道l、a、b,計算:

可以看到,距離度量有兩部分,
dc表示顏色度量,ds表示距離度量,另外Ns = S = sqrt(N/k),Nc用常數(shù)m代替,m在算法中可以調(diào)整,所以有:
我們來分析一下這個變量
m:
- 當
m值比較大時,空間度量在距離測量過程中所占比重就比較大,那么生成的超像素比較緊湊。 - 當
m值比較小時,顏色度量所占的比重就比較大,那么生成的超像素在邊緣部分較為緊湊,但形狀和大小不規(guī)則。
此外,灰度圖像和三維圖像的計算公式是:

所以,在SLIC算法中,有兩個變量種子個數(shù)k和m,上張圖看一下不同的k和m的分割效果。

