主要内容

增加像素标签语义分割

这个例子展示了如何执行常见类型的图像和像素标签增加语义分割工作流的一部分。

语义分割训练数据包括由数字矩阵和图像像素标签图像由分类矩阵表示。增加训练数据时,您必须申请相同的转换相关的图像和像素标签。这个案例展示了三种常见类型的转换:

然后示例展示了如何申请增加语义分割训练数据存储中的数据使用多种类型的转换的结合。

您可以使用增强训练数据训练网络。语义分割为例展示如何训练网络,看到的语义分割使用深度学习(计算机视觉工具箱)

展示不同类型的增加的影响,每一个转换都在这个例子中使用相同的输入图像和像素标签图像。

读一个示例图像。

filenameImage =“kobi.png”;I = imread (filenameImage);

读取像素标签图像。图像有两类。

filenameLabels =“kobiPixelLabeled.png”;L = imread (filenameLabels);类= [“地板”,“狗”];id = (1 - 2);

将像素标签图像转换为分类数据类型。

C =分类(L、id、类);

显示在图像通过使用标签labeloverlay函数。像素的标签“地板”有一个蓝色的色调和像素标签“狗”有一个青色的色彩。

B = labeloverlay (C);imshow (B)标题(“原始图像和像素标签”)

图包含一个坐标轴对象。坐标轴对象与标题原始图像和像素标签包含一个类型的对象的形象。

调整图像和像素标签

您可以调整数字和分类图像通过使用imresize函数。调整图像和像素标签图像相同大小,图像和显示标签。

targetSize = (300 - 300);resizedI = imresize(我targetSize);resizedC = imresize (C, targetSize);

显示标签的大小缩放图像。

B = labeloverlay (resizedI resizedC);imshow (B)标题(“调整图像和像素标签”)

图包含一个坐标轴对象。坐标轴对象标题调整图像和像素标签包含一个类型的对象的形象。

作物图像和像素标签

种植是一种常见的预处理步骤,使数据输入网络的大小相匹配。要创建的输出图像所需的大小,首先指定作物窗口的大小和位置使用randomWindow2d(图像处理工具箱)centerCropWindow2d(图像处理工具箱)功能。确保你选择一个裁剪窗口在图像,包括所需的内容。然后,作物图像和像素标签图像通过使用相同的窗口imcrop

指定所需的大小裁剪区域的双元素向量的形式高度,宽度]。

targetSize = (300 - 300);

作物图像目标从图像的中心。

赢得= centerCropWindow2d(大小(I), targetSize);croppedI = imcrop(我,赢);croppedC = imcrop (C,赢得);

裁剪图像显示出现标签。

B = labeloverlay (croppedI croppedC);imshow (B)标题(“中心裁剪图像和像素标签”)

图包含一个坐标轴对象。坐标轴对象标题中心裁剪图像和像素标签包含一个类型的对象的形象。

作物图像到目标图像大小从一个随机的位置。

赢得= randomWindow2d(大小(I), targetSize);croppedI = imcrop(我,赢);croppedC = imcrop (C,赢得);

裁剪图像显示出现标签。

B = labeloverlay (croppedI croppedC);imshow (B)标题(“随机裁剪图像和像素标签”)

图包含一个坐标轴对象。坐标轴对象标题随机裁剪图像和像素标签包含一个类型的对象的形象。

经图像和像素标签

randomAffine2d(图像处理工具箱)函数创建一个随机二维仿射变换的旋转、平移、缩放(调整),反射和剪切。转换应用于图像和像素标签图像通过使用imwarp(图像处理工具箱)。控制的空间范围和分辨率输出通过扭曲affineOutputView(图像处理工具箱)函数。

旋转输入图像和像素标签图像的随机选取一个角度范围-50,50度。

tform = randomAffine2d (“旋转”,50 [-50]);

创建一个输出视图图像和像素标签图像扭曲。

溃败= affineOutputView(大小(I), tform);

使用imwarp旋转图像和图像像素标签。

rotatedI = imwarp (tform,我“OutputView”,溃败);rotatedC = imwarp (C tform“OutputView”,溃败);

旋转图像显示旋转的标签。

B = labeloverlay (rotatedI rotatedC);imshow (B)标题(“旋转图像和像素标签”)

图包含一个坐标轴对象。坐标轴对象标题旋转图像和像素标签包含一个类型的对象的形象。

申请增加语义分割训练数据存储中的数据

数据存储是一个便捷的途径,阅读和增强图像的集合。创建一个数据存储,存储图像和像素标签图像数据,并增加数据与一系列的多个操作。

创建数据存储包含图像和像素标签图像数据

增加样本大小的数据存储,复制图像的文件名和图像像素标签。

numObservations = 4;trainImages = repelem ({filenameImage} numObservations 1);trainLabels = repelem ({filenameLabels} numObservations 1);

创建一个imageDatastore从训练图像文件。创建一个pixelLabelDatastore从培训像素标签文件。数据存储包含相同数据的多个副本。

imd = imageDatastore (trainImages);pxds = pixelLabelDatastore (trainLabels、类id);

副图像和像素标签对结合图像数据存储和数据存储像素标签。

pxds trainingData =结合(imd);

读过第一图像及其相关的像素标签图像合并后的数据存储。

data =阅读(trainingData);我={1}数据;C =数据{2};

显示图像和像素标签数据。

B = labeloverlay (C);imshow (B)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

应用数据增加

应用数据增加训练数据使用变换函数。本例中执行两个单独的训练数据对应。

第一个增加紧张的颜色图像,然后执行相同的随机扩展,水平反射,和旋转图像和像素标签图像对。这些操作中定义jitterImageColorAndWarphelper函数结束时,这个例子。

augmentedTrainingData =变换(trainingData @jitterImageColorAndWarp);

阅读所有的增广数据。

data = readall (augmentedTrainingData);

显示增强图像和像素标签数据。

rgb =细胞(numObservations, 1);k = 1: numObservations I =数据{k, 1};C =数据{k, 2};rgb {k} = labeloverlay(我,C);结束蒙太奇(rgb)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

第二增加中心作物图像和像素标签图像目标的大小。这些操作中定义centerCropImageAndLabelhelper函数结束时,这个例子。

targetSize = (800 - 800);preprocessedTrainingData =变换(augmentedTrainingData,@(数据)centerCropImageAndLabel(数据、targetSize));

阅读所有的数据预处理。

data = readall (preprocessedTrainingData);

显示预处理图像和像素标签数据。

rgb =细胞(numObservations, 1);k = 1: numObservations I =数据{k, 1};C =数据{k, 2};rgb {k} = labeloverlay(我,C);结束蒙太奇(rgb)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

辅助功能增强

jitterImageColorAndWarphelper函数随机抖动颜色适用于图像数据,然后一个相同的仿射变换适用于图像和像素标签图像数据。转换由随机组合的缩放比例因子的范围(0.8 - 1.5),水平反射,和旋转范围-30,30度。输入数据和输出双元素细胞阵列,其中第一个元素是图像数据,第二个元素是像素标签图像数据。

函数= jitterImageColorAndWarp(数据)%解压缩原始数据。我={1}数据;C =数据{2};%应用随机颜色抖动。我= jitterColorHSV (,“亮度”,0.3,“对比”,0.4,“饱和”,0.2);%定义随机仿射变换。tform = randomAffine2d (“规模”(0.8 - 1.5),“XReflection”,真的,“旋转”[-30]30日);溃败= affineOutputView(大小(I), tform);%变换图像和边界框标签。augmentedImage = imwarp (tform,我“OutputView”,溃败);augmentedLabel = imwarp (C tform“OutputView”,溃败);%返回增广数据。= {augmentedImage, augmentedLabel};结束

centerCropImageAndLabelhelper函数创建了一个作物集中在图像窗口,然后作物图像和像素标签使用作物窗口形象。输入数据和输出双元素细胞阵列,其中第一个元素是图像数据,第二个元素是像素标签图像数据。

函数= centerCropImageAndLabel(数据、targetSize)赢得= centerCropWindow2d(尺寸(数据{1}),targetSize);{1}= imcrop(数据{1},赢得);{2}= imcrop(数据{2},赢得);结束

另请参阅

(图像处理工具箱)|(图像处理工具箱)|(图像处理工具箱)

相关的例子

更多关于