slic演算法是****** linear iterative cluster的簡稱,該演算法用來生成超畫素(superpixel)。
演算法大致思想是這樣的,將影象從rgb顏色空間轉換到cie-lab顏色空間,對應每個畫素的(l,a,b)顏色值和(x,y)座標組成乙個5維向量v[l,a,b,x,y],兩個畫素的相似性即可由它們的向量距離來度量,距離越大,相似性越小。
演算法首先生成k個種子點,然後在每個種子點的周圍空間裡搜尋距離該種子點最近的若干畫素,將他們歸為與該種子點一類,直到所有畫素點都歸類完畢。然後計算這k個超畫素裡所有畫素點的平均向量值,重新得到k個聚類中心,然後再以這k個中心去搜尋其周圍與其最為相似的若干畫素,所有畫素都歸類完後重新得到k個超畫素,更新聚類中心,再次迭代,如此反覆直到收斂。怎麼樣,是不是感覺很像k-means聚類演算法。
該演算法接受乙個引數k,用於指定生成的超畫素數目。設原圖有n個畫素,則分割後每塊超畫素大致有n/k個畫素,每塊超畫素的邊長大致為s=[n/k]^0.5,開始我們每隔s個畫素取乙個聚類中心,然後以這個聚類中心的周圍2s*2s為其搜尋空間,與其最為相似的若干點即在此空間中搜尋。這裡有乙個問題,為了避免所選的聚類中心是邊緣和雜訊這樣的不合理點,演算法做了改進, 在3*3的視窗中將聚類中心移動到梯度最小的區域,梯度定義為
g(x,y)=[v(x+1,y)-v(x-1,y)]^2+[v(x,y+1)-v(x,y-1)]^2
這樣就可以避免上面所說的情況。
因為l,a,b在cie-lab顏色空間,l,a,b的大小有限制,而影象尺寸則沒有限制,如果的尺寸比較大,會造成衡量向量距離時空間距離(x,y)的影響過大,所以需要調製空間距離(x,y)的影響,所以需要對x,y進行normalize。改進向量距離的度量如下:
d_lab=[(lk-li)^2+(ak-ai)^2+(bk-bi)^2]^0.5
d_xy=[(xi-xk)^2+(yk-yi)^2]^0.5
ds=d_lab+(m/s)*d_xy
m用來調整d_xy的權值,一般為1-20,在演算法中設定為10。
最後可能出現一些小的區域d被標記為歸屬某一塊超畫素但卻與這塊超畫素沒有連線,這就需要把這塊小區域d重新歸類為與這塊小區域d連線的最大的超畫素中去,以保證每塊超畫素的完整。
來看看效果吧:
SLIC超畫素分割詳解
slic超畫素分割詳解 一 超畫素概念是2003年xiaofeng ren提出和發展起來的影象分割技術,是指具有相似紋理 顏色 亮度等特徵的相鄰畫素構成的有一定視覺意義的不規則畫素塊。它利用畫素之間特徵的相似性將畫素分組,用少量的超畫素代替大量的畫素來表達特徵,很大程度上降低了影象後處理的複雜度,所...
為什麼SLIC演算法得到的超畫素個數和預期的不一致
vl feat庫中的slic 由andrea vedaldi給出,xu於2017年提出的帶有部分改進的針對高光譜影象的slic演算法,將歐氏距離改為sid sam距離,並將規則化引數m的範圍限制在0到1之間。它們的主體步驟仍是一樣的,但得到的超畫素個數有所不同,除了暗含的對小畫素的合併以外,具體程式...
Mean shift超畫素分割
mean shift超畫素分割 超畫素概念 超畫素是指具有相似紋理 顏色 亮度等特徵的相鄰畫素構成的影象塊。是通過影象分割獲取的小區域,但是超畫素中往往存在過分割。現有的超畫素分割方法 l 基於圖論的超畫素分割方法 1.normalized cuts演算法 該演算法的特點是產生的超畫素較為規則,但其...