ドキュメンテーション

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

bwlabel

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

説明

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

オプションで、2 次元バイナリ イメージの連結要素のラベル付けを GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

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

小さいバイナリ イメージを作成し、それを含む gpuArray オブジェクトを作成します。

BW = gpuArray(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)

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

[r,c] = find(L == 2)

入力引数

すべて折りたたむ

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

GPU を使用して連結要素にラベル付けするには、BW を 2 次元数値行列または logical 行列を含む gpuArray として指定します。

例: BW = imread('text.png');

例: BW = gpuArray(imread('text.png'));

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

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

平均

2 次元連結性

4 連結

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

8 連結

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

データ型: double | logical

出力引数

すべて折りたたむ

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

GPU を使用して連結要素にラベル付けする場合、L は非負の整数の行列を含む gpuArray として返されます。

データ型: double

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

データ型: double

ヒント

  • 関数 bwlabelbwlabelnbwconncomp はすべて、バイナリ イメージの連結要素を計算します。bwconncomp は、bwlabelbwlabeln を置き換えて使用できます。メモリ使用量が大幅に削減され、他の関数より高速な場合もあります。

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

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

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

  • メモリ効率が高いデータ型 (たとえば、double に対して uint8) を使用してラベル行列を計算するには、bwconncomp の出力で関数 labelmatrix を使用します。

  • 既定の連結性を持つ 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 より前に導入