Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

superpixels

イメージの 2 次元スーパーピクセル オーバーセグメンテーション

説明

[L,numLabels] = superpixels(A,N) は、2 次元のグレースケール イメージまたは RGB イメージ A のスーパーピクセルを計算します。N は作成するスーパーピクセルの数を指定します。この関数はラベル行列 L と、計算された実際のスーパーピクセル数 numLabels を返します。

関数 superpixels は Simple Linear Iterative Clustering (SLIC) アルゴリズム[1]を使用します。このアルゴリズムは類似値をもつ領域にピクセルを分類します。セグメンテーションなどのイメージ処理演算でこれらの領域を使用すると、演算の複雑度を低減させることができます。

[L,numLabels] = superpixels(A,N,Name=Value) は、セグメンテーションの特性を制御する名前と値の引数を使用してイメージ A のスーパーピクセルを計算します。

すべて折りたたむ

イメージをワークスペースに読み取ります。

A = imread('kobi.png');

イメージのスーパーピクセルを計算します。

[L,N] = superpixels(A,500);

スーパーピクセルの境界を元のイメージに重ね合わせて表示します。

figure
BW = boundarymask(L);
imshow(imoverlay(A,BW,'cyan'),'InitialMagnification',67)

Figure contains an axes object. The axes object contains an object of type image.

出力イメージの各ピクセルの色をスーパーピクセル領域の RGB カラーの平均値に設定します。

outputImage = zeros(size(A),'like',A);
idx = label2idx(L);
numRows = size(A,1);
numCols = size(A,2);
for labelVal = 1:N
    redIdx = idx{labelVal};
    greenIdx = idx{labelVal}+numRows*numCols;
    blueIdx = idx{labelVal}+2*numRows*numCols;
    outputImage(redIdx) = mean(A(redIdx));
    outputImage(greenIdx) = mean(A(greenIdx));
    outputImage(blueIdx) = mean(A(blueIdx));
end    

figure
imshow(outputImage,'InitialMagnification',67)

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

セグメント化するイメージ。2 次元グレースケール イメージまたは 2 次元トゥルーカラー イメージとして指定します。int16 データの場合、A はグレースケール イメージでなければなりません。パラメーター isInputLabtrue の場合、入力イメージはデータ型 single または double でなければなりません。

データ型: single | double | int16 | uint8 | uint16

必要なスーパーピクセル数。正の整数として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: B = superpixels(A,100,NumIterations=20); は、処理を 20 回繰り返します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: B = superpixels(A,100,"NumIterations",20);

スーパーピクセルの形状。正の数値として指定します。SLIC アルゴリズムの compactness パラメーターはスーパーピクセルの形状を制御します。値が高いほど、スーパーピクセルの形状は規則的になります。つまり、正方形です。値が低いほど、スーパーピクセルは境界に忠実に従うため形状は不規則になります。compactness の一般的な値は [1, 20] の範囲内です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

入力イメージ データが L*a*b* 色空間内に存在。true または false を指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

スーパーピクセルを計算するために使用されるアルゴリズム。次のいずれかの値に指定します。関数 superpixels は Simple Linear Iterative Clustering (SLIC) アルゴリズムの 2 つのバリエーションを使用します。

意味

"slic0"

superpixels は SLIC0 アルゴリズムを使用し、最初の反復後、Compactness を適応的に調整します。これは既定の設定です。

"slic"

クラスタリング中、Compactness は一定です。

データ型: char | string

アルゴリズムのクラスタリング フェーズで使用される反復回数。正の整数として指定します。ほとんどの問題では、このパラメーターを調整する必要はありません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

ラベル行列。正の整数の配列として返されます。イメージ内の各スーパーピクセル領域について、値 1 は 1 番目の領域、2 は 2 番目の領域 (以下同様) を示します。

データ型: double

計算されたスーパーピクセル数。正の整数として返されます。

データ型: double

参照

[1] Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Susstrunk, SLIC Superpixels Compared to State-of-the-art Superpixel Methods. IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 34, Issue 11, pp. 2274-2282, May 2012

拡張機能

バージョン履歴

R2016a で導入

すべて展開する