Matlabはバイナリイメージの小さなオブジェクトを削除しますbwareaopen
Matlab Removes Binary Image Small Objects Bwareaopen
から: https://ww2.mathworks.cn/help/images/ref/bwareaopen.html
バイナリイメージから小さなオブジェクトを削除します
構文
BW2 = bwareaopen(BW,P)
BW2 = bwareaopen(BW,P,conn)
説明
BW2
= bwareaopen( BW
、 P
)。P
未満の接続されたすべてのコンポーネント(オブジェクト)を削除しますバイナリイメージBW
からのピクセル、別のバイナリイメージBW2
を生成します。この操作は、 エリアオープニング 。
BW2 = bwareaopen(
接続されているすべてのコンポーネントを削除します。ここで、BW
、 P
、 conn
)。conn
必要な接続を指定します。
例
50ピクセル未満の画像内のオブジェクトを削除する
この例を試してください
バイナリイメージを読み取ります。
BW = imread('text.png')
bwareaopen
を使用して、50ピクセル未満のオブジェクトを削除します関数。
BW2 = bwareaopen(BW, 50)
形態学的に開いた画像の横に元の画像を表示します。
imshowpair(BW,BW2,'montage')
入力引数
BW
—バイナリイメージ
任意の次元の実数、非スパース、論理または数値配列
任意の次元の非スパース、論理、または数値配列として指定されたバイナリイメージ。
例: BW2 = bwareaopen(BW, 50)
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
P
—オブジェクトの最大ピクセル数
非負、整数値、数値スカラー
非負の整数値の数値スカラーとして指定された、オブジェクトの最大ピクセル数。
例: BW2 = bwareaopen(BW, 50)
データ型: double
conn
—ピクセル接続
4
| 8
| 6
| 18
| 26
| 0
sと1
sの3行3列...行3列の行列
この表の値の1つとして指定されているピクセル接続。デフォルトの接続は8
です。 2D画像の場合、および26
3D画像用。
値 | 意味 | |
---|---|---|
二次元の接続性 | ||
4接続 | ピクセルは、エッジが接触すると接続されます。隣接する2つのピクセルは、両方がオンで、水平方向または垂直方向に沿って接続されている場合、同じオブジェクトの一部です。 |
|
8接続 | ピクセルは、エッジまたはコーナーが接触すると接続されます。隣接する2つのピクセルは、両方がオンで、水平、垂直、または斜めの方向に沿って接続されている場合、同じオブジェクトの一部です。 |
|
三次元接続性 | ||
6接続 | ピクセルは、顔が接触すると接続されます。隣接する2つのピクセルは、両方がオンで接続されている場合、同じオブジェクトの一部です。
|
|
18接続 | ピクセルは、その面またはエッジが接触すると接続されます。隣接する2つのピクセルは、両方がオンで接続されている場合、同じオブジェクトの一部です。
|
|
26-接続 | ピクセルは、面、エッジ、またはコーナーが接触すると接続されます。隣接する2つのピクセルは、両方がオンで接続されている場合、同じオブジェクトの一部です。
|
|
高次元の場合、bwareaopen
デフォルト値を使用
。conndef
(ndims(BW)、 'maximal')
接続性は、0
sと1
sの3x 3 x ... x 3の行列を指定することにより、任意の次元に対してより一般的な方法で定義することもできます。 1
値の要素は、conn
の中心要素を基準にした近隣の場所を定義します。 conn
に注意してください中心要素に関して対称である必要があります。見る カスタム接続の指定 詳細については。
データ型: double
| logical
出力引数
BW2
—形態学的に開かれた画像
任意の次元の非スパース論理配列
形態学的に開かれ、と同じサイズの非スパース論理配列として指定された画像 BW
。
アルゴリズム
基本的な手順は次のとおりです
-
接続されているコンポーネントを特定します。
CC = bwconncomp(BW, conn)
-
各コンポーネントの面積を計算します。
S = regionprops(CC, 'Area')
-
小さなオブジェクトを削除します。
L = labelmatrix(CC) BW2 = ismember(L, find([S.Area] >= P))