将感兴趣区域(ROI)多边形转换为区域掩模
若要指定包含给定矩形像素集的多边形,请使多边形的边缘位于边界像素的外边缘,而不是像素的中心。
例如,要在第4列到第10列和第4行到第10行包含像素,你可以像这样指定多边形顶点:
X = [4 10 10 4 4];Y = [4 4 10 10 4];掩码= 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];掩码= 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
使用如下算法:
将每个像素划分为5 × 5的亚像素网格。
图中用5 × 5的亚像素网格显示了包含ROI顶点的像素。
调整顶点的位置。
poly2mask
将多边形的每个顶点移动到亚像素网格的最近交点。请注意poly2mask
轮x和y坐标到最近的亚像素网格角。这将创建第二个修改过的多边形。图中用红色的“X”表示修改后的顶点。
绘制调整后的顶点之间的路径。
poly2mask
沿着亚像素网格的边缘,形成从每个调整过的顶点到下一个顶点的路径。下图显示了这个修改过的多边形的一部分,用粗的深色线条表示。
确定哪些边框像素位于多边形内。
poly2mask
使用以下规则来确定哪些边界像素位于多边形内:如果像素的中心亚像素位于由调整过的顶点之间的路径定义的边界内,则该像素位于区域内。
下图中,ROI边界上像素的中心子像素被阴影为深灰色。多边形内的像素被着色为浅灰色。注意,包含顶点的像素不是ROI的一部分,因为它的中心像素不在修改后的多边形内。