ドキュメンテーション

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

imfill

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

構文

BW2= imfill(BW,locations)
BW2= imfill(BW,'holes')
I2= imfill(I)
BW2 = imfill(BW)
BW2 = imfill(BW,0,conn)
[BW2,locations_out] = imfill(BW)
BW2= imfill(BW,locations,conn)
BW2= imfill(BW,conn,'holes')
I2= imfill(I,conn)
gpuarrayB = imfill(gpuarrayA,___)

説明

BW2= imfill(BW,locations) は、locations で指定した点から開始し、塗りつぶし操作を入力バイナリ イメージ BW の背景ピクセルに適用します。locations が、P 行 1 列のベクトルの場合、開始位置の線形インデックスを含んでいます。locations が、P 行 ndims(BW) 列の行列の場合、個々の行は開始位置の 1 つの配列インデックスを含んでいます。

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

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

BW2 = imfill(BW) は、スクリーン上にバイナリ イメージ BW を表示し、マウスを使用して対話形式で点を選択して塗りつぶす領域を定義します。この構文を使用するには、BW は、2 次元イメージでなければなりません。以前に選択していた点を除去するには、Backspace または Delete を押します。Shift クリック、右クリックまたはダブルクリックにより、最後の点を選択して、塗りつぶし操作を開始します。Enter キーを押すと、点を追加しないで、選択を終了します。

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

[BW2,locations_out] = imfill(BW) は、locations_out に対話形式で選択した点の位置を返します。戻り値 locations_out は、入力イメージに対する線形インデックスのベクトルです。この構文を使用するには、BW は、2 次元イメージでなければなりません。

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

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

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

gpuarrayB = imfill(gpuarrayA,___) は、GPU で塗りつぶし操作を実行します。入力イメージと返されるイメージは 2 次元の gpuArray です。この構文を使用するには Parallel Computing Toolbox™ が必要です。GPU で実行する場合、imfill ではマウスを使用して位置を選択する対話型構文はサポートされません。

すべて折りたたむ

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 = 8×8 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)

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

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])
BW1 =

     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

gpuArray を作成します。

BW1 = gpuArray(BW1);    

指定した開始位置からイメージの背景を塗りつぶします。

BW2 = imfill(BW1,[3 3],8)
BW2 =

     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

入力引数

すべて折りたたむ

入力バイナリ イメージ。任意の次元の実数、非スパースの数値配列または論理配列として指定します。

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

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

ピクセル位置を識別する線形インデックス。2 次元、実数、正の整数の数値ベクトルまたは行列として指定します。

例: BW2 = imfill(BW,[3 3],8);

データ型: double

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

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

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

連結性。次のテーブルのいずれかのスカラー値として指定します。既定の設定では、imfill は 2 次元イメージの 4 連結近傍と、3 次元入力の 6 連結近傍を使用します。高次元に対しては、imfillconndef(ndims(I),'minimal') を使用します。連結性は、conn01 を要素とする 3 × 3 × ... × 3 行列として使用することにより、任意の次元に対してより一般的に定義できます。1 の値をもつ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素の周りに対称でなければなりません。

意味

2 次元連結性

4

4 連結近傍

8

8 連結近傍

3 次元連結性

6

6 連結近傍

18

18 連結近傍

26

26 連結近傍

例:

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

入力イメージ。gpuArray として指定します。

出力引数

すべて折りたたむ

塗りつぶされたイメージ。入力イメージと同じクラスの配列として返されます。

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

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

出力イメージ。gpuArray として返されます。

アルゴリズム

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

参照

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

拡張機能

R2006a より前に導入

この情報は役に立ちましたか?