Main Content

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

superpixels3

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

説明

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

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

すべて折りたたむ

3 次元 MRI データを読み込み、大きさが 1 の次元を削除した後、データをグレースケール強度イメージに変換します。

load mri;
D = squeeze(D);
A = ind2gray(D,map);

3 次元スーパーピクセルを計算します。出力イメージを形成します。出力イメージの各ピクセルは、対応するスーパーピクセル領域の平均色に設定されます。

[L,N] = superpixels3(A,34);

すべての xy 平面とスーパーピクセルの境界を連続的に表示します。

imSize = size(A);

RGB イメージのスタックを作成して境界をカラー表示します。

imPlusBoundaries = zeros(imSize(1),imSize(2),3,imSize(3),'uint8');
for plane = 1:imSize(3)
  BW = boundarymask(L(:, :, plane));
  % Create an RGB representation of this plane with boundary shown
  % in cyan.
  imPlusBoundaries(:, :, :, plane) = imoverlay(A(:, :, plane), BW, 'cyan');
end

implay(imPlusBoundaries,5)

出力イメージの各ピクセルの色をスーパーピクセル領域の平均強度に設定します。元のイメージの横に平均のイメージを表示します。このコードを実行すると、implay で MRI データの各スライスを表示できます。

pixelIdxList = label2idx(L);
meanA = zeros(size(A),'like',D);
for superpixel = 1:N
     memberPixelIdx = pixelIdxList{superpixel};
     meanA(memberPixelIdx) = mean(A(memberPixelIdx));
end
implay([A meanA],5);

入力引数

すべて折りたたむ

セグメント化するボリューム。3 次元数値配列として指定します。

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

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

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

名前と値の引数

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

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

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

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

スーパーピクセルの形状。正の数値として指定します。値が高いほど、スーパーピクセルの形状は規則的になります。つまり、より正方形に近くなります。値が低いほど、スーパーピクセルは境界に忠実に従うため形状は不規則になります。一般的な値は、[0.01, 0.1] の範囲にあります。slic0 メソッドの既定値は 0.001 で、slic メソッドの既定値は 0.05 です。

メモ

"slic0" メソッドを指定する場合、通常は Compactness 引数を調整する必要はありません。"slic0" メソッドでは、superpixel3 が自動で Compactness 引数を適応的に調整するため、適切な値を決める必要はありません。

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

スーパーピクセルを計算するために使用されるアルゴリズム。次のいずれかの値に指定します。詳細については、アルゴリズムを参照してください。

平均

"slic0"

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

"slic"

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

データ型: char | string

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

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

出力引数

すべて折りたたむ

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

データ型: double

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

データ型: double

アルゴリズム

superpixels3 で使用されるアルゴリズムは、superpixels で使用される Simple Linear Iterative Clustering (SLIC) アルゴリズムを変更したものです。また、上位のレベルでクラスターの中心を作成し、最も近いクラスターの中心へのピクセルの割り当てとクラスターの中心位置の更新を繰り返し交互に実行します。superpixels3 は距離計量を使用して各ピクセルに最も近いクラスターの中心を決定します。この距離計量は強度の距離と空間的な距離の組み合わせです。

関数の Compactness 引数は距離計量の数学形式から得られます。アルゴリズムの compactness パラメーターはスーパーピクセルの形状を制御するスカラー値です。2 つのピクセル i と j 間の距離 (m は compactness の値) は次のとおりです。

dintensity=(lilj)2dspatial=(xixj)2+(yiyj)2+(zizj)2D=(dintensitym)2+(dspatialS)2

compactness は 2 次元関数 superpixels の場合と同じ意味を持ちます。距離計量全体で強度の距離と空間的な距離の相対的な重要性を決定します。値が低いほど、スーパーピクセルは境界に忠実に従うため形状は不規則になります。値が高いほど、スーパーピクセルの形状は規則的になります。入力イメージのダイナミック レンジは 0 から 1 になるようにアルゴリズム内で正規化されています。それにより、compactness の値はイメージをとおして同じ意味を持つことになります。

拡張機能

バージョン履歴

R2016b で導入

すべて展開する