exponenta event banner

poly2label

Создание матрицы меток из набора ROI

    Описание

    пример

    L = poly2label(ROIpositions,ROILabelIDs,imagesize) создает числовую матрицу меток L из регионов интересов (ROI), определенных в ROIpositions. ROILabelIDs указывает числовой идентификатор для каждого ROI в ROIpositions. imagesize задает размер матрицы выходных меток.

    L = poly2label(ROIpositions,ROILabelIDs,R) создает числовую матрицу меток, где пространственный объект ссылки R определяет систему координат, используемую позициями окупаемости инвестиций в ROIpositions. Функция предполагает, что позиции ROI находятся в мировых пределах, определенных R. ImageSize имущество R задает размер матрицы меток L.

    Примеры

    свернуть все

    Чтение изображения в рабочую область и его отображение.

     figure
     I = imread('baby.jpg');
     imshow(I)

    Инициализируйте массив ячеек позиции ROI и переменные размера изображения. Если вы проходите poly2label значение размера, содержащее три измерения, использует только первые два, m-by-n.

    numPolygon = 3;
    roiPositions = cell(numPolygon,1);
    imSize = size(I);

    Укажите координаты трех ROI в roiPositions массив ячеек. В этом примере первая ROI представляет собой треугольник, требующий координат для трёх углов. Два других ROI являются четырехугольниками, требующими координат для четырех углов.

    roiPositions{1} = [500 500; 250 1300; 1000 500];
    roiPositions{2} = [1500 1100; 1500 1400; 2000 1400; 2000 700];
    roiPositions{3} = [80 2600; 480 2700; 470 3000; 100 3000];

    Создайте массив для идентификаторов меток того же размера, что и roiPositions массив ячеек.

    roilabelID = zeros(numPolygon,1,'uint8');

    Укажите значения идентификаторов меток, которые соответствуют порядку, в котором указаны значения ROI в roiPositions. Первый ROI представляет собой треугольник, поэтому дайте ему метку 1. Следующие два ROI оба являются квадрилатералями, поэтому дайте им метку 2.

    roilabelID(1) = 1;
    roilabelID(2) = 2;
    roilabelID(3) = 2;

    Нарисуйте три значения ROI на рисунке.

    for id = 1:numPolygon
        drawpolygon('Position',roiPositions{id});
    end

    Figure contains an axes. The axes contains 4 objects of type image, images.roi.polygon.

    Создайте матрицу меток на основе значений ROI. Матрица меток имеет тот же размер m-by-n, что и исходное изображение.

    L = poly2label(roiPositions,roilabelID,imSize);

    Отображение матрицы меток, наложенной на исходное изображение.

    figure;
    B = labeloverlay(I,L);
    imshow(B);

    Figure contains an axes. The axes contains an object of type image.

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

    свернуть все

    Векторы координат, заданные как массив 1-by-P ячеек числовых векторов координат, где P - общее число ROI. Каждый элемент массива ячеек является координатным вектором s-by-2 вида [x1 y1; …; xs ys], где s - общее число вершин для этой окупаемости инвестиций. Каждая пара x, y определяет вершину ROI. Если форма ROI еще не закрыта, poly2label функция автоматически закрывает фигуру. Можно указать любое количество значений ROI.

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

    Метки для каждого ROI, заданные как числовой вектор той же длины, что и ROIpositions аргумент. Каждая метка в векторе соответствует ROI в связанной позиции в ROIpositions массив ячеек.

    poly2label присваивает значение 0 для всех фоновых пикселов в выходном изображении.

    Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

    Размер выходной матрицы меток, определяемый как дву- или 3-элементный числовой вектор. Если задан 3-элементный вектор, poly2label функция использует только первые два измерения, m-by-n.

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

    Пространственная ссылочная информация, указанная как imref2d объект.

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

    свернуть все

    Матрица меток, возвращаемая как матрица m-на-n неотрицательных значений, того же класса, что и ROIlabelIDs. Маркированные пикселы 0 являются фоном.

    Совет

    • poly2label устанавливает пикселы внутри ROI в значение метки. Для получения информации о том, как poly2label обрабатывает пикселы, которые только частично находятся внутри ROI, см. poly2mask функция.

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

    Представлен в R2020b