Преобразуйте многоугольники Image Labeler в помеченное блокированное изображение для Семантической Сегментации

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

Можно использовать приложение Image Labeler в Computer Vision Toolbox, чтобы пометить изображения, которые являются слишком большими, чтобы поместиться в память и изображения мультиразрешения. Для получения дополнительной информации смотрите, Маркируют Large Images в Image Labeler (Computer Vision Toolbox). Приложение Image Labeler не поддерживает пиксельную маркировку блокированных изображений. Можно только создать метки с помощью форм ROI, таких как многоугольники, прямоугольники и линии. В этом примере показано, как можно использовать polyToBlockedImage функционируйте, чтобы преобразовать ROI многоугольника в помеченное пикселем блокированное изображение для рабочих процессов семантической сегментации.

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

bim = blockedImage("tumor_091R.tif");

Загрузите достоверные данные метки

Этот пример загружает предсохраненный groundTruth объект, gTruth.mat, созданный путем маркировки блокированных данных изображения в bim использование приложения Image Labeler. groundTruth объектно-ориентированная память метки многоугольника, отображенные на рисунке. Нормальный ROI ткани обрисован в общих чертах в зеленом, и ROI ткани опухоли обрисованы в общих чертах в красном. Можно экспортировать собственные помеченные достоверные данные из приложения Image Labeler путем выбора Export и затем К Рабочей области. Назовите переменную gTruth.

load gTruth.mat

Извлеките положение ROI и маркируйте Data

LabelData свойство gTruth объектно-ориентированная память данные о метке многоугольника как таблица с одним столбцом для каждой метки.

labelData = gTruth.LabelData
labelData=1×2 table
       normal         tumor   
    ____________    __________

    {4×2 double}    {4×1 cell}

Используйте функцию помощника gTruthtoXY, заданный в конце этого примера, чтобы преобразовать xy-данные о положении и метки сохранены в labelData в формат, принятый как вход к polyToBlockedImage функция. gTruthtoXY присваивает числовую метку 1 к нормальному ROI ткани и метке 2 к ROI ткани опухоли.

[roiPositions,roiLabels] = gTruthtoXY(labelData)
roiPositions=5×1 cell array
    { 4×2 double}
    {14×2 double}
    {16×2 double}
    {20×2 double}
    {12×2 double}

roiLabels = 5×1

     1
     2
     2
     2
     2

Создайте помеченное блокированное изображение

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

maskLevel = 2;

Задайте размер изображения для нового блокированного изображения, чтобы совпадать с тем из оригинального изображения, bim, на уровне нужного разрешения.

imageSize = bim.Size(maskLevel,1:2);

Создайте помеченное блокированное изображение. Обеспечьте пространственную ссылку исходного блокированного изображения, bim, на уровне нужного разрешения. По умолчанию, polyToBlockedImage пиксели присвоений, которые не падают ни в каком ROI числовая метка 0.

bLabeled = polyToBlockedImage(roiPositions,roiLabels,imageSize,BlockSize=bim.BlockSize(maskLevel,1:2), ...
    WorldStart=bim.WorldStart(maskLevel,1:2),WorldEnd=bim.WorldEnd(maskLevel,1:2)); 

Отобразите помеченное блокированное изображение, наложенное на оригинальном изображении. Области, соответствующие опухоли и нормальным многоугольникам ткани groundTruth объект отображают красным и зеленым цветом, соответственно. Чтобы отличить нормальную ткань за пределами ROI происхождения с помощью бинарной маски, смотрите, Создают, Пометил Blocked Image from ROIs и Masks.

hbim = bigimageshow(bim);
showlabels(hbim,bLabeled,Colormap=[0 0 1; 0 1 0; 1 0 0])

Поддерживание функции

gTruthtoXY преобразует координаты ROI многоугольника и данные о метке, хранимые в таблице labelData в массивы ячеек, подходящие для входа в polyToBlockedImage функция.

function [roiPositions,roiLabels] = gTruthtoXY(labelData)

totalROIs = numel(labelData{1,1}) + numel(labelData{1,2}{:});
roiPositions = cell(totalROIs,1);
roiLabels = zeros(totalROIs,1);

% Obtain label names from the labelData table
labelName = labelData.Properties.VariableNames;

roiIdx = 1;  % Initialize ROI index

% Loop through all labels
% Assign a numeric label of 2 to tumor tissue; 1 for normal tissue
for j = 1:numel(labelData)

    % All ROIs for a given label
    data = labelData{1,j}{:};

    if(isequal(labelName{j},"tumor"))
        for k = 1:numel(data)
            roiLabels(roiIdx) = 2;
            roiPositions{roiIdx} = data{k};
            roiIdx = roiIdx + 1;
        end
    else
        % For other ROI labels
        roiLabels(roiIdx) = 1;
        roiPositions{roiIdx} = data;
        roiIdx = roiIdx + 1;
    end


end

end

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

| | (Computer Vision Toolbox)

Похожие темы