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 の次元を削除した後、データをグレースケール強度イメージに変換します。

loadmri; 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');forplane = 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');endimplay(imPlusBoundaries,5)

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

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

入力引数

すべて折りたたむ

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

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

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

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

名前と値の引数

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

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

スーパーピクセルの形状。数値スカラーとして指定します。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 パラメーターはスーパーピクセルの形状を制御するスカラー値です。2 つのピクセル i と j 間の距離 (m は compactness の値) は次のとおりです。

d int e n s i t y = ( l i l j ) 2 d s p a t i a l = ( x i x j ) 2 + ( y i y j ) 2 + ( z i z j ) 2 D = ( d int e n s i t y m ) 2 + ( d s p a t i a l S ) 2

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

バージョン履歴

R2016b で導入