主要内容

深度学习的预处理卷

读取体积数据

万博1manbetx体积图像数据的支持文件格式包括MAT文件,数字成像和医学中的通信(DICOM)文件和神经影像信息技术计划(NIFI)文件。

将容积图像数据读入imageageAtastore..将体积像素标记数据读入一个PixelLabelDatastore(电脑视觉工具箱).有关更多信息,请参阅深入学习的数据购物

该表显示了典型的用途imageDatastorepixelLabelDatastore对于每个受支持的文件格式。万博1manbetx创建数据存储时,请指定“FileExtensions”参数作为数据的文件扩展名。指定readfcn.属性作为函数句柄,可读取文件格式的数据。这filepath参数指定包含图像数据的文件或文件夹的路径。对于像素标签图像,附加一会Pixellabelid.参数指定Voxel标签值的映射到类名。

图像文件格式

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

volds = imageDatastore (filepath,......“FileExtensions”“.mat”'readfcn',@(x)fcn(x));pxds = pixellabeldataStore(Filepath,ClassNames,Pixellabelid,......“FileExtensions”“.mat”'readfcn',@(x)fcn(x));
fcn是一个自定义函数,可从垫文件中读取数据。例如,此代码定义了一个调用的函数matRead从MAT文件的第一个变量加载卷数据。将函数保存在一个名为基马

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

单个文件中的DICOM卷

volds = imageDatastore (filepath,......“FileExtensions”'.dcm''readfcn',@(x)dicomread(x));pxds = pixellabeldataStore(Filepath,ClassNames,Pixellabelid,......“FileExtensions”'.dcm''readfcn',@(x)dicomread(x));

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

DICOM卷在多个文件

按着这些次序。例如,看到创建包含单文件和多文件DICOM卷的镜像数据存储(图像处理工具箱)

  • 通过使用汇总文件将文件聚合到一个研究中dicomcollection.(图像处理工具箱)功能。

  • 阅读研究中的DICOM数据使用dicomreadvolume(图像处理工具箱)功能。

  • 将每个卷写为垫文件。

  • 创建imageageAtastore.PixelLabelDatastore从MAT文件集合中,按照MAT文件的处理程序。

NIfTI

volds = imageDatastore (filepath,......“FileExtensions”'.nii''readfcn'@ (x) niftiread (x));pxds = pixellabeldataStore(Filepath,ClassNames,Pixellabelid,......“FileExtensions”'.nii''readfcn'@ (x) niftiread (x));

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

关联图像和标签数据

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

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

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

  • randomPatchExtractionDatastore本质上支持补丁提取。万博1manbetx相比之下,从a中提取斑块ConventDatastore.,您必须定义自己的函数,将图像删除到修补程序中,然后使用变换应用裁剪操作的功能。

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

预处理体积数据

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

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

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

底层数据存储

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

imageageAtastore.

对自定义变换功能的输入取决于ReadSize财产。

  • ReadSize是1,转换函数必须接受整数数组。阵列的大小与图像中的图像类型一致imageageAtastore..例如,灰度图像有大小m——- - - - - -N,一个真彩色图像有尺寸m——- - - - - -N-by-3的多光谱图像C频道有尺寸m——- - - - - -N——- - - - - -C

  • ReadSize大于1,变换函数必须接受与批次中的每个图像相对应的图像数据的单元阵列。

有关更多信息,请参阅功能imageageAtastore.

PixelLabelDatastore

对自定义变换功能的输入取决于ReadSize财产。

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

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

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

RandompatchExtractionDatastore.

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

有关更多信息,请参阅(图像处理工具箱)功能RandompatchExtractionDatastore.

一种RandompatchExtractionDatastore.对象不支持万博1manbetxDataAugmentation属性用于容量数据。要对此类数据存储中的容量数据应用随机仿射转换,必须使用变换功能。

变换函数必须返回与网络输入大小匹配的数据。这变换函数不支持一对多的观测映射。万博1manbetx

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

此示例代码显示如何在图像数据存储中转换体积数据volds.使用功能中定义的任意预处理管道PreprocessvolumeTricimage..这个例子假定了ReadSizevolds.大于1。

dstrain =变换(volds,@(x)预处理volumeTricimage(x,输入));

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

  • 随机旋转图像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.01dataNoisy = imnoise (dataClean,'高斯', 0.01);%返回预处理的数据dataout(idx)= DataNoisy;结尾结尾

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

这个示例代码展示了如何在随机补丁提取数据存储中转换容量数据volpatchds.使用功能中定义的任意预处理管道AugmentVolumetricpatch..这个例子假定了ReadSizevolpatchds.为1,网络响应是像素标签数据存储中的像素标签图像。

dstrain =变换(volpatchds,@(x)augmentvolumetricpatch(x));

定义AugmentVolumetricpatch.函数,对从底层数据存储读取的数据执行所需的转换。该函数必须接受一个两列图像数据表。该函数根据本预处理管道转换数据:

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

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

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

函数dataOut = augmentVolumetricPatch(data) img = data. inputimage {1};resp = data.ResponsePixelLabelImage {1};% 5 augmented: none, rot90, fliplr, flipud, rot90(fliplr)奥古蒂= {@(x)x,@ rot90,@ fliplr,@ flipud,@(x)rot90(fliplr(x))};rndidx = randi(5,1);Imgout =奥古蒂{rndidx}(img);respout = augtype {rndidx}(RES);%将增强数据作为表格返回dataout =表({imgout},{respout},......'variablenames',[“InputImage”“ResponsePixelLabelImage”]);结尾

也可以看看

|||(电脑视觉工具箱)|(图像处理工具箱)

相关例子

更多关于