深学习预处理卷

读取体积数据

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

将容量图像数据读入ImageDatastore。阅读体积像素标签数据成PixelLabelDatastore(计算机视觉工具箱)。欲了解更多信息,请参阅数据存储深学习

该表显示的典型用法。imageDatastorepixelLabelDatastore为每个支持的文件格式。金宝app当您创建数据存储,指定“FileExtensions”参数作为数据的文件扩展名。指定ReadFcn物业作为一个函数句柄读取文件格式的数据。该filepath参数指定包含图像数据的文件或文件夹的路径。对于像素标签图像,附加一会pixelLabelID参数指定的类名体素标记值的映射。

图像文件格式

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

volds = imageDatastore (filepath,...“FileExtensions”“.mat”'ReadFcn',@(X)FCN(X));pxds = pixelLabelDatastore(文件路径,类名,pixelLabelID,...“FileExtensions”“.mat”'ReadFcn',@(X)FCN(X));
fcn是从MAT文件中读取数据的自定义功能。例如,该代码定义了一个函数调用matRead从MAT文件的第一个变量加载卷数据。将函数保存到一个名为matRead.m

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

DICOM卷鱼贯

volds = imageDatastore (filepath,...“FileExtensions”'.DCM''ReadFcn',@(X)dicomread(X));pxds = pixelLabelDatastore(文件路径,类名,pixelLabelID,...“FileExtensions”'.DCM''ReadFcn',@(X)dicomread(X));

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

DICOM卷中的多个文件

按着这些次序。对于一个示例,请参见创建包含单个和多文件DICOM卷的映像数据存储(图像处理工具箱)

  • 通过使用聚合文件到一个单一的研究dicomCollection(图像处理工具箱)功能。

  • 方法读取本研究中的DICOM数据dicomreadVolume(图像处理工具箱)功能。

  • 写每卷作为MAT文件。

  • 创建ImageDatastorePixelLabelDatastore从MAT文件由以下为MAT文件的程序集。

NIfTI

volds = imageDatastore (filepath,...“FileExtensions”'.nii''ReadFcn'@ (x) niftiread (x));pxds = pixelLabelDatastore(文件路径,类名,pixelLabelID,...“FileExtensions”'.nii''ReadFcn'@ (x) niftiread (x));

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

关联图像和标签数据

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

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

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

  • randomPatchExtractionDatastore固有地支持补丁萃取。金宝app相比之下,提取从补丁CombinedDatastore,你必须定义自己的函数图像裁剪成补丁,然后用变换功能应用裁剪操作。

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

预处理体积数据

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

预处理容积数据,使用变换功能。变换创建数据存储的变形形式,称为底层数据存储,通过根据自定义函数中定义的操作集转换底层数据存储读取的数据。Image Processing Toolbox™提供了几个接受容量输入的函数。有关函数的完整列表,请参见3-d体积图像处理(图像处理工具箱)。您也可以预处理容积图像使用功能的MATLAB®在多维数组的工作。

对象返回的数据格式必须为自定义转换函数接受底层数据存储的函数。

底层数据存储

输入的格式为自定义转换功能

ImageDatastore

输入到自定义转换功能取决于READSIZE属性。

  • READSIZE为1时,变换函数必须接受整数数组。阵列的大小是与图像中的类型相一致ImageDatastore。例如,灰度图像有大小——- - - - - -ñ,真彩色图像有大小——- - - - - -ñ-乘3,和多光谱图像C渠道有大小——- - - - - -ñ——- - - - - -C

  • READSIZE大于1,则变换功能必须接受对应于该批次中的每个图像的图像数据的单元阵列。

欲了解更多信息,请参阅功能ImageDatastore

PixelLabelDatastore

输入到自定义转换功能取决于READSIZE属性。

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

  • READSIZE大于1时,转换函数必须接受范畴矩阵的单元格数组。

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

randomPatchExtractionDatastore

输入到自定义转换功能必须与两列的表。

欲了解更多信息,请参阅(图像处理工具箱)功能randomPatchExtractionDatastore

RandomPatchExtractionDatastore不支持金宝appDataAugmentation属性体数据。要应用随机仿射变换,以容积数据,你必须使用变换

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

例如:在图片变换体数据的数据存储

此示例代码示出了如何在图像数据存储区变换体积数据volds使用在函数定义的任意的预处理管线preprocessVolumetricIMDS。该示例假定READSIZEvolds大于1。

dsTrain = transform(volds,@(x) preprocessVolumetricIMDS(x,inputSize));

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

  • 随意绕图像ž设在。

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

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

  • 以单元格数组的形式返回图像。

函数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);%返回经过预处理的数据DATAOUT(IDX)= dataNoisy;结束结束

示例:在随机Patch抽取数据存储中转换容量数据

此示例代码展示了如何在随机patch提取数据存储中转换容量数据volds使用在函数定义的任意的预处理管线preprocessVolumetricPatchDS。该示例假定READSIZEvolds是1。

dsTrain =变换(volds @preprocessVolumetricPatchDS);

定义preprocessVolumetricPatchDS函数,对从底层数据存储读取的数据执行所需的转换。该函数必须接受一个表。该函数根据该预处理管线转换数据:

  • 随机选取五个扩充之一。

  • 对表的两列中的数据应用相同的扩展。

  • 返回所述增强图像对在表中。

函数DATAOUT = preprocessVolumetricPatchDS(数据)IMG =数据(1);RESP =数据(2);% 5增大:nil,rot90,fliplr,flipud,rot90(fliplr)augType = {@(X)X,@ rot90,@ fliplr,@ flipud,@(X)rot90(fliplr(X))};rndIdx =兰迪(5,1);IMGOUT = augType {rndIdx}(IMG);respOut = augType {rndIdx}(RESP);%返回经过预处理的数据DATAOUT =表(IMGOUT,respOut};结束

也可以看看

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

相关的例子

更多关于