Main Content

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

poly2mask

関心領域 (ROI) の多角形を領域マスクに変換

説明

BW = poly2mask(xi,yi,m,n) はバイナリの関心領域 (ROI) マスク BWmn 列のサイズで、頂点が xiyi 座標である ROI 多角形から計算します。poly2mask は多角形が閉じられていない場合、自動的に閉じます。

関数 poly2mask は、多角形の内側にあるピクセルを 1 に設定し、多角形の外側にあるピクセルを 0 に設定します。ROI 境界上のピクセルの分類の詳細については、Classify Pixels That Are Partially Enclosed by ROIを参照してください。

すべて折りたたむ

多角形の x 座標と y 座標を指定します。

x = [63 186 54 190 63];
y = [60 60 209 204 60];

イメージのサイズを指定してマスクを作成します。

bw = poly2mask(x,y,256,256);

マスクを表示し、多角形の周りにラインを描画します。

imshow(bw)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line.

x 座標と y 座標に 2 組のランダムな点を定義します。

x = 256*rand(1,4);
y = 256*rand(1,4);
x(end+1) = x(1);
y(end+1) = y(1);

マスクを作成します。

bw = poly2mask(x,y,256,256);

マスクを表示し、多角形の周りにラインを描画します。

imshow(bw)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line.

入力引数

すべて折りたたむ

多角形の頂点の x 座標。数値ベクトルとして指定します。xi および yi の長さは一致しなければなりません。

データ型: double

多角形の頂点の y 座標。数値ベクトルとして指定します。xi および yi の長さは一致しなければなりません。

データ型: double

マスク内の行数。非負の整数として指定します。

データ型: double

マスク内の列数。非負の整数として指定します。

データ型: double

出力引数

すべて折りたたむ

バイナリ イメージ。mn 列の logical 行列として返されます。

データ型: logical

ヒント

  • ピクセルの四角形の集合を含む多角形を指定するには、ピクセルの中心ではなく境界ピクセルの外側エッジに、多角形のエッジを合わせます。

    たとえば、4 列目から 10 列目、4 行目から 10 行目にあるピクセルが含まれるようにするには、次のようにして多角形の頂点を指定します。

    x = [4 10 10 4 4];
    y = [4 4 10 10 4];
    mask = poly2mask(x,y,12,12)
    mask =
    
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0

    この例では、多角形は境界ピクセルの中心を通過し、目的の境界ピクセルのうちいくつかのみが多角形の内側にある 4 行 4 列目のピクセルは多角形の内側にない) と判定される結果となりました。これらの要素が多角形に含まれるようにするには、次の例のように、分数値を使用して 4 番目の行 (3.5) と 10 番目の行 (10.5) の外側エッジと、4 番目の列 (3.5) と 10 番目の列 (10.5) の外側エッジを頂点として指定します。

    x = [3.5 10.5 10.5 3.5 3.5];
    y = [3.5 3.5 10.5 10.5 3.5];
    mask = poly2mask(x,y,12,12)
    mask =
    
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する