😄

スーパーピクセル SLIC を学んでみた

2022/07/12に公開

導入

スーパーピクセルとは複数のピクセルを特徴や色の類似性を基にまとめたものです。セグメンテーションすることでスーパーピクセルを生成することができます。スーパーピクセルを生成することで他の処理が容易になったりと便利ですので、スーパーピクセル生成の代表的アルゴリズムのSLICを紹介します。

論文の再現実装や詳細な説明を用意しました。本記事は簡易的に説明しますが、より詳しく知りたい方はこちらをよろしくお願いします。
【再現実装】
https://github.com/textcunma/SLIC
【詳細な説明】
https://github.com/textcunma/SLIC/blob/main/explanation.pdf

SLIC

SLICは「Simple Linear Iterative Clustering」の略称で、局所的なk-meansによって色の類似性と画素の近接性を基にスーパーピクセルを生成します。2011年に発表され、2012年に論文化。

https://core.ac.uk/download/pdf/147983593.pdf

SLIC アルゴリズム

  1. RGB画像をLab画像に変換
  2. 初期化
    • k個のクラスタの重心の位置を等間隔で配置
    • 各重心の3×3近傍を参照して勾配が最小な位置に重心を移動
  3. 終了条件を満たさない限り、以下の処理を繰り返す
  4. 局所クラスタリング
  5. 重心の移動

上記のアルゴリズムの通り、ほぼほぼk-meansと同じです。ただし、局所クラスタリングと距離計算の部分に大きな違いがあります。

  • 【局所クラスタリング】
    グリッドの間隔をS、重心の位置を(x_i,y_i)とした場合に、x_i-S{\leq}x_i{\leq}x_i+Sかつy_i-S{\leq}y_i{\leq}y_i+Sの範囲のみに対してクラスタリングをします。論文では計算量が減ってイイヨ~と言っています。

  • 【距離計算】
    Lab画像を用いて[l,a,b,x,y]の5次元空間なため、単純なユークリッド計算が出来ないことから以下の特殊な計算を行っています。これによって、画素の近接性、色の類似性、そしてスーパーピクセルのサイズを考慮した距離計算が可能になります。

  • 【処理終了条件】
    最大イテレーション数10を下回った場合、移動先の重心と現在の重心のマンハッタン距離が閾値を下回った場合に処理を終了

結果

k-meansでも同様ですがクラスタ数が多くなると重心がさほど動かなくなることで入力と似てきます。



締め

さほど難しい理屈でないにも関わらず見た目がかなり変化して画像処理の面白いところが出てると思います。スーパーピクセルは画像の物体認識など様々な箇所で応用可能と言われているので知っておいて損はないのかなと。今回は主に再現実装した結果を示しましたが、以下の資料にあるようにOpenCVで提供していて簡単に試せます。
https://qiita.com/sitar-harmonics/items/ba02cd14d6f362439e96

Discussion