poly2mask

Преобразуйте многоугольник видимой области (ROI) в маску области

Синтаксис

Описание

пример

BW = poly2mask(xi,yi,m,n) вычисляет бинарную маску видимой области (ROI), BW, из размера m- n, от многоугольника ROI с вершинами в координатах xi и yi. Если многоугольник уже не закрывается, то 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)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes. The axes contains 2 objects of type image, line.

Задайте два набора случайных точек для x-и y-координат.

x = 256*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)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes. The axes contains 2 objects of type image, line.

Входные параметры

свернуть все

x- вершин многоугольника в виде числового вектора. Длина xi и yi должен соответствовать.

Типы данных: double

y- вершин многоугольника в виде числового вектора. Длина xi и yi должен соответствовать.

Типы данных: double

Количество строк в маске в виде положительного целого числа.

Типы данных: double

Количество столбцов в маске в виде положительного целого числа.

Типы данных: double

Выходные аргументы

свернуть все

Бинарное изображение, возвращенное как m- n логическая матрица.

Типы данных: логический

Советы

  • Чтобы задать многоугольник, который включает данный прямоугольный набор пикселей, заставьте ребра многоугольника простереться вдоль внешних ребер пикселей ограничения вместо центра пикселей.

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

  1. Разделите каждый пиксель на субпиксельную сетку 5 на 5.

    Рисунок показывает пиксель, который содержит вершину ROI, показанного ранее с этой субпиксельной сеткой 5 на 5.

  2. Отрегулируйте положение вершин.

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

  3. Чертите путь между настроенными вершинами.

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

  4. Определите, который краевые элементы изображения в многоугольнике.

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

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

Смотрите также

|

Представлено до R2006a