Преобразуйте многоугольник видимой области (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, потому что его центральный пиксель не в модифицированном многоугольнике.