主要内容

将图像标签器多边形转换为标记块图像进行语义分割

对象中存储的多边形标签groundTruth对象转换成适合于语义分割工作流的标记块图像。

您可以使用图片标志应用程序在计算机视觉工具箱标记图像太大,不适合内存和多分辨率图像。有关更多信息,请参见在图像标签器中标记大图像(计算机视觉工具箱)图片标志应用程序不支持像素标签阻止金宝app图像。您只能使用ROI形状(如多边形、矩形和直线)创建标签。此示例显示如何使用polyToBlockedImage函数将多边形roi转换为像素标记的块图像,用于语义分割工作流。

使用CAMELYON16数据集中包含肿瘤组织的淋巴结训练图像的修改版本创建一个阻塞图像。修改后的图像有三个粗分辨率等级。空间引用已被调整,以加强一致的纵横比,并在每一层注册特征。

bim = blockedImage(“tumor_091R.tif”);

加载标签接地真实数据

这个例子加载一个预保存的文件groundTruth对象,gTruth.mat,通过将阻塞的图像数据标记在荡妇使用图片标志应用程序。groundTruth对象存储图中显示的多边形标签。绿色为正常组织ROI,红色为肿瘤组织ROI。中导出自己标记的地面真相数据图片标志通过选择App出口然后到工作空间.为变量命名gTruth

负载gTruth.mat

提取ROI位置和标签数据

LabelData的属性gTruth对象将多边形标签数据存储为一个表,每个标签有一列。

labelData = gTruth。LabelData
labelData =1×2表正常的肿瘤  ____________ __________ { 4×2双}{4×1细胞}

使用helper函数gTruthtoXY,在本例的末尾定义,以转换xy -位置数据和标签存储在labelData类型的输入可接受的格式polyToBlockedImage函数。gTruthtoXY赋值数值标签1正常组织的ROI和标签2肿瘤组织roi。

[roiPositions,roiLabels] = gTruthtoXY(labelData)
roiPositions =5×1单元格数组{4×2 double} {14×2 double} {16×2 double} {20×2 double} {12×2 double}
roiLabels =5×11 2 2 2 2

创建带标签的块图像

为新的阻塞图像选择所需的分辨率级别。这种选择是效率和准确性之间的权衡。使用较粗的分辨率级别将减少处理时间和存储大小。使用更精细的分辨率级别将增加蒙版中保存的细节级别。你可以对常规roi使用粗分辨率,比如多边形。对于小的、写意的roi,精细的分辨率水平更合适。对于本例,使用中间分辨率级别。

maskLevel = 2;

指定新阻塞图像的图像大小以匹配原始图像,荡妇,在所需的分辨率水平。

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

创建一个标记块图像。保持原始闭塞图像的空间引用,荡妇,在所需的分辨率水平。默认情况下,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外的正常组织与背景,请参见从roi和蒙版创建标记块图像

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

金宝app支持函数

gTruthtoXY转换存储在表中的多边形ROI坐标和标签数据labelData进入单元格数组适合输入polyToBlockedImage函数。

函数[roiPositions,roiLabels] = gTruthtoXY(labelData) totalROIs = number (labelData{1,1}) + number (labelData{1,2}{:});roiPositions = cell(totalROIs,1);roiLabels = 0 (totalROIs,1);从labelData表中获取标签名labelName = labelData.Properties.VariableNames;roiIdx = 1;初始化ROI指数遍历所有标签将数字标签2分配给肿瘤组织;1为正常组织j = 1:数字(labelData)给定标签的所有roidata = labelData{1,j}{:};如果(isequal (labelName {j},“肿瘤”))k = 1: number (data) roiLabels(roiIdx) = 2;roiPositions{roiIdx} =数据{k};roiIdx = roiIdx + 1;结束其他的%用于其他ROI标签roiLabels(roiIdx) = 1;roiPositions{roiIdx} =数据;roiIdx = roiIdx + 1;结束结束结束

另请参阅

||(计算机视觉工具箱)

相关的话题