主要内容

将图像标签器多边形转换为标记的封锁图像以进行语义分割

此示例显示如何转换存储在a中的多边形标签groundTruth对象转换为适合语义分割工作流程的标记块图像。

你可以使用图像贴标器应用程序在计算机视觉工具箱标签图像太大,以适应内存和多分辨率的图像。有关更多信息,请参见在图像贴标程序中标记大图像(电脑视觉工具箱)图像贴标器应用程序不支持像素标记被封金宝app锁的图像。您只能使用多边形,矩形和线等ROI形状创建标签。此示例显示了如何使用的方式PolytoBlockedImage.将多边形ROI转换为像素标记的封端图像的功能,用于语义分段工作流。

使用CAMELYON16数据集使用包含淋巴结组织的淋巴结的训练图像的修改版本来创建阻塞图像。修改的图像具有三个粗略分辨率。已经调整了空间引用以强制执行一致的纵横比并在每个级别注册功能。

bim = blockedimage(“tumor_091R.tif”);

装载标签地面真实数据

这个例子加载一个已保存的groundTruth对象,gTruth.mat,通过标记阻塞图像数据来创建b使用图像贴标器应用程序。这groundTruth对象存储图中显示的多边形标签。正常的组织ROI以绿色概述,肿瘤组织ROI在红色中概述。您可以从中导出自己标记的地面真理数据图像贴标器通过选择来选择出口进而到工作区.变量的名字GTRUTH.

加载gTruth.mat

提取ROI位置和标签数据

LabelData财产的GTRUTH.对象将多边形标签数据存储为每个标签的一个列的表。

labeldata = gtruth.labeldata.
labeldata =1×2表正常的肿瘤  ____________ __________ { 4×2双}{4×1细胞}

使用辅助功能gtrhtoxy.,以转换xy-存储在中的位置数据和标签Labeldata.进入作为输入的输入的格式PolytoBlockedImage.功能。gtrhtoxy.分配数字标签1到正常的组织ROI和标签2对肿瘤组织roi的影响。

[Roipositions,Roilabels] = Gtruthtoxy(Labeldata)
宽素=5×1单元阵列{4×2 double} {14×2 double} {16×2 double} {20×2 double} {12×2 double}
roilabels =.5×11 2 2 2

创建标记为块图像

为新阻塞的图像选择所需的分辨率级别。这个选择是效率和准确性之间的权衡。使用较粗的分辨率级别可减少处理时间和存储大小。使用更精细的分辨率级别可以增加掩码中保留的细节级别。您可以为常规roi(如多边形)使用粗糙分辨率级别。对于小的徒手roi,精细的分辨率级别更合适。对于本例,使用中间分辨率级别。

masklevel = 2;

指定新阻塞图像的图像大小以匹配原始图像的图像大小,b,在所需的分辨率级别。

图像ziew = bim.size(masklevel,1:2);

创建标记的封锁图像。维护原始阻塞图像的空间引用,b,在所需的分辨率级别。默认情况下,PolytoBlockedImage.分配不属于数字标签的任何ROI内部的像素0.

Blabeled = PolytoblockedImage(roipositions,roilabels,iconeize,blocksize = bim.blocksize(masklevel,1:2),......WorldStart = bim.WorldStart (maskLevel 1:2), WorldEnd = bim.WorldEnd (maskLevel 1:2));

显示覆盖在原始图像上的标记块图像。对应于肿瘤和正常组织多边形的区域groundTruth对象分别以红色和绿色显示。从背景中使用二进制掩模将正常组织区分开,参见从罗伊斯和面具创建标记的被阻止图像

HBIM = Bigimageshow(BIM);ShowLabels(HBIM,爪布,ColorMAP = [0 0 1; 0 1 0; 1 0 0])

金宝app支持功能

gtrhtoxy.转换存储在表中的多边形ROI坐标和标签数据Labeldata.的单元格数组PolytoBlockedImage.功能。

函数[roiPositions,roiLabels] = gTruthtoXY(labelData) totalROIs = numel(labelData{1,1}) + numel(labelData{1,2}{:});roiPositions =细胞(totalROIs, 1);roiLabels = 0 (totalROIs, 1);%从labeldata表中获取标签名称labelname = labeldata.properties.variablenames;roiidx = 1;%初始化ROI索引%循环所有标签%将肿瘤组织标记为数字2;正常组织1例为了J = 1:NUMEL(LABELDATA)%给定标签的所有roidata = labeldata {1,j} {:};如果(isequal(labelName {J},“瘤”))为了k = 1:numel(data) roiLabels(roiIdx) = 2;roiPositions {roiIdx} = {k}数据;roiidx = roiidx + 1;结尾别的其他ROI标签的百分比roilabels(roiidx)= 1;roipositions {roiidx} =数据;roiidx = roiidx + 1;结尾结尾结尾

也可以看看

||(电脑视觉工具箱)

相关的话题