Main Content

bwpropfilt

バイナリ イメージからプロパティを使用してオブジェクトを抽出

説明

バイナリ イメージ内のオブジェクト

BW2 = bwpropfilt(BW,prop,range) は、バイナリ イメージ BW から、プロパティ prop の値が指定された range 内であるすべてのオブジェクトを抽出します。bwpropfilt は基準を満たすオブジェクトのみを含むバイナリ イメージ BW2 を返します。

BW2 = bwpropfilt(BW,prop,n) は指定された prop プロパティの値に基づいてオブジェクトを並べ替え、大きいほうから数えて n 個目までのオブジェクトのみを含むバイナリ イメージを返します。n 番目のオブジェクトが複数ある場合、bwpropfilt は、最初から数えて n 個目までのオブジェクトだけを BW2 に保持します。

BW2 = bwpropfilt(BW,prop,n,keep) はプロパティ prop で並べ替えたときに大きいほうから数えて n 個のオブジェクトを保持するか、小さいほうから数えて n 個のオブジェクトを保持するかを指定します。

BW2 = bwpropfilt(BW,I,prop,___) はグレースケール イメージ I の強度値と prop プロパティに基づいてオブジェクトを並べ替えます。

BW2 = bwpropfilt(___,conn) はピクセルの連結性 conn を指定します。

連結要素の構造体内のオブジェクト

CC2 = bwpropfilt(CC,prop,range) は、プロパティ prop の値が指定された range である、CC 内の連結要素を返します。

CC2 = bwpropfilt(CC,prop,n) は、大きいほうから数えて n 個目までの連結要素を返します。n 番目のオブジェクトが複数ある場合、bwpropfilt は、最初から数えて n 個目までのオブジェクトだけを CC2 に保持します。

CC2 = bwpropfilt(CC,prop,n,keep) は、プロパティ prop で並べ替えたときに大きいほうから数えて n 個の連結要素を保持するか、小さいほうから数えて n 個の連結要素を保持するかを指定します。

CC2 = bwpropfilt(CC,I,prop,___) はグレースケール イメージ I の強度値とプロパティ prop に基づいて連結要素を並べ替えます。

すべて折りたたむ

イメージを読み取り、それを表示します。

BW = imread('text.png');
figure
imshow(BW)
title('Original Image')

フィルター処理を使用して、元のイメージ内に存在する穴のない領域のみを含む別のイメージを作成します。これらの領域のオイラー数プロパティは 1 に等しくなります。フィルター処理されたイメージを表示します。

BW2 = bwpropfilt(BW,'EulerNumber',[1 1]);
figure
imshow(BW2)
title('Regions with Euler Number == 1')

イメージを読み取ります。

BW = imread('text.png');

最大の周囲長をもつ 10 個のオブジェクトをイメージから検出し、フィルター処理されたイメージを表示します。

BW2 = bwpropfilt(BW,'perimeter',10);
figure;
imshow(BW2)
title('Objects with the Largest Perimeters')

イメージを読み取って表示します。

I = imread("blobs.png");
imshow(I)

連結要素の構造体を作成します。

CC = bwconncomp(I);

構造体をフィルター処理し、丸いオブジェクトを保持します。フィルター処理されたイメージを表示します。

CC = bwpropfilt(CC,"Circularity",[0.7 1]);
imshow(cc2bw(CC))

構造体を再度フィルター処理し、大きいオブジェクトを保持します。フィルター処理されたイメージを表示します。

CC = bwpropfilt(CC,"Area",[20 Inf]);
imshow(cc2bw(CC))

入力引数

すべて折りたたむ

フィルター処理されるイメージ。バイナリ イメージとして指定します。

bwpropfilt は、関数 bwconncomp を使用してイメージ内の連結要素を検出します。

データ型: logical

フィルター処理される連結要素。構造体として指定します。関数 bwconncomp を使用して、バイナリ イメージから連結要素の構造体を取得できます。

データ型: struct

フィルター条件として指定するプロパティの名前。以下のいずれかの値として指定します。

ピクセル値測定

プロパティ名説明
"Area"領域内のピクセル数。
"Circularity"

オブジェクトの丸さ。真円度値は次のように計算されます。

(4*pi*Area/Perimeter^2)*(1 - 0.5/r)^2 (ここで r = Perimeter/(2*pi) + 0.5 です)

最大真円度値は 1 です。

"ConvexArea"凸包内のピクセル数。凸包は、領域を含むことができる最小の凸多角形です。凸包の境界上のピクセルの分類の詳細については、Classify Pixels That Are Partially Enclosed by ROIを参照してください。
"Eccentricity"領域と同じ 2 次モーメントをもつ楕円の離心率。離心率とは、楕円の焦点間の距離と長軸の長さの割合です。値は、範囲 [0, 1] の数値です。(0 と 1 は変性した場合です。実際には、離心率が 0 の楕円は円で、離心率が 1 の楕円は線分です)。
"EquivDiameter"領域と同じ面積をもつ円の直径 (ピクセル単位)。sqrt(4*Area/pi) で計算されます。
"EulerNumber"オイラー数 (オイラー標数とも呼ばれる)。1 から領域内の穴の数を引いて計算されます。
"Extent"境界ボックス全体のピクセル数に対する領域内ピクセル数の割合。Area を境界ボックスの面積で除算して計算されます。
"FilledArea"領域内のすべての穴を塗りつぶした後の領域内のピクセル数。
"MajorAxisLength"領域と同じ正規化された 2 次中心モーメントをもつ楕円の長軸の長さ (ピクセル単位)。
"MinorAxisLength"領域と同じ正規化された 2 次中心モーメントをもつ楕円の短軸の長さ (ピクセル単位)。
"Orientation"

"x" 軸と、領域と同じ 2 次モーメントをもつ楕円の長軸との角度 (度単位)。値の範囲は (–90, 90] です。

この図は、楕円の軸と方向を示しています。図の左側は、イメージ領域とその対応する楕円を示しています。右側は同じ楕円を示し、青の実線で軸を表しています。赤い点は焦点で、方向は水平の点線と長軸の角度になります。

Axes and orientation of ellipse surrounding an image region

"Perimeter"

領域の境界の周囲長 (ピクセル単位)。領域の境界の周りで隣接するピクセルの組の距離を加算することによって計算します。次の図は、サンプル領域の周囲の計算に含まれるピクセルを示しています。

Perimeter pixels of a region

"Solidity"領域内にもある凸包のピクセルの比率。Area/ConvexArea として計算されます。

マーカー イメージ I を関数への入力引数として含める場合は、以下の表からピクセル値測定プロパティを指定できます。

ピクセル値測定

プロパティ名 説明
"MaxIntensity"領域内で最大の強度をもつピクセルの値。
"MeanIntensity"領域内のすべての強度値の平均。
"MinIntensity"領域内で最小の強度をもつピクセルの値。

データ型: char | string

プロパティの最小値と最大値。[low high] の形式をもつ 2 要素の数値ベクトルとして指定します。値は、非減少でなければなりません。

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

返すオブジェクトの数。正の整数として指定します。

データ型: double

保持するオブジェクト。"largest" または "smallest" として指定します。

データ型: char | string

マーカー イメージ。グレースケール イメージとして指定します。グレースケール イメージの強度値によって入力バイナリ イメージ内の領域が定義されます。マーカー イメージは、バイナリ イメージ BW と同じサイズであるか、連結要素の構造体の ImageSize フィールドと一致しなければなりません。

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

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

意味

2 次元連結性

4

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

Center pixel connected to four pixels

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

8

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

Center pixel connected to eight pixels

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

連結性は、01 から成る 3 行 3 列の行列を指定し、より一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。この行列は、その中心要素に関して対称でなければなりません。

データ型: double | logical

出力引数

すべて折りたたむ

フィルター処理されたイメージ。BW と同じサイズのバイナリ イメージとして返されます。

フィルター処理された連結要素。構造体として返されます。

ヒント

  • bwpropfilt は、関数 regionprops を使用して連結要素のプロパティを計算します。

  • 複数のイメージのプロパティを効率的にフィルター処理するには、同じ連結要素の構造体を使用して bwpropfilt を複数回呼び出します。

拡張機能

バージョン履歴

R2014b で導入

すべて展開する