Main Content

bwlabeln

バイナリ イメージ内の連結要素をラベル付け

説明

L = bwlabeln(BW) は、BW の連結要素のラベルを含むラベル行列 L を返します。

L = bwlabeln(BW,conn) はラベル行列を返します。ここで、conn は連結性を指定します。

[L,n] = bwlabeln(___) は、BW で検出された連結オブジェクトの数 n も返します。

すべて折りたたむ

シンプルな 3 次元サンプル バイナリ イメージを作成します。

BW = cat(3, [1 1 0; 0 0 0; 1 0 0],...
            [0 1 0; 0 0 0; 0 1 0],...
            [0 1 1; 0 0 0; 0 0 1])
BW = 
BW(:,:,1) =

     1     1     0
     0     0     0
     1     0     0


BW(:,:,2) =

     0     1     0
     0     0     0
     0     1     0


BW(:,:,3) =

     0     1     1
     0     0     0
     0     0     1

イメージ内の連結要素にラベル付けします。

bwlabeln(BW)
ans = 
ans(:,:,1) =

     1     1     0
     0     0     0
     2     0     0


ans(:,:,2) =

     0     1     0
     0     0     0
     0     2     0


ans(:,:,3) =

     0     1     1
     0     0     0
     0     0     2

入力引数

すべて折りたたむ

バイナリ イメージ。任意の次元の数値配列または logical 配列として指定します。数値入力の場合、非ゼロのピクセルは 1 (true) であると見なされます。

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

ピクセルの連結性。次の表のいずれかの値を指定します。既定の連結性は 2 次元イメージでは 8、3 次元イメージでは 26 です。

平均

2 次元連結性

4

ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。2 つの隣り合ったピクセルは両方とも "on" の場合に同じオブジェクトの一部であり、水平方向または垂直方向に連結します。

Center pixel connected to four pixels

現在のピクセルを灰色で示します。

8

ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。2 つの隣り合ったピクセルは両方とも "on" の場合に同じオブジェクトの一部であり、水平方向、垂直方向または対角方向に連結します。

Center pixel connected to eight pixels

現在のピクセルを灰色で示します。

3 次元連結性

6

面が接触している場合、ピクセルは連結されます。2 つの隣り合ったピクセルは両方とも "on" の場合に同じオブジェクトの一部であり、次のように連結します。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

Center pixel connected to the faces of 6 pixels

現在のピクセルは立方体の中心です。

18

面またはエッジが接触している場合、ピクセルは連結されます。2 つの隣り合ったピクセルは両方とも "on" の場合に同じオブジェクトの一部であり、次のように連結します。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

Center pixel connected to the faces of 6 pixels and the edges of 12 pixels

現在のピクセルは立方体の中心です。

26

面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。2 つの隣り合ったピクセルは両方とも "on" の場合に同じオブジェクトの一部であり、次のように連結します。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

  • 右上の奥または左下の奥など、3 つの方向の組み合わせ

Center pixel connected to the faces of 6 pixels, the edges of 12 pixels, and the corners of 8 pixels

現在のピクセルは立方体の中心です。

高次元の場合、bwlabeln は既定値 conndef(ndims(BW),'maximal') を使用します。

連結性は、01 から成る 3 × 3 × ... × 3 行列を指定し、任意の次元に対してより一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素に関して対称でなければなりません。詳細については、カスタム連結性の定義を参照してください。

データ型: double | logical

出力引数

すべて折りたたむ

ラベル行列。BW と同じサイズの非負の整数から成る配列として返されます。0 とラベル付けされたピクセルは背景です。1 とラベル付けされたピクセルは 1 番目のオブジェクトを構成し、2 とラベル付けされたピクセルは 2 番目のオブジェクトを構成する、というように、次々にオブジェクトを構成します。

データ型: double

BW の連結オブジェクトの数。非負の整数として返されます。

データ型: double

ヒント

  • この関数は、各要素の top-left 極値を基準に、連結要素を左から右に並べ替えます。複数の要素の水平位置が同じ場合、関数はそれらの要素を上から下に並べ替えた後、より高い次元に沿って再度並べ替えます。次の図は、2 つの異なる 2 次元領域の極値を示しています。

    Two differently shaped regions, each with their eight extrema points labeled

  • 関数 bwlabelbwlabeln、および bwconncomp はすべて、バイナリ イメージの連結要素を計算します。bwconncomp は使用するメモリが大幅に少なく、場合によっては他の関数よりも高速です。

    関数入力次元出力形式メモリの使用連結性
    bwlabel2 次元倍精度をもつラベル行列4 または 8
    bwlabelnN 次元倍精度ラベル行列任意
    bwconncompN 次元CC 構造体任意
  • 既定の連結性を持つ regionprops を使用してバイナリ イメージから特徴を抽出するには、regionprops(BW) コマンドを使用して BW を直接 regionprops に渡します。

アルゴリズム

bwlabeln では、次の一般的な処理が使用されます。

  1. すべてのイメージ ピクセルをスキャンし、非ゼロ ピクセルに予備ラベルを割り当て、ラベル等価を和集合検出テーブルに記録します。

  2. 和集合検出アルゴリズム [1] を使用して、等価クラスを解決します。

  3. 対応済みの等価クラスに基づいて、ピクセルの再ラベル付けを行います。

参照

[1] Sedgewick, Robert, Algorithms in C, 3rd Ed., Addison-Wesley, 1998, pp. 11-20.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する