文档

poly2mask

转换感兴趣区域(ROI)多边形到区域掩码

语法

BW = poly2mask(xi,yi,m,n)

描述

例子

BW= poly2mask (西n计算二值感兴趣区域(ROI)掩码;BW,大小——- - - - - -n,从具有顶点坐标的ROI多边形西poly2mask如果多边形尚未关闭,则自动关闭该多边形。

poly2mask函数将多边形内的像素设置为1并将多边形外的像素设置为0.有关对部分被ROI包围的像素进行分类的详细信息,请参见算法

例子

全部折叠

指定多边形的x坐标和y坐标。

X = [63 186 54 190 63];Y = [60 60 209 204 60];

创建指定图像大小的掩码。

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

显示蒙版,在多边形周围画一条线。

imshow (bw)情节(x, y,“b”“线宽”, 2)

为x坐标和y坐标定义两组随机点。

*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)情节(x, y,“b”“线宽”, 2)

输入参数

全部折叠

x——或者y-多边形顶点的坐标,指定为数值向量。的长度西必须匹配。

数据类型:

掩码中的行数,指定为正整数。

数据类型:

掩码中的列数,指定为正整数。

数据类型:

输出参数

全部折叠

二进制图像,作为一个返回——- - - - - -n逻辑矩阵。

数据类型:逻辑

提示

  • 若要指定包含给定矩形像素集的多边形,请使多边形的边缘位于边界像素的外部边缘,而不是像素的中心。

    例如,要在第4到10列和第4到10行中包含像素,您可以这样指定多边形顶点:

    X = [4 10 10 4 4];Y = [4 4 10 10 4];Mask = poly2mask(x,y,12,12)
    掩码= 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)
    掩码= 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

算法

在创建感兴趣区域(ROI)掩码时,poly2mask必须确定哪些像素包含在该区域中。当区域边缘的像素仅部分被边界线覆盖时,这种确定可能会很困难。下图展示了一个感兴趣的三角形区域,在特写中检查了ROI的一个顶点。该图显示了像素是如何被感兴趣区域的边界部分覆盖的。

ROI边缘上的像素仅部分被边界覆盖

要确定哪些像素在该区域中,poly2mask使用以下算法:

  1. 将每个像素划分为5 × 5的亚像素网格。

    该图显示了包含ROI顶点的像素,前面显示了这个5 × 5亚像素网格。

  2. 调整顶点的位置。

    poly2mask将多边形的每个顶点移动到亚像素网格的最近交叉点。请注意poly2maskxy坐标到最近的亚像素网格角。这将创建第二个修改后的多边形。该图以红色“X”表示修改后的顶点。

  3. 在调整后的顶点之间画一条路径。

    poly2mask沿着亚像素网格的边缘,形成从每个调整顶点到下一个顶点的路径。该图通过粗黑线显示了修改后多边形的一部分。

  4. 确定哪些边界像素位于多边形内部。

    poly2mask使用以下规则确定哪些边界像素在多边形内:如果像素的中心子像素在由调整顶点之间的路径定义的边界内,则像素在区域内。

    在下面的图中,ROI边界上像素的中心子像素被阴影为深灰色。多边形内的像素为浅灰色阴影。请注意,包含顶点的像素不是ROI的一部分,因为它的中心像素不在修改后的多边形内。

另请参阅

|

R2006a之前引入

这个话题有帮助吗?