為什麼SLIC演算法得到的超畫素個數和預期的不一致

2021-10-06 06:35:43 字數 1318 閱讀 6733

vl_feat庫中的slic**由andrea vedaldi給出,xu於2023年提出的帶有部分改進的針對高光譜影象的slic演算法,將歐氏距離改為sid-sam距離,並將規則化引數m的範圍限制在0到1之間。它們的主體步驟仍是一樣的,但得到的超畫素個數有所不同,除了暗含的對小畫素的合併以外,具體程式實現中對精度的取捨也有影響。

xu的**:

slic演算法為每個畫素設計的表示特徵的向量

ψ (x

,y)=

[λxλ

yi(x

,y)]

\psi(x,y) =\left[\begin\lambda x \\ \lambda y \\ i(x,y)\end\right]

ψ(x,y)

=⎣⎡​

λxλy

i(x,

y)​⎦

⎤​

vl_slic_segment (vl_uint32 * segmentation,

float const * image,

vl_size width,

vl_size height,

vl_size numchannels,

vl_size regionsize,

float regularization,

vl_size minregionsize)

1.計算邊緣圖(漸變強度)

計算邊緣圖compute edge map (gradient strength)

2.初始化聚類中心

初始化聚類中心initialize k-means centers(問題出在這一步)

3.開始k-means聚類迭代

開始k-means聚類迭代run k-means iterations

以下實驗結果僅針對145*145畫素大小的影象,長寬不等的不一定符合結論。

regionsize = floor(sqrt(原始畫素個數/需要的超畫素個數))

numregionsx = ceil((double) width / regionsize)

numregionsy = ceil((double) height / regionsize)

初始種子點個數 = floor(145/floor(sqrt(原始畫素個數/需要的超畫素個數)))^2
大概確定,結果見下圖(第一列為輸入超畫素個數,第三列為實際得到的個數)

SLIC超畫素(superpixel)演算法

slic演算法是 linear iterative cluster的簡稱,該演算法用來生成超畫素 superpixel 演算法大致思想是這樣的,將影象從rgb顏色空間轉換到cie lab顏色空間,對應每個畫素的 l,a,b 顏色值和 x,y 座標組成乙個5維向量v l,a,b,x,y 兩個畫素的相似...

為什麼對byte的操作會得到int的結果

下面的討論,適用於c c c 我決定使用c 來演示,為什麼?我覺得這段時間對c 這位兄弟的關注還是太少了。有些人會抱怨,為什麼下面的 會觸發編譯器的警告 他們會說 對乙個byte的操作,按理說,結果應該也是乙個byte呀,為什麼會是乙個int?要小心了大兄弟,你要求的東西,可能實際上並不是你真正想要...

超盟之家是做什麼的?為什麼做便利店要選擇超盟之家?

超盟之家是社群新零售的再一次公升級,以商圈本地化服務為宗旨,通過規模化實體店,為社群居民 商圈商家搭建乙個真實 快捷 就近 方便 安全的網路購物,商家服務和商業賦能的環境。超盟之家是什麼?超盟之家靠什麼盈利?超盟之家的服務主體為社群居民和商圈商家 你想購物,來超盟之家 你想學店鋪營銷,來超盟之家 你...