主要内容

深度学习的预处理卷

读取体积数据

金宝app支持的体积图像数据文件格式包括MAT文件、医学数字成像与通信(DICOM)文件和神经成像信息技术倡议(NIfTI)文件。

将容积图像数据读入图像数据存储. 将体积像素标签数据读取到PixelLabelDatastore(计算机视觉工具箱). 有关详细信息,请参阅用于深度学习的数据存储

该表显示了imageDatastorepixelLabelDatastore对于每个受支持的文件格式。创建数金宝app据存储时,请指定“FileExtensions”参数作为数据的文件扩展名。指定ReadFcn属性作为读取文件格式数据的函数句柄filepath参数指定包含图像数据的文件或文件夹的路径。对于像素标签图像,附加一会像素标签参数指定体素标签值到类名的映射。

图像文件格式

创建图像数据存储或像素标签数据存储

volds = imageDatastore (filepath,...“FileExtensions”,“.mat”,“ReadFcn”,@(x)fcn(x));pxds=像素标签数据存储(文件路径、类名、像素标签ID、,...“FileExtensions”,“.mat”,“ReadFcn”@ (x) fcn (x));
fcn是从MAT文件读取数据的自定义函数。例如,此代码定义了一个名为matRead从MAT文件的第一个变量加载卷数据。将函数保存在一个名为马特雷德

函数data = matRead(filename) inp = load(filename);f =字段(输入);=输入的数据。(f {1});终止

单个文件中的DICOM卷

volds = imageDatastore (filepath,...“FileExtensions”,“.dcm”,“ReadFcn”,@(x)dicomread(x));pxds=像素标签数据存储(文件路径、类名、像素标签ID、,...“FileExtensions”,“.dcm”,“ReadFcn”,@(x)dicomread(x));

有关读取DICOM文件的详细信息,请参见迪康姆雷德(图像处理工具箱)

DICOM卷在多个文件

按照以下步骤操作。有关示例,请参阅创建包含单文件和多文件DICOM卷的镜像数据存储(图像处理工具箱)

  • 使用双色收藏(图像处理工具箱)作用

  • 阅读研究中的DICOM数据使用dicomreadVolume(图像处理工具箱)作用

  • 将每个卷写入MAT文件。

  • 创建图像数据存储PixelLabelDatastore从MAT文件集合中,按照MAT文件的处理程序。

NIfTI

volds = imageDatastore (filepath,...“FileExtensions”,“nii先生”,“ReadFcn”@ (x) niftiread (x));pixelLabelID pxds = pixelLabelDatastore (filepath,一会,...“FileExtensions”,“nii先生”,“ReadFcn”@ (x) niftiread (x));

有关读取NIfTI文件的更多信息,请参阅niftiread(图像处理工具箱)

关联图像和标签数据

若要将容积图像和标签数据关联起来进行语义分割,或将两个容积图像数据存储关联起来进行回归,请使用randomPatchExtractionDatastore(图像处理工具箱).随机补丁提取数据存储从两个数据存储中提取相应的随机位置补丁。在进行任意大容量的训练时,修补是一种常见的防止内存耗尽的技术。指定一个与网络的输入大小匹配的补丁大小,并且为了内存效率,补丁大小要小于卷的完整大小,例如64 × 64 × 64体素。

您也可以使用结合函数关联两个数据存储。但是,使用randomPatchExtractionDatastore有几个好处结合

  • randomPatchExtractionDatastore金宝app支持并行训练、多gpu训练和预取读取。指定并行或多gpu训练使用'ExecutionEnvironment'的名称-值对参数trainingOptions.属性指定预取读取'DispatchInBackground'的名称-值对参数trainingOptions.预取读取需要并行计算工具箱™.

  • randomPatchExtractionDatastore固有地支持补丁提取。相金宝app反,从组合数据存储,您必须定义自己的函数,将图像裁剪为补丁,然后使用变换函数应用裁剪操作。

  • randomPatchExtractionDatastore可以从一幅测试图像生成多个图像补丁。一对多的patch提取有效地增加了可用的训练数据量。

预处理体积数据

深度学习通常需要对数据进行预处理和增强。例如,您可能希望对图像强度进行归一化、增强图像对比度或添加随机仿射变换以防止过拟合。

要预处理体积数据,请使用变换作用变换创建数据存储的更改形式,称为底层数据存储,通过根据自定义函数中定义的操作集转换底层数据存储读取的数据。图像处理工具箱™提供了几个接受体积输入的函数。有关函数的完整列表,请参见三维体图像处理(图像处理工具箱)。您还可以使用MATLAB中的函数对体积图像进行预处理®在多维数组上工作。

属性返回的格式中,自定义转换函数必须接受底层数据存储的功能。

底层数据存储

自定义转换函数的输入格式

图像数据存储

自定义转换函数的输入取决于ReadSize所有物

  • ReadSize为1时,转换函数必须接受整数数组。控件中的图像类型与数组的大小一致图像数据存储.例如,灰度图像有大小M——- - - - - -N,一个真彩色图像有尺寸M——- - - - - -N-by-3的多光谱图像C频道大小不同M——- - - - - -N——- - - - - -C

  • ReadSize大于1时,转换函数必须接受与批处理中每个图像对应的图像数据单元格数组。

有关更多信息,请参阅功能图像数据存储

PixelLabelDatastore

自定义转换函数的输入取决于ReadSize所有物

  • ReadSize为1时,变换函数必须接受一个范畴矩阵。

  • ReadSize大于1时,转换函数必须接受类别矩阵的单元格数组。

有关更多信息,请参阅(计算机视觉工具箱)功能PixelLabelDatastore

随机抽取数据存储

自定义转换函数的输入必须是具有两列的表。

有关更多信息,请参阅(图像处理工具箱)功能随机抽取数据存储

A.随机抽取数据存储对象不支持金宝appDataAugmentation属性用于容量数据。要对此类数据存储中的容量数据应用随机仿射转换,必须使用变换作用

这个变换函数必须返回与网络输入大小匹配的数据。这个变换函数不支持一对多的观测映射。金宝app

示例:在图像数据存储中转换体积数据

此示例代码显示如何在图像数据存储中转换体积数据田鼠使用函数中定义的任意预处理管道预体积计量学。该示例假定ReadSize田鼠大于1。

dsTrain=变换(volDS,@(x)prepreprevolumetricimage(x,inputSize));

定义预体积计量学函数,对从底层数据存储读取的数据执行所需的转换。该函数必须接受图像数据的单元格数组。该函数对批处理中的每个图像进行循环,并根据预处理管道对图像进行转换:

  • 随机围绕图像旋转图像Z设在。

  • 将卷的大小调整为网络所期望的大小。

  • 创建带有高斯噪声的图像的噪声版本。

  • 返回单元格数组中的图像。

函数dataOut = preprocessVolumetricImage(data,inputSize) numRows = size(data,1);dataOut =细胞(numRows, 1);对于idx = 1: numRows%围绕z轴执行随机90度旋转data = imrotate3(数据{idx 1}, 90 *(兰迪(4)1),[0 0 1);将卷大小调整为网络所期望的大小dataClean = imresize(数据、inputSize);%添加归一化方差为0.01的零均值高斯噪声dataNoisy = imnoise (dataClean,“高斯”, 0.01);%返回预处理的数据数据输出(idx)=数据噪声;终止终止

示例:在随机补丁提取数据存储中转换容量数据

这个示例代码展示了如何在随机补丁提取数据存储中转换容量数据田鼠使用函数中定义的任意预处理管道增强容量匹配。该示例假定ReadSize田鼠为1,网络响应是像素标签数据存储中的像素标签图像。

dsTrain=transform(volPatchDS,@(x)augmentVolumetricPatch(x));

定义增强容量匹配对从基础数据存储读取的数据执行所需转换的函数。该函数必须接受两列图像数据表。该函数根据此预处理管道转换数据:

  • 从五个增强中随机选择一个。

  • 对两个图像应用相同的增强。

  • 返回表中的增强图像对。

函数dataOut = augmentVolumetricPatch(data) img = data. inputimage {1};resp = data.ResponsePixelLabelImage {1};% 5 augmented: none, rot90, fliplr, flipud, rot90(fliplr)augType={(x)x,@rot90,@fliplr,@flipud,@(x)rot90(fliplr(x))};rndIdx=randi(5,1);imgOut=augType{rndIdx}(img);respOut=augType{rndIdx}(resp);%将扩充数据作为表返回dataOut=表({imgOut},{respOut},...“变化无常”,[“输入图像”“ResponsePixelLabelImage”]);终止

另见

|||(计算机视觉工具箱)|(图像处理工具箱)

相关实例

更多关于