Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

regionprops

イメージ領域のプロパティの計測

説明

関数 regionprops は、イメージ内の各オブジェクト (連結要素) のプロパティ (面積、重心、境界ボックスなど) を測定します。regionprops連続領域と不連続領域の両方をサポートします。

regionprops は、2 次元イメージには 8 連結近傍を、それより高次元のイメージには最大連結を使用して、バイナリ イメージ内の固有オブジェクトを検出します。詳細については、ピクセルの連結性を参照してください。その他の種類の連結性を使用してオブジェクトを検出するには、代わりに bwconncomp を使用して連結要素を作成し、次に CC 引数を使用してその結果を regionprops に渡します。

メモ

3-D ボリューム イメージ内のオブジェクトのプロパティを測定するには、代わりに regionprops3 を使用することを検討してください。regionprops は 3-D イメージを受け入れることができますが、regionprops3 の方が 3-D イメージの多くの統計値をサポートしています。

関数 regionprops を呼び出す際は、properties 引数を省略できます。この場合、関数は "Area""Centroid"、および "BoundingBox" の測定値を返します。

stats = regionprops(BW,properties) は、バイナリ イメージ BW 内の各オブジェクトのプロパティを測定します。

stats = regionprops(CC,properties) は、bwconncomp によって返される構造体である CC 内の各連結要素のプロパティを測定します。

stats = regionprops(L,properties) は、ラベル イメージ L にある各ラベル付き領域のプロパティを測定します。

stats = regionprops(regions,I,properties) は、グレースケール イメージ I にある各ラベル付き領域のピクセル値プロパティを測定します。最初の入力引数 regions は、BWCC、または L 引数に対して有効な値でなければなりません。

stats = regionprops(outputFormat,___) は、outputFormat 引数を使用して、返される測定値の形式を構造体の配列またはテーブルとして指定します。

すべて折りたたむ

バイナリ イメージをワークスペースに読み取ります。

BW = imread('text.png');

regionprops を使用してイメージ内の連結要素の重心を計算します。関数 regionprops は重心を構造体配列で返します。

s = regionprops(BW,'centroid');

重心の x 座標と y 座標を 2 列の行列に格納します。

centroids = cat(1,s.Centroid);

重心の位置を重ね合わせたバイナリ イメージを表示します。

imshow(BW)
hold on
plot(centroids(:,1),centroids(:,2),'b*')
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line. One or more of the lines displays its values using only markers

イメージ内の円形オブジェクトの中心と半径を推定し、この情報を使用して円をイメージ上にプロットします。この例では、regionprops は測定した領域プロパティを table で返します。

イメージをワークスペースに読み取ります。

a = imread("circlesBrightDark.png");

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

bw = a < 50;
imshow(bw)
title("Image with Circles")

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

イメージ内の領域のプロパティを計算し、データをテーブルで返します。

stats = regionprops("table",bw,"Centroid", ...
    "MajorAxisLength","MinorAxisLength")
stats=3×3 table
        Centroid        MajorAxisLength    MinorAxisLength
    ________________    _______________    _______________

       300       120        79.517             79.517     
    330.29    369.92        109.49              108.6     
       450       240        99.465             99.465     

円の中心と半径を取得します。

centers = stats.Centroid;
diameters = mean([stats.MajorAxisLength stats.MinorAxisLength],2);
radii = diameters/2;

円をプロットします。

hold on
viscircles(centers,radii)
ans = 
  Group with properties:

    Children: [2x1 Line]
     Visible: on
     HitTest: on

  Use GET to show all properties

hold off

Figure contains an axes object. The axes object with title Image with Circles contains 3 objects of type line, image.

入力引数

すべて折りたたむ

バイナリ イメージ。任意の次元の logical 配列として指定します。

regionprops は、各要素の top-left 極値を基準に、バイナリ イメージに含まれるオブジェクトを左から右に並べ替えます。複数のオブジェクトの水平位置が同じ場合、関数はそれらのオブジェクトを上から下に並べ替えた後、より高い次元に沿って再度並べ替えます。regionprops は、並べ替え後のオブジェクトと同じ順序で、測定されたプロパティ stats を返します。

データ型: logical

連結要素。bwconncomp によって返される構造体として指定します。

データ型: struct

ラベル イメージ。次のいずれかとして指定します。

  • 任意の次元の数値配列。0 とラベル付けされたピクセルは背景です。1 とラベル付けされたピクセルは 1 番目のオブジェクトを構成し、2 とラベル付けされたピクセルは 2 番目のオブジェクトを構成する、というように、次々にオブジェクトを構成します。regionprops は負の値のピクセルを背景として扱い、整数でない入力ピクセルを丸めます。数値ラベル イメージは、watershedlabelmatrix などのラベル付け関数から取得できます。

  • categorical 配列。各カテゴリが異なる領域に対応します。

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

測定のタイプ。string スカラーもしくは文字ベクトルのコンマ区切りリスト、string スカラーの配列、文字ベクトルの cell 配列、または "all" もしくは "basic" のいずれかとして指定します。

  • "all" を指定すると、regionprops はすべての形状測定値を計算し、グレースケール イメージを指定した場合は、ピクセル値の測定値も計算します。

  • "basic" を指定すると、regionprops"Area""Centroid" および "BoundingBox" の測定値のみを計算します。

以下の表に、形状測定を提供するすべてのプロパティを示します。ピクセル値測定の表に示すプロパティは、グレースケール イメージを指定する場合のみ有効です。

形状測定

プロパティ名説明N 次元サポートGPU サポートコード生成
"Area"

領域内の実際のピクセル数。スカラーとして返されます。この値は、ピクセル パターンの重み付け方法が異なる bwarea によって返される値とわずかに異なる可能性があります。

3-D ボリュームの領域に相当するものを見つけるには、regionprops3"Volume" プロパティを使用します。

ありありあり
"BoundingBox"

領域を含む最小のボックスの位置とサイズ。1 行 (2*Q) 列のベクトルとして返されます。ここで、Q はイメージの次元です。最初の Q 個の要素は、ボックスの最小コーナーの座標です。2 番目の Q 個の要素は、各次元に沿ったボックスのサイズです。たとえば、値が [5.5 8.5 11 14] の 2 次元境界ボックスは、ボックスの左上隅の (x,y) 座標が (5.5, 8.5)、ボックスの水平方向の幅が 11 ピクセル、ボックスの垂直方向の高さが 14 ピクセルであることを示します。

ありありあり
"Centroid"

領域の重心。1 行 Q 列のベクトルとして返されます。ここで、Q はイメージの次元です。Centroid の最初の要素は、重心の水平座標 (または x 座標) です。2 番目の要素は、垂直座標 (または y 座標) です。Centroid の他のすべての要素は、次元の順序になります。

この図は、「discontiguous」領域の重心と境界ボックスを示しています。領域は白いピクセルで構成されます。緑色のボックスは境界ボックス、赤い点は重心です。

Centroid is within the bounding box encompassing a region.

ありありあり
"Circularity"

オブジェクトの丸さ。フィールド Circularity をもつ構造体として返されます。この構造体には、入力イメージにある各オブジェクトの真円度値が含まれます。真円度値は次のように計算されます。

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

最大真円度値は 1 です。入力は、ラベル行列または連続領域を持つバイナリ イメージでなければなりません。イメージに不連続領域が含まれている場合、regionprops は予期しない結果を返します。

2 次元のみなしあり
"ConvexArea"ConvexImage 内のピクセル数。スカラーとして返されます。2 次元のみなしなし
"ConvexHull"領域を含むことができる最小の凸多角形。p 行 2 列の行列として返されます。行列の各行には、多角形の 1 頂点の x 座標と y 座標が含まれています。2 次元のみなしなし
"ConvexImage"凸包内のピクセルがすべて塗りつぶされた状態 (on に設定) の凸包を指定するイメージ。バイナリ イメージとして返されます。イメージは、領域の境界ボックスのサイズです。凸包の境界が通過するピクセルについては、regionpropsClassify Pixels That Are Partially Enclosed by ROIに記載されているアルゴリズムを使用します。2 次元のみなしなし
"Eccentricity"領域と同じ 2 次モーメントを持つ楕円の離心率。スカラーとして返されます。離心率とは、楕円の焦点間の距離と長軸の長さの割合です。この値は 0 ~ 1 になります (0 と 1 は変性した場合です。実際には、離心率が 0 の楕円は円で、離心率が 1 の楕円は線分です)。2 次元のみありあり
"EquivDiameter"領域と同じ面積を持つ円の直径。スカラーとして返されます。sqrt(4*Area/pi) と同様に計算します。2 次元のみありあり
"EulerNumber"領域内のオブジェクトの数からそれらのオブジェクトにある穴の数を差し引いた数。スカラーとして返されます。このプロパティは、2 次元ラベル行列のみでサポートされています。regionprops は 8 連結性を使用して、オイラー数 (オイラー標数とも呼ばれる) を計算します。詳細については、ピクセルの連結性を参照してください。2 次元のみなしあり
"Extent"境界ボックス全体のピクセル数に対する領域内ピクセル数の割合。スカラーとして返されます。境界ボックスの領域で除算された Area として計算されます。2 次元のみありあり
"Extrema"

領域の極値点。8 行 2 列の行列として返されます。行列の各行には、1 点の x 座標と y 座標が含まれています。ベクトルの形式は [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top] です。一部の形状では、複数の極値点で同一の座標をもつことができます。

この図は、2 つの異なる領域の極値を示しています。左側の領域では、各極値点は別々になります。右側の領域の場合、特定の極値点 (top-leftleft-top など) は同一です。

Two differently shaped regions, each with their eight extrema points labeled

2 次元のみありあり
"FilledArea"FilledImage 内の on ピクセル数。スカラーとして返されます。ありなしあり
"FilledImage"

領域の境界ボックスと同じサイズのイメージ。バイナリ配列として返されます。この図に示すように、on ピクセルは、すべての穴が塗りつぶされた領域に対応しています。

Comparison of original region consisting of touching circles with filled region in which holes are filled.

ありなしあり
"Image"領域の境界ボックスと同じサイズのイメージ。バイナリ配列として返されます。on ピクセルは領域に対応しており、他のすべてのピクセルは off です。ありありあり
"MajorAxisLength"領域と同じ正規化された 2 次中心モーメントを持つ楕円の長軸の長さ (ピクセル単位)。スカラーとして返されます。2 次元のみありあり
"MaxFeretProperties"

最大フェレ径、その相対角度、および座標値を含むフェレ プロパティ。以下のフィールドを含む構造体として返されます。

フィールド説明
MaxFeretDiameter最大フェレ径。オブジェクトを囲む凸包の対蹠頂点にある任意の 2 つの境界点間の最大距離として測定されます。
MaxFeretAngleイメージの横軸に対する最大フェレ径の角度。
MaxFeretCoordinates最大フェレ径の端点座標。

入力は、バイナリ イメージ、連結要素、またはラベル行列です。

2 次元のみなしなし
"MinFeretProperties"

最小フェレ径、その相対角度、および座標値を含むフェレ プロパティ。以下のフィールドを含む構造体として返されます。

フィールド説明
MinFeretDiameter最小フェレ径。オブジェクトを囲む凸包の対蹠頂点にある任意の 2 つの境界点間の最小距離として測定されます。
MinFeretAngleイメージの横軸に対する最小フェレ径の角度。
MinFeretCoordinates最小フェレ径の端点座標。

入力は、バイナリ イメージ、連結要素、またはラベル行列です。

2 次元のみなしなし
"MinorAxisLength"領域と同じ正規化された 2 次中心モーメントを持つ楕円の短軸の長さ (ピクセル単位)。スカラーとして返されます。2 次元のみありあり
"Orientation"

x 軸と、領域と同じ 2 次モーメントを持つ楕円の長軸との角度。スカラーとして返されます。この値の単位は度で、範囲は -90 ~ 90 度になります。この図は、楕円の軸と方向を示しています。図の左側は、イメージ領域とその対応する楕円を示しています。右側は同じ楕円を示し、青の実線で軸を表しています。赤い点は焦点で、方向は水平の点線と長軸の角度になります。

Axes and orientation of ellipse surrounding an image region

2 次元のみありあり
"Perimeter"

領域の境界の周囲長。スカラーとして返されます。regionprops は、領域の境界の周りで隣接するピクセルの組の距離を計算することによって、周囲を計算します。イメージに不連続領域が含まれている場合、regionprops は予期しない結果を返します。次の図は、このオブジェクトの周囲の計算に含まれるピクセルを示しています。

Perimeter pixels of a region

2 次元のみなしあり
"PixelIdxList"領域内のピクセルの線形インデックス。p 要素ベクトルとして返されます。 ありありあり
"PixelList"領域内のピクセルの位置。p 行 Q 列の行列として返されます。行列の各行は [x y z ...] の形式で、領域内の 1 ピクセルの座標を指定します。ありありあり
"Solidity"

領域内にもある凸包のピクセルの比率。スカラーとして返されます。固体度は Area/ConvexArea で計算されます。

regionprops は 2 次元イメージの固体度のみを計算できます。3-D イメージの固体度を計算するには、regionprops3 を使用します。

2 次元のみなしなし
"SubarrayIdx"オブジェクト境界ボックスの内側にある L の要素。L(idx{:}) が要素を抽出するようなインデックスを含んでいる cell 配列として返されます。ありありなし

以下の表に示すピクセル値測定プロパティは、グレースケール イメージ I を指定する場合のみ有効です。

ピクセル値測定

プロパティ名 説明N 次元サポートGPU サポートコード生成
"MaxIntensity"領域内で最大の強度を持つピクセルの値。スカラーとして返されます。ありありあり
"MeanIntensity"領域内のすべての強度値の平均。スカラーとして返されます。ありありあり
"MinIntensity"領域内で最小の強度を持つピクセルの値。スカラーとして返されます。ありありあり
"PixelValues"領域内のピクセル数。p 行 1 列のベクトルで返されます。ここで、p は領域内のピクセル数です。ベクトルの各要素には、領域内のピクセルの値が含まれています。ありありあり
"WeightedCentroid"位置と強度値に基づく領域の中心。座標の p 行 Q 列のベクトルとして返されます。WeightedCentroid の最初の要素は、重み付き重心の水平座標 (または x 座標) です。2 番目の要素は、垂直座標 (または y 座標) です。WeightedCentroid の他のすべての要素は、次元の順序になります。 ありありあり

データ型: char | string | cell

測定するイメージ。グレースケール イメージとして指定します。イメージのサイズはバイナリ イメージ BW、連結要素の構造体 CC またはラベル イメージ L のサイズと一致しなければなりません。

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

測定値 stats の出力形式。次のいずれかの値として指定します。

説明
"struct"BWCC.NumObjects または max(L(:)) のオブジェクトの数と長さが等しい構造体の配列を返します。構造体配列のフィールドは、properties で指定されているように、各領域のさまざまなプロパティを示します。
"table"

BWCC.NumObjects または max(L(:)) のオブジェクトの数と高さ (行数) が等しい table を返します。変数 (列) は、properties で指定された、各領域のさまざまなプロパティを示します。

データ型: char | string

出力引数

すべて折りたたむ

測定値。構造体の配列またはテーブルとして返されます。配列の構造体の数またはテーブルの行数は、BWCC.NumObjects または max(L(:)) のオブジェクトの数と等しくなります。各構造体のフィールドまたは各行の変数は、properties で指定された、各領域で計算されるプロパティを示します。入力イメージがカテゴリカル ラベル イメージ L の場合、stats は追加のフィールドまたは変数と "LabelName" プロパティを含みます。

stats に含まれる測定値の順序は、バイナリ イメージ BW に含まれる並べ替え後のオブジェクトと同じになるか、CC または L で指定された順序付きオブジェクトと同じになります。

詳細

すべて折りたたむ

連続領域と不連続領域

連続領域は、"オブジェクト""連結要素"、または"ブロブ" とも呼ばれます。連続領域を含んでいるラベル イメージ L は、次のように表示されることがあります。

1 1 0 2 2 0 3 3
1 1 0 2 2 0 3 3

1 に等しい L の要素は、最初の連続領域または連結要素に属します。2 に等しい L の要素は、2 番目の連結要素に属します。以下同様です。

不連続領域は、複数の連結要素を含んでいる可能性のある領域です。不連続領域を含んでいるラベル イメージは、次のように表示されることがあります。

1 1 0 1 1 0 2 2
1 1 0 1 1 0 2 2
1 に等しい L の要素は、2 つの連結要素を含んでいる最初の不連続領域に属します。2 に等しい L の要素は、1 つの連結要素である 2 番目の領域に属します。

ヒント

  • 関数 ismember は、特定の条件を満たすオブジェクトまたは領域のみを含んでいるバイナリ イメージの作成に役立ちます。たとえば、次のコマンドでは、面積が 80 より大きく、かつ離心率が 0.8 未満の領域のみを含んでいるバイナリ イメージが作成されます。

    cc = bwconncomp(BW); 
    stats = regionprops(cc,"Area","Eccentricity"); 
    idx = find([stats.Area] > 80 & [stats.Eccentricity] < 0.8); 
    BW2 = ismember(labelmatrix(cc),idx);  
    
  • regionprops は、関連する測定の計算には中間結果を利用します。したがって、最も高速なのは、regionprops を 1 回呼び出すだけで目的の計測をすべて計算することです。

  • ほとんどの測定の計算には、短い時間しかかかりません。ただし、以下の測定には L の領域数によっては長い時間がかかる場合もあります。

    • "ConvexHull"

    • "ConvexImage"

    • "ConvexArea"

    • "FilledImage"

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する