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')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Original Image Converted to Binary Image contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Filled Image contains an object of type image.

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

Figure contains an axes object. The axes object contains an object of type image.

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

バイナリ イメージ。任意の次元の 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 連結

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

8 連結

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

3 次元連結性

6 連結

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

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

18 連結

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

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

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

26 連結

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

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

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

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

高次元の場合、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 より前に導入