bwferet
構文
説明
は、イメージ内のオブジェクトのフェレ プロパティを測定し、測定値を table で返します。入力 out
= bwferet(BW
,properties
)properties
は、入力バイナリ イメージ BW
内の各オブジェクトで測定するフェレ プロパティを指定します。測定されるフェレ プロパティには、最小および最大フェレ径、フェレ角、フェレ径の端点座標が含まれます。
は、構造体 out
= bwferet(CC
,properties
)CC
内の各連結要素のフェレ プロパティを測定します。
は、入力ラベル行列 out
= bwferet(L
,properties
)L
内の各オブジェクトのフェレ プロパティを測定します。
例
バイナリ イメージ内のオブジェクトのフェレ プロパティの測定
イメージをワークスペースに読み取ります。
I = imread('toyobjects.png');
イメージをバイナリ イメージに変換します。
bw = imbinarize(I,'adaptive');
バイナリ イメージから最初の 2 つの最も大きいオブジェクトを抽出します。
bw = bwareafilt(bw,2);
抽出したオブジェクト領域の穴を塗りつぶします。
bw = imfill(bw,'holes');
抽出したオブジェクトの最小フェレ プロパティとラベル行列を計算します。
[out,LM] = bwferet(bw,'MinFeretProperties');
出力ラベル行列にあるオブジェクトの最大数を取得します。
maxLabel = max(LM(:));
最小フェレ プロパティの table を含む出力を表示します。
out
out=2×3 table
MinDiameter MinAngle MinCoordinates
___________ ________ ______________
116.23 99.462 {2x2 double}
132.08 -159.27 {2x2 double}
出力ラベル行列から、ラベル値 1 のオブジェクトの最小フェレ プロパティを表示します。
out.MinDiameter(1)
ans = 116.2301
out.MinAngle(1)
ans = 99.4623
out.MinCoordinates{1}
ans = 2×2
120.5000 311.5000
139.6081 196.8514
出力ラベル行列から、ラベル値 2 のオブジェクトの最小フェレ プロパティを表示します。
out.MinDiameter(2)
ans = 132.0776
out.MinAngle(2)
ans = -159.2744
out.MinCoordinates{2}
ans = 2×2
215.5000 197.5000
339.0304 244.2412
出力ラベル行列を表示します。出力ラベル行列から、ラベル値が異なるオブジェクトの端点座標と最小フェレ径をプロットします。
h = imshow(LM,[]); axis = h.Parent; for labelvalues = 1:maxLabel xmin = [out.MinCoordinates{labelvalues}(1,1) out.MinCoordinates{labelvalues}(2,1)]; ymin = [out.MinCoordinates{labelvalues}(1,2) out.MinCoordinates{labelvalues}(2,2)]; imdistline(axis,xmin,ymin); end title(axis,'Minimum Feret Diameter of Objects'); colorbar('Ticks',1:maxLabel)
連結要素のフェレ プロパティの測定
イメージをワークスペースに読み取ります。
I = imread('toyobjects.png');
イメージをバイナリ イメージに変換します。
bw = imbinarize(I,'adaptive');
入力バイナリ イメージのオブジェクト領域にある穴を塗りつぶします。
bw = imfill(bw,'holes');
関数 bwconncomp
を使用して、結果のイメージから連結要素を生成します。
cc = bwconncomp(bw);
連結要素の最大フェレ プロパティを測定します。
[out,LM] = bwferet(cc,'MaxFeretProperties');
出力ラベル行列にあるオブジェクトの最大数を取得します。
maxLabel = max(LM(:));
table を検査し、測定された最大フェレ プロパティを検証します。
out
out=4×3 table
MaxDiameter MaxAngle MaxCoordinates
___________ ________ ______________
162.6 -175.06 {2x2 double}
156.21 -127.46 {2x2 double}
187.96 121.07 {2x2 double}
63.781 -131.19 {2x2 double}
出力ラベル行列から、ラベル値が異なるオブジェクトの最大フェレ径を表示します。
out.MaxDiameter(1:maxLabel)
ans = 4×1
162.6038
156.2082
187.9628
63.7809
出力ラベル行列から、ラベル値が異なるオブジェクトに固有の最大フェレ径の方向角を表示します。
out.MaxAngle(1:maxLabel)
ans = 4×1
-175.0608
-127.4568
121.0683
-131.1859
出力ラベル行列から、ラベル値が異なるオブジェクトに固有の最大フェレ径の端点座標を表示します。
out.MaxCoordinates{1:maxLabel}
ans = 2×2
186.5000 113.5000
24.5000 99.5000
ans = 2×2
156.5000 315.5000
61.5000 191.5000
ans = 2×2
337.5000 174.5000
240.5000 335.5000
ans = 2×2
288.5000 129.5000
246.5000 81.5000
出力ラベル行列を表示します。出力ラベル行列から、ラベル値が異なるオブジェクトの端点座標と最大フェレ径をプロットします。
h = imshow(LM,[]); axis = h.Parent; for labelvalues = 1:maxLabel xmax = [out.MaxCoordinates{labelvalues}(1,1) out.MaxCoordinates{labelvalues}(2,1)]; ymax = [out.MaxCoordinates{labelvalues}(1,2) out.MaxCoordinates{labelvalues}(2,2)]; imdistline(axis,xmax,ymax); end title(axis,'Maximum Feret Diameter of Objects'); colorbar('Ticks',1:maxLabel)
入力引数
BW
— バイナリ イメージ
数値行列 | logical 行列
バイナリ イメージ。logical 行列または数値行列として指定します。数値入力の場合、非ゼロのピクセルは 1
(true
) であると見なされます。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
CC
— 連結要素
構造体
連結要素。次の表に示す 4 つのフィールドを持つ構造体として指定します。
フィールド | 説明 |
---|---|
Connectivity | 連結要素 (オブジェクト) の連結性 |
ImageSize | 入力バイナリ イメージのサイズ |
NumObjects | 入力バイナリ イメージ内の連結要素 (オブジェクト) 数 |
PixelIdxList | 1 行 NumObjects 列の cell 配列。ここで、k 番目の要素は k 番目のオブジェクトのピクセルの線形インデックスを含むベクトルです。 |
関数 bwconncomp
を使用して、バイナリ イメージから連結要素を生成できます。
データ型: struct
L
— ラベル行列
非負の整数の行列
連続領域のラベル行列。非負の整数の行列として指定します。0 とラベル付けされたピクセルは背景です。1 とラベル付けされたピクセルは 1 番目のオブジェクトを構成し、2 とラベル付けされたピクセルは 2 番目のオブジェクトを構成する、というように、次々にオブジェクトを構成します。L
で表すオブジェクトの数は、L
の最大値に等しくなります。関数 bwlabel
を使用して、バイナリ イメージからラベル行列を生成できます。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
properties
— フェレ プロパティのラベル
"MaxFeretProperties"
| "MinFeretProperties"
| "all"
フェレ プロパティのラベル。"MaxFeretProperties"
、"MinFeretProperties"
、または "all"
として指定します。
データ型: char
| string
出力引数
out
— フェレ プロパティの table
m 行 n 列のテーブル
フェレ プロパティの table。m 行 n 列の table として返されます。m は、フェレ プロパティを測定するオブジェクトの数です。n は、properties
入力に応じて 3 または 6 です。
properties
が"MaxFeretProperties"
である場合、tableout
は、サイズが m 行 3 列で、列MaxDiameter
、MaxAngle
、およびMaxCoordinates
があります。properties
が"MinFeretProperties"
である場合、tableout
は、サイズが m 行 3 列で、列MinDiameter
、MinAngle
、およびMinCoordinates
があります。properties
が"all"
である場合、tableout
は、サイズが m 行 6 列で、次の表に示したすべての列があります。
列名 | 説明 |
---|---|
MaxDiameter | オブジェクトの最大フェレ径。オブジェクトを囲む凸包の対蹠頂点にある任意の 2 つの境界点間の最大距離として測定されます。 |
MaxAngle | イメージの横軸に対する最大フェレ径の方向角。値の範囲は [–180o,180o] (度単位) です。 |
MaxCoordinates | 最大フェレ径の端点座標。 の形式で返されます。 |
MinDiameter | オブジェクトの最小フェレ径。オブジェクトを囲む凸包の対蹠頂点にある任意の 2 つの境界点間の最小距離として測定されます。 |
MinAngle | イメージの横軸に対する最小フェレ径の方向角。値の範囲は [–180o,180o] (度単位) です。 |
MinCoordinates | 最小フェレ径の端点座標。 の形式で返されます。 |
LM
— 連続領域のラベル行列
非負の整数の行列
連続領域のラベル行列。非負の整数の行列として指定します。0 とラベル付けされたピクセルは背景です。1 とラベル付けされたピクセルは 1 番目のオブジェクトを構成し、2 とラベル付けされたピクセルは 2 番目のオブジェクトを構成する、というように、次々にオブジェクトを構成します。out
の k 番目の行エントリのフェレ プロパティは、値 k を持つ LM
内の k 番目の領域 (オブジェクト) に対応します。LM
で表すオブジェクトの数は、LM
の最大値に等しくなります。
メモ
bwferet
への入力がラベル行列である場合、出力ラベル行列 LM
はこの入力ラベル行列と同じになります。
データ型: uint8
アルゴリズム
オブジェクトのフェレ プロパティは、オブジェクトを囲む凸包の対蹠頂点にある境界点を使用して測定されます。
最大 (または最小) フェレ径の端点座標 が与えられると、最大 (または最小) フェレ角は として測定されます。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2019a で導入R2022b: スレッドベース環境のサポート
bwferet
は、スレッドベースの環境をサポートするようになりました。
参考
bwconncomp
| bwlabel
| bwlabeln
| labelmatrix
| regionprops
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)