В этом примере показано, как преобразовать метки многоугольника, сохраненные в 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
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
polyToBlockedImage
| blockedImage
| Image Labeler (Computer Vision Toolbox)