SLIC (Simple Linear Iterative Clustering) superpixels |
2017-02-18 - 2019-01-05 (update) |
|
|
*superpixel とは
似た傾向を持つ画素をひとまとめにした領域です.superpixelは,物体認識や画像加工などの前処理に良く利用されます.Achanta[1]で紹介されているSLIC(Simple Linear Iterative Clustering)は,画像をsuperpixelに分割する代表的なアルゴリズムです.
図1はSLICを用いて,画像をsuperpixelに分割した例を示します.
[img:7kj9]
{{small:図1 左:入力画像,右:superpixelに分割した結果}}
{{small:[1]R.Achanta, A.Shaji, K.Smith, A.Lucchi, P.Fua, and S.Susstrunk, "SLIC superpixels compared to state-of-the-art superpixel methods", IEEE Transactions on Pattern Analysis and Machine Intelligence(PAMI), 2011.
[link:https://infoscience.epfl.ch/record/177415/files/Superpixel_PAMI2011-2.pdf] }}
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/sp/imgproc
Lennaの画像をsuperpixelに分割します.
*アルゴリズム
ここでは,SLICの処理の手順を説明します.処理は次の3つの段階に分かれます
1.等間隔でsuperpixelの領域を決め,そのパラメータ(中心位置と色の情報)を初期化する
2.各画素の色と位置の情報を元に,どのsuperpixelに所属するかを決定する
3.各superpixelのパラメータを更新する
処理2と3を繰り返すことで,段階的に精度を向上させます.その繰り返し回数は固定値を設定するか,或いは処理3の更新の程度を見て決定します.
図2では処理のフローチャートとsuperpixelの初期状態を示します.
[img:cytn]
{{small:図2 処理のフローチャートとsuperpixelの初期状態}}
**1.superpixelの初期化
等間隔でsuperpixelの代表の位置を設定します.ここでは,注目する位置の周囲3x3画素も見て,色の勾配が最も小さい位置を選択します.これは,エッジやノイズの強い画素が選ばれないようにする工夫です.また,選択した位置の画素の色を,superpixelの代表の色として設定します.
**2.各画素の所属を決定
各画素について,色と位置の情報が最も類似するsuperpixelを決定します.ただし,各画素と各superpixelの組み合わせをすべて比較する処理は時間がかかります.そこでSLICでは,各superpixelを中心とした一定サイズの矩形を定義し,その範囲内にある画素とのみ比較を行うことで,処理を効率化します.
**3.各superpixelのパラメータを更新
各superpixelの位置と色のパラメータを更新します.ここでは.各superpixelに所属する画素の位置と色をそれぞれ平均し,新しいパラメータとして設定ます.
>> ご意見・ご質問など お気軽にご連絡ください.info