此示例演示如何开发支持写入操作的自定义数据存储万博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 |
类标题
|
属性文件matlab.io.datastore.FileSet终止 |
公共财产
|
属性(常量)支持的输出格式=万博1manbetx...[matlab.io.datastore.ImageDatastore.万博1manbetxSupportedOutputFormats,“dcm”];DefaultOutputFormat =“dcm”;终止 |
|
方法(=公共访问) 函数myds = DICOMDatastore(位置)%设置数据存储属性的类构造函数。myds.Files=matlab.io.datastore.FileSet(位置,...“包含子文件夹”,真正的);populateFoldersFromLocation (myds、位置);重置(myds);终止 |
公共方法 公共方法部分定义类用于操作数据的公共数据存储方法。公共方法可以从外部访问,因此类的用户 构造函数
|
函数tf=hasdata(myds)%HASDATA如果有更多可用数据返回true。%返回指示数据可用性的逻辑标量。%这个方法应该在调用read之前被调用。这%是一个抽象方法,必须由%子类。hasdata与readto结合使用%读取数据存储中的所有数据。tf = hasNextFile (myds.Files);终止 |
|
函数[数据,信息]=读取(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);终止 |
保护方法 受保护的方法重新定义类继承的方法,并且这些方法只能由类访问 受保护的 |
函数tf = write(myds, data, writeInfo, outFmt, varargin)如果出口==“dcm”writeInfo dicomwrite(数据。SuggestedOutputName,变长度输入宗量{:});其他的write@matlab.io.datastore.FileWritable (myds、数据...writeInfo outFmt,变长度输入宗量{:});终止tf = true;终止 |
受保护的 |
函数files=getFiles(myds)files=myds.files.FileInfo.Filename;终止 终止
|
受保护的 |
终止
|
结束 |
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中编写类的一般信息®看见班级.
matlab.io.Datastore
|matlab.io.datastore.FileWritable
|matlab.io.datastore.FoldersPropertyProvider