Main Content

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

poly2label

ROI のセットからラベル行列を作成

R2020b 以降

説明

L = poly2label(roiPositions,roiLabelIDs,imageSize) は、roiPositions で定義された関心領域 (ROI) から数値ラベル行列 L を作成します。roiLabelIDsroiPositions に含まれる各 ROI の数値 ID を指定します。imageSize は出力ラベル行列のサイズを指定します。

L = poly2label(roiPositions,roiLabelIDs,R) は数値ラベル行列を作成します。ここで、空間参照オブジェクト RroiPositions の ROI 位置で使用する座標系を指定します。この関数は、ROI 位置が R で定義されたワールド座標範囲内にあると想定します。RImageSize プロパティは、ラベル行列 L のサイズを指定します。

すべて折りたたむ

イメージをワークスペースに読み取って表示します。

 figure
 I = imread('baby.jpg');
 imshow(I)

ROI 位置の cell 配列とイメージ サイズの変数を初期化します。3 つの次元を含むサイズの値を poly2label に渡した場合、最初の 2 つ (mn 列) のみが使用されます。

numPolygon = 3;
roiPositions = cell(numPolygon,1);
imSize = size(I);

roiPositions cell 配列で 3 つの ROI の座標を指定します。この例では、1 番目の ROI は三角形であり、3 つの頂点の座標が必要です。他の 2 つの ROI は四辺形であり、4 つの頂点の座標が必要です。

roiPositions{1} = [500 500; 250 1300; 1000 500];
roiPositions{2} = [1500 1100; 1500 1400; 2000 1400; 2000 700];
roiPositions{3} = [80 2600; 480 2700; 470 3000; 100 3000];

ラベル ID 用に roiPositions cell 配列と同じサイズの配列を作成します。

roilabelID = zeros(numPolygon,1,'uint8');

roiPositions にリストした ROI の順序に合わせてラベル ID の値を指定します。1 番目の ROI は三角形なので、ラベル 1 とします。後の 2 つの ROI はどちらも四辺形なので、ラベル 2 とします。

roilabelID(1) = 1;
roilabelID(2) = 2;
roilabelID(3) = 2;

Figure 上に 3 つの ROI を描画します。

for id = 1:numPolygon
    drawpolygon('Position',roiPositions{id});
end

Figure contains an axes object. The axes object contains 4 objects of type image, images.roi.polygon.

ROI からラベル行列を作成します。ラベル行列は元のイメージと同じサイズ (mn 列) です。

L = poly2label(roiPositions,roilabelID,imSize);

ラベル行列を元のイメージに重ね合わせて表示します。

figure;
B = labeloverlay(I,L);
imshow(B);

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

座標ベクトル。1 行 P 列の数値ベクトルの cell 配列として指定します。P は ROI の合計数です。各 cell 配列要素は [x1 y1; …; xs ys] 形式の s 行 2 列の配列です。s はその ROI の頂点の合計数です。x、y の各ペアで ROI の頂点を定義します。ROI の形状がまだ閉じていない場合、関数 poly2label は形状を自動的に閉じます。ROI はいくつでも指定できます。

データ型: double | cell

各 ROI のラベル。引数 roiPositions と同じ長さの数値ベクトルとして指定します。ベクトル内の各ラベルは、roiPositions cell 配列内の関連付けられた位置にある ROI に対応します。

poly2label は、出力イメージ内のすべての背景ピクセルに値 0 を割り当てます。

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

出力ラベル行列のサイズ。2 要素または 3 要素の数値ベクトルとして指定します。3 要素ベクトルを指定した場合、関数 poly2label は最初の 2 つの次元 (m 行 n 列) のみを使用します。

データ型: double

空間参照情報。imref2d オブジェクトとして指定します。

出力引数

すべて折りたたむ

ラベル行列。m 行 n 列の非負の値の (roiLabelIDs と同じデータ型の) 行列として返されます。0 とラベル付けされたピクセルは背景です。

ヒント

  • 関数 poly2label は ROI 内にあるピクセルをラベル値に設定します。ROI 境界上のピクセルの分類の詳細については、Classify Pixels That Are Partially Enclosed by ROIを参照してください。

  • 複数の ROI の位置が重なり合っている場合、roiPositions cell 配列内で最も低いインデックス番号をもつ ROI ラベルで他の ROI を上書きします。

バージョン履歴

R2020b で導入