Main Content

bwlabel

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

説明

L = bwlabel(BW) は、BW で検出された 8 連結オブジェクトのラベルを含むラベル行列 L を返します。

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

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

すべて折りたたむ

小さいバイナリ イメージを作成します。

BW = logical ([1     1     1     0     0     0     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     1     1     0
               1     1     1     0     0     0     0     0]);

4 連結オブジェクトを使用して、ラベル行列を作成します。

L = bwlabel(BW,4)
L = 8×8

     1     1     1     0     0     0     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     3     3     0
     1     1     1     0     0     0     0     0

find コマンドを使用して、"2" というラベルが付いたオブジェクトの行座標と列座標を取得します。

[r, c] = find(L==2);
rc = [r c]
rc = 4×2

     2     5
     3     5
     2     6
     3     6

入力引数

すべて折りたたむ

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

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

ピクセルの連結性。次のいずれかの値を指定します。

意味

2 次元連結性

4

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

Center pixel connected to four pixels

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

8

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

Center pixel connected to eight pixels

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

データ型: double | logical

出力引数

すべて折りたたむ

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

データ型: double

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

データ型: double

ヒント

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

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

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

     入力次元出力形式メモリの使用連結性
    bwlabel2 次元倍精度ラベル行列4 または 8
    bwlabelnN 次元倍精度ラベル行列任意
    bwconncompN 次元CC 構造体任意
  • MATLAB® 関数 findbwlabel と組み合わせて使用して、特定のオブジェクトを構成するピクセルのインデックスのベクトルを返すことができます。たとえば、オブジェクト 2 内のピクセルの座標を返すには、次のように入力します。

    [r,c] = find(bwlabel(BW)==2)

    出力行列は、疑似色のインデックス付きイメージとして表示できます。各オブジェクトは別の色で表示されるため、元のイメージ内にあるときと比べて区別するのが簡単になります。詳細については、label2rgb を参照してください。

  • 既定の連結性を持つ regionprops を使用してバイナリ イメージから特徴を抽出するには、regionprops(BW) コマンドを使用して BW を直接 regionprops に渡します。

  • 関数 bwlabel は、データ型が logicaluint8 および single の場合、ハードウェアの最適化を利用してより高速に実行できます。ハードウェア最適化では、markermask が 2 次元イメージで、conn が 4 または 8 である必要があります。

アルゴリズム

bwlabel は、参考文献 [1] pp. 40-48 の説明にある一般的な処理を使用します。

  1. 入力イメージは、実行長によりエンコードされます。

  2. 実行をスキャンし、予備ラベルを割り当て、ラベル等価を局所的な等価テーブルに記録します。

  3. 等価クラスを解決します。

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

参照

[1] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Volume I, Addison-Wesley, 1992, pp. 28-48.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する