主要内容

创建包含单一和多文件DICOM图像数据存储卷

这个例子展示了如何创建一个图像数据存储包含体积DICOM数据存储作为单个文件和多个文件。

指定一个目录包含DICOM数据的位置。数据包括二维图像,三维体积在单个文件,和一个多文件3 d体积。

dicomDir = fullfile (matlabroot,“工具箱”,“图片”,“imdata”);

收集关于DICOM文件使用的细节dicomCollection函数。这个函数返回细节表,每一行代表一个单一的研究。多文件DICOM卷的功能聚合成一个单一的文件学习。

收集= dicomCollection (dicomDir IncludeSubfolders = true)
收集=表6×14StudyDateTime SeriesDateTime PatientName PatientSex形态行列通道帧StudyDescription SeriesDescription StudyInstanceUID SeriesInstanceUID文件名________________________ ________________________售予__________ __________ ____ ____ ________ ________ ___________ _________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________________________________ s1{0×0双}{0×0双}”“”“”RTSTRUCT“0 0 0 1”“”“”1.2.826.0.1.3680043.8.274.1.1.7145442384.75872.7982248107.258“{(“1.2.826.0.1.3680043.8.274.1.1.2729954696.96242.3632970675.507 21 Z: \ \ jbernier.Bdoc22b.j1990784.1 \ matlab工具箱\ \ \ imdata \ RTSTRUCT图像。dcm "]} s2{[30 - 4月- 1993 11:27:24]}{[30 - 4月- 1993 11:27:24]}“匿名”“”“CT“512 512 1 1”RT脚踝”“”“1.2.840.113619.2.1.1.322987881.621.736170080.681 1.2.840.113619.2.1.2411.1031152382.365.736169244“{”Z: 21 \ jbernier.Bdoc22b.j1990784.1 \ matlab工具箱\ \ \ \ imdata \ CT-MONO2-16-ankle图像。s3 dcm "]}{[14 - 12月- 2013 15:47:31]}{[14 - 12月- 2013 15:54:33]}“GORBERG米琪”“F”““512 512 1 22”CSP先生”“AX T2”“1.2.840.113619.2.244.3596.11880862.13689.1386517653.214”“1.2.840.113619.2.244.3596.11880862.13689.1386517653.217”{22×1弦}s4{[03 - 10月- 2011 19:18:11]}{[03 - 10月- 2011 18:59:02]}“先生”“M”““512 512 1 1”右膝”“”“1.3.6.1.4.1.9590.100.1.2.320418845013189618318250681693358291211 1.3.6.1.4.1.9590.100.1.2.287740981712351622214874344032214809569“{”Z: 21 \ jbernier.Bdoc22b.j1990784.1 \ matlab工具箱\ \ \ \ imdata \ knee1图像。dcm "]} s5{[03 - 10月- 2011 19:18:11]}{[03 - 10月- 2011 19:05:04]}“先生”“M”““512 512 1 1”右膝”“”“1.3.6.1.4.1.9590.100.1.2.320498134711034521212730362051554545799 1.3.6.1.4.1.9590.100.1.2.316302984111738034326701385064023497963“{”Z: 21 \ jbernier.Bdoc22b.j1990784.1 \ matlab工具箱\ \ \ \ imdata \ knee2图像。dcm "]} s6{[30 - 1月- 1994 11:25:01]}{0×0双}“匿名”“”“我们“430 600 1 10”超声心动图& AI”“先生”“PS松懈999.999.3859744 999.999.94827453”{[21“Z: \ \ jbernier.Bdoc22b.j1990784.1 \ matlab工具箱\ \图片\ imdata \ US-PAL-8-10x-echo.dcm ")}

创建一个临时目录来存储处理过的DICOM卷。

matFileDir = fullfile (pwd,“MATFiles”);如果~存在(matFileDir“dir”mkdir (matFileDir)结束

遍历集合中的每个研究。

idx = 1:尺寸(收集,1)

文件名组成研究。多文件DICOM卷,作为一个字符串数组列出文件名。

dicomFileName = collection.Filenames {idx};如果长度(dicomFileName) > 1 matFileName = fileparts (dicomFileName (1));matFileName =分裂(matFileName filesep);matFileName =取代(strtrim (matFileName(结束),”“,“_”);其他的[~,matFileName] = fileparts (dicomFileName);结束matFileName = fullfile (matFileDir matFileName);

读取数据。尝试不同的阅读功能,因为图片有不同数量的维度和存储在不同的格式。

1)试着读研究使用的数据dicomreadVolume函数。

  • 如果数据是一个多文件体积dicomreadVolume成功运行,并返回完整的卷在一个四维数组。你可以将这些数据添加到数据存储中。

  • 如果数据包含在一个文件中,然后dicomreadVolume不成功运行。

2)试着读研究使用的数据dicomread函数。

  • 如果dicomread返回一个四维数组,那么这项研究包含一个完整的三维体积。你可以将这些数据添加到数据存储中。

  • 如果dicomread返回一个二维矩阵或三维数组,那么这项研究包含一个二维图像。跳过这个数据集合中,继续下一项研究。

试一试data = dicomreadVolume(收集、collection.Row {idx});我data = dicomread (dicomFileName);如果ndims(数据)< 4%不跳过文件卷继续;结束结束

完全卷4 d数组中返回,写入数据和垫子的绝对文件名文件。

保存(matFileName,“数据”,“dicomFileName”);

结束循环的研究收集。

结束

创建一个imageDatastore从垫文件包含体积DICOM数据。指定ReadFcn房地产作为helper函数matRead定义在这个例子。

imdsdicom = imageDatastore (matFileDir FileExtensions =“.mat”,ReadFcn = @matRead);

读过第一DICOM图像数据存储卷。

[V, Vinfo] =阅读(imdsdicom);[~,VFileName] = fileparts (Vinfo.Filename);

DICOM卷是灰度。通过使用删除单通道维度挤压通过使用函数,那么显示卷volshow函数。

V =紧缩(V);volshow (V);

金宝app支持功能

matRead函数加载数据从第一个变量MAT文件的文件名文件名

函数data = matRead(文件名)输入=负载(文件名);f =字段(输入);=输入的数据。(f {1});结束

另请参阅

|||||

相关的话题