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