Преобразуйте многоугольник видимой области (ROI) в маску области
вычисляет бинарную маску видимой области (ROI), BW = poly2mask(xi,yi,m,n)BW, из размера m- n, от многоугольника ROI с вершинами в координатах xi и yi. poly2mask закрывает многоугольник автоматически, если многоугольник уже не закрывается.
poly2mask функционируйте устанавливает пиксели, которые являются в многоугольнике к 1 и пиксели наборов вне многоугольника к 0. Для получения дополнительной информации о классификации пикселей, которые частично заключены ROI, см. Алгоритм.
Чтобы задать многоугольник, который включает данный прямоугольный набор пикселей, заставьте ребра многоугольника простереться вдоль внешних ребер пикселей ограничения вместо центра пикселей.
Например, чтобы включать пиксели в столбцы 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При создании маски видимой области (ROI), poly2mask должен определить, какие пиксели включены в область. Это определение может затруднить, когда пиксели на ребре области только частично покрыты границей. Следующая фигура иллюстрирует треугольную необходимую область, исследуя крупным планом одну из вершин ROI. Рисунок показывает, как пиксели могут быть частично покрыты границей необходимой области.
Пиксели на ребре ROI только частично покрыты границей

Определить, какие пиксели находятся в области, poly2mask использование следующий алгоритм:
Разделите каждый пиксель на субпиксельную сетку 5 на 5.
Рисунок показывает пиксель, который содержит вершину ROI, показанного ранее с этой субпиксельной сеткой 5 на 5.

Отрегулируйте положение вершин.
poly2mask перемещения каждая вершина многоугольника к самому близкому пересечению субпиксельной сетки. Отметьте как poly2mask X и Y раундов координируют к самому близкому углу субпиксельной сетки. Это создает второй, модифицированный многоугольник. Рисунок показывает модифицированную вершину с красным "X".

Чертите путь между настроенными вершинами.
poly2mask формирует путь от каждой настроенной вершины до следующего, после ребер субпиксельной сетки. Рисунок показывает фрагмент этого модифицированного многоугольника толстыми темными линиями.

Определите, который краевые элементы изображения в многоугольнике.
poly2mask использует следующее правило, чтобы определить, который краевые элементы изображения в многоугольнике: если центральный субпиксель пикселя в контурах, заданных путем между настроенными вершинами, то пиксель в области.
В следующем рисунке центральные субпиксели пикселей на границе ROI заштрихованы темно-серый цвет. Пиксели в многоугольнике заштрихованы более светло-серый. Обратите внимание на то, что пиксель, содержащий вершину, не является частью ROI, потому что его центральный пиксель не в модифицированном многоугольнике.
