主要内容

为DICOM数据开发自定义数据存储

此示例演示如何开发支持写入操作的自定义数据存储万博1manbetxDICOMDatastore因为它支持DICOM®万博1manbetx(医学中的数字成像和通信)数据,这是医疗成像信息的国际标准。

开发定制的数据存储

这个话题开发自定义数据存储描述创建自定义数据存储的一般流程,以及添加不同功能片段的特定需求。根据需要的功能(并行计算、编写操作、变换等等),可以派生各种超类。特别是,您可以通过子类化from来添加对编写操作的支持万博1manbetxmatlab.io.datastore.FileWritable.但是,对于最广泛的编写功能集,还必须派生frommatlab.io.datastore.FoldersPropertyProvider,这将添加一个文件夹属性。中介绍了向自定义数据存储添加写入支持的完整要求万博1manbetx添加支持万博1manbetx写入数据

类定义

此表包含以下内容的代码和说明:DICOMDatastore

classdefDICOMDatastore < matlab.io.Datastore &...matlab.io.datastore.FileWritable &...matlab.io.datastore.FoldersPropertyProvider

类标题

DICOMDatastore继承自数据存储对于基本功能,以及从FileWritableFoldersPropertyProvider启用文件写入功能。

属性文件matlab.io.datastore.FileSet终止

公共财产

DICOMDatastore定义了一个公共文件夹财产文件集对象。DICOMDatastore继承了文件夹财产自FoldersPropertyProvider,因此该属性不需要初始化。

属性(常量)支持的输出格式=万博1manbetx...[matlab.io.datastore.ImageDatastore.万博1manbetxSupportedOutputFormats,“dcm”];DefaultOutputFormat =“dcm”;终止

DICOMDatastore定义万博1manbetxSupportedOutputFormatsDefaultOutputFormat作为具有默认值的常量属性。“dcm”是DICOM数据的自定义格式。

方法(=公共访问)
函数myds = DICOMDatastore(位置)%设置数据存储属性的类构造函数。myds.Files=matlab.io.datastore.FileSet(位置,...“包含子文件夹”,真正的);populateFoldersFromLocation (myds、位置);重置(myds);终止

公共方法

公共方法部分定义类用于操作数据的公共数据存储方法。公共方法可以从外部访问,因此类的用户DICOMDatastore可以调用这些方法(除了从超类继承的其他公共方法)。

构造函数DICOMDatastore创建一个新的DICOMDatastore通过设置文件夹文件夹属性。

函数tf=hasdata(myds)%HASDATA如果有更多可用数据返回true。%返回指示数据可用性的逻辑标量。%这个方法应该在调用read之前被调用。这%是一个抽象方法,必须由%子类。hasdata与readto结合使用%读取数据存储中的所有数据。tf = hasNextFile (myds.Files);终止

这个hasdata,,重置,进步方法定义数据存储的基础结构,以便一次处理小块数据。这些是必须由子类实现的抽象方法。

函数[数据,信息]=读取(myds)%READ读取数据和提取数据的相关信息。中从数据存储中提取的数据%该数据存储的适当形式。还回来关于数据从何处提取的信息%的数据存储。两个输出都需要%从read方法返回,可以是任何类型。%建议info是包含信息的结构读取的数据块的百分比。数据代表了%如果在顶部创建了“高”,则为“高”的基础类%这个数据存储。这是一个抽象的方法,而且必须是%由子类实现。在本例中,read方法从% datastore使用自定义阅读器函数MyFileReader,%它将解析的文件名作为输入。如果~hasdata(myds)错误(“没有更多的数据可以读取。\nUse reset方法...+“将数据存储重置为数据的开头。之前”...+调用读取方法,检查数据是否可用...+"用hasdata方法读取。");终止文件= nextfile (myds.Files);试一试数据=dicomread(file.Filename);我的错误(%s已失败, file.FileName);终止信息。文件大小=大小(数据);信息。文件名= file.Filename;终止
函数重置(myds)%RESET将数据重置到开始位置。%将数据存储重置为没有数据的状态%读取它。这是一个抽象的方法,而且必须是%由子类实现。%在本例中,数据存储被重置为指向%数据存储中的第一个文件(和第一个分区)。重置(myds.Files);终止
函数压裂=进步(myds)%消耗数据的进度百分比介于0.0和1.0之间。%返回分数介于0.0和1.0之间,表示进度为%提供的示例实现返回FileSet中当前文件索引的百分比%为FileSet中的文件数。一个更简单的可以在这里使用%实现,它在所有时返回1.0%数据已从数据存储中读取,0.0%否则。%%另请参见matlab.io.Datastore、read、hasdata、reset、readall、,%预览。压裂=进步(myds.Files);终止
终止
方法(访问=保护)
函数dsCopy=copyElement(myds)%COPYELEMENT创建数据存储的深度副本%创建数据存储的深度副本。我们需要调用%复制数据存储的属性文件集,因为它是%句柄对象。创建深度副本允许使用方法%例如readall和preview,它们调用copy方法,%保持无国籍。dsCopy = copyElement@matlab.mixin.Copyable (myds);dsCopy。文件夹= copy(myds.Files);终止

保护方法

受保护的方法重新定义类继承的方法,并且这些方法只能由类访问DICOMDatastore. 有关详细信息,请参阅修改继承的方法

受保护的复制元素方法在任何时候都是必需的文件集用于定义属性。这个复制元素方法允许以下方法:readall预览保持无国籍。

函数tf = write(myds, data, writeInfo, outFmt, varargin)如果出口==“dcm”writeInfo dicomwrite(数据。SuggestedOutputName,变长度输入宗量{:});其他的write@matlab.io.datastore.FileWritable (myds、数据...writeInfo outFmt,变长度输入宗量{:});终止tf = true;终止

受保护的方法将写入数据块。自DICOMDatastore万博1manbetx支持图像数据存储格式以及自定义格式“dcm”这个方法根据输出格式使用不同的函数写入数据。

函数files=getFiles(myds)files=myds.files.FileInfo.Filename;终止
终止

受保护的获取文件方法是必要的,因为DICOMDatastore使用文件集对象文件夹财产文件夹属性通常需要返回cellstr,所以获取文件方法使用文件集对象以生成cellstr文件路径的。

终止

结束classdef部分。

展开类代码

使用DICOMDatastore

在实现DICOMDatastore类,则可以使用构造函数创建新的DICOMDatastore对象,它引用一组DICOM文件的位置。例如,如果文件夹中有DICOM文件C: \ \日本\系列- 000001 \数据:

ds=DICOM数据存储(“C: \ \日本\数据系列- 000001”)
ds=具有以下属性的DICOM数据存储:文件:[1×1 matlab.io.datastore.FileSet]支持的输出格式:[“png”“jpg”“jp万博1manbetxeg”“tif”“tiff”“dcm”]默认输出格式:“dcm”文件夹:{C:\Data\DICOM\series-000001'}

类的用户DICOMDatastore可以访问这些公共方法:

方法(ds)
DICOMDatastore类的方法:DICOMDatastore copy isPartitionable preview read reset writeall combine hasdata isShuffleable progress readall transform从句柄继承DICOMDatastore的方法。

特别是,支持万博1manbetx书面语,您可以将文件写入新位置:

writeall (ds,“C: \ Data2 \日本\”)
此命令在文件夹中创建数据存储文件的副本C:\Data2\DICOM\series-000001

有关在MATLAB中编写类的一般信息®看见班级

另见

||

相关的话题