Main Content

poly2mask

将感兴趣的区域 (ROI) 多边形转换为区域掩膜

说明

示例

BW = poly2mask(xi,yi,m,n) 根据顶点位于坐标 xiyi 处的 ROI 多边形,计算大小为 m×n 的感兴趣区域 (ROI) 二值掩膜 BW。如果该多边形尚未闭合,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 坐标。

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 坐标,指定为数值向量。xiyi 的长度必须匹配。

数据类型: double

多边形顶点的 y 坐标,指定为数值向量。xiyi 的长度必须匹配。

数据类型: double

掩膜的行数,指定为非负整数。

数据类型: double

掩膜的列数,指定为非负整数。

数据类型: double

输出参数

全部折叠

二值图像,以 m×n 逻辑矩阵形式返回。

数据类型: 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 之前推出

全部展开