Main Content

imfill

イメージ領域と穴の塗りつぶし

説明

BW2 = imfill(BW,locations) は、locations で指定した点から開始し、塗りつぶし操作を入力バイナリ イメージ BW の背景ピクセルに適用します。

BW2 = imfill(BW,locations,conn) は、locations で定義された領域を塗りつぶします。ここで、conn は連結性を指定します。

BW2 = imfill(BW,"holes") は、入力バイナリ イメージ BW の穴を塗りつぶします。この構文にある穴 (hole) とは、イメージのエッジからの背景の塗りつぶしが到達できない背景ピクセルの集合です。

BW2 = imfill(BW,conn,"holes") は、バイナリ イメージ BW の穴を塗りつぶします。ここで、conn は連結性を指定します。

I2 = imfill(I) は、グレースケール イメージ I の穴を塗りつぶします。この構文では、穴は、明るいピクセルで囲まれた暗いピクセルの領域として定義されます。

I2 = imfill(I,conn) は、グレースケール イメージ I の穴を塗りつぶします。ここで、conn は連結性を指定します。

BW2 = imfill(BW) は、スクリーン上にバイナリ イメージ BW を表示し、マウスを使用して対話形式で点を選択して塗りつぶす領域を定義します。この構文を使用するには、BW は、2 次元イメージでなければなりません。

以前に選択していた点を除去するには、Backspace または Delete を押します。Shift クリック、右クリックまたはダブルクリックにより、最後の点を選択して、塗りつぶし操作を開始します。Enter キーを押すと、点を追加しないで、選択を終了します。

BW2 = imfill(BW,0,conn) では、対話形式で位置を指定すると、既定の連結性をオーバーライドすることができます。

[BW2, locations_out] = imfill(BW) は、locations_out に対話形式で選択した点の位置を返します。この構文を使用するには、BW は、2 次元イメージでなければなりません。

すべて折りたたむ

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

BW2 = imfill(BW1,[3 3],8)
BW2 = 8x8 logical array

   1   0   0   0   0   0   0   0
   1   1   1   1   1   0   0   0
   1   1   1   1   1   0   1   0
   1   1   1   1   1   1   1   0
   1   1   1   1   1   1   1   1
   1   0   0   1   1   1   1   0
   1   0   0   0   1   1   1   0
   1   0   0   0   1   1   1   0

イメージをワークスペースに読み取ります。

I = imread('coins.png');
figure
imshow(I)
title('Original Image')

イメージをバイナリ イメージに変換します。

BW = imbinarize(I);
figure
imshow(BW)
title('Original Image Converted to Binary Image')

バイナリ イメージにある穴を塗りつぶして結果を表示します。

BW2 = imfill(BW,'holes');
figure
imshow(BW2)
title('Filled Image')

I = imread('tire.tif');
I2 = imfill(I);
figure, imshow(I), figure, imshow(I2)

入力引数

すべて折りたたむ

バイナリ イメージ。任意の次元の logical 配列として指定します。

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

データ型: logical

ピクセル位置を識別する線形インデックス。正の整数の数値ベクトルまたは 2 次元数値行列として指定します。locations が、p 行 1 列のベクトルの場合、開始位置の線形インデックスを含んでいます。locations が、p 行 ndims(BW) 列の行列の場合、個々の行は開始位置の 1 つの配列インデックスを含んでいます。

例: [3 3]

データ型: double

グレースケール イメージ。任意の次元の数値配列として指定します。

例: I = imread('cameraman.tif');

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

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

意味

2 次元連結性

4

ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。

3-by-3 pixel neighborhood with four pixels connected to the center pixel

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

8

ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。

3-by-3 pixel neighborhood with 8 pixels connected to the center pixel

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

3 次元連結性

6

面が接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces of the center pixel

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

18

面またはエッジが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

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

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces and 12 pixels connected to the edges of the center pixel

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

26

面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

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

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

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces, 12 pixels connected to the edges, and 8 pixels connected to the corners of the center pixel

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

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

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

データ型: double | logical

出力引数

すべて折りたたむ

塗りつぶされたバイナリ イメージ。logical 配列として返されます。

ピクセル位置の線形インデックス。数値ベクトルまたは行列として返されます。

塗りつぶされたグレースケール イメージ。数値配列として返されます。

アルゴリズム

imfill は、モルフォロジー再構成をベースにしたアルゴリズムを使用しています [1]

参照

[1] Soille, P., Morphological Image Analysis: Principles and Applications, Springer-Verlag, 1999, pp. 173–174.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する