Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

superpixels3

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

説明

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

[L,NumLabels]= superpixels3(___,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

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

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

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

メモ

'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 の場合と同じ意味を持ちます。距離計量全体で強度の距離と空間的な距離の相対的な重要性を決定します。値が低いほど、スーパーピクセルは境界に忠実に従うため形状は不規則になります。値が高いほど、スーパーピクセルの形状は規則的になります。compactness の許容範囲は、2 次元関数の場合と同じく、(0 Inf) になります。標準の範囲は実験から [0.01 0.1] であることが認められています。入力イメージのダイナミック レンジは 0 から 1 になるようにアルゴリズム内で正規化されています。それにより、compactness の値はイメージをとおして同じ意味を持つことになります。

R2016b で導入