主要内容

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

这个示例展示了如何创建一个包含存储为单个文件和多个文件的卷DICOM数据的映像数据存储。

指定包含DICOM数据的目录的位置。数据包括2-D图像,单个文件中的3-D卷,以及多文件3-D卷。

dicomdir = fullfile(matlabroot,'工具箱/图像/ imdata');

通过使用使用“对DICOM文件的详细信息”dicomCollection函数。该函数以表的形式返回详细信息,其中每一行代表一个研究。对于多文件DICOM卷,该函数将文件聚合到单个研究中。

集合= Dicomcollection(Dicomdir,“IncludeSubfolders”,真正的)
集合=6×14表StudyDateTime 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 E: \ jobarchive \ Bdoc20b \ 2020 _04_16_h05m48s37_job1364129_pass \ 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“{”E: \ jobarchive \ Bdoc20b \ 2020 _04_16_h05m48s37_job1364129_pass \ 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.287740981712351622214874344032214809569”{[“1.3.6.1.4.1.9590.100.1.2.320418845013189618318250681693358291211 E: \ jobarchive \ Bdoc20b \ 2020 _04_16_h05m48s37_job1364129_pass \ 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“{”E: \ jobarchive \ Bdoc20b \ 2020 _04_16_h05m48s37_job1364129_pass \ matlab工具箱\ \ \ imdata \ knee2图像。} s6 {[30- jan 1994 11:25:01]} {0×0 double} "Anonymized" "" "US" 430 600 1 10 "Echocardiogram" "PS LAX MR & AI" "999.999.3859744" "999.999.94827453" {["E: jobarchive\Bdoc20b\2020_04_16_h05m48s37_job1364129_pass\matlab\toolbox\images\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成功运行并在单个4-D阵列中返回完整的卷。您可以将此数据添加到数据存储区。

  • 如果数据包含在单个文件中,则dicomreadvolume不能成功运行。

2)尝试通过使用读取研究的数据Dicomread.函数。

  • 如果Dicomread.返回一个4-D阵列,然后该研究包含完整的3-D卷。您可以将此数据添加到数据存储区。

  • 如果Dicomread.返回一个二维矩阵或三维数组,然后研究包含一个二维图像。跳过这些数据,继续收集中的下一个研究。

尝试data = dicomreadvolume(集合,collection.row {idx});抓住ME数据= dicomread(dicomFileName);如果ndims(数据)<4%跳过文件不是卷的继续结尾结尾

对于在4-D阵列中返回的完整卷,将数据和绝对文件名写入MAT文件。

保存(matFileName,'数据''dicomfilename');

结束集合中研究的循环。

结尾

创建一个ImageageAtastore.来自包含体积DICOM数据的垫文件。指定ReadFcn属性作为辅助函数基质,在本例的最后定义。

IMDSDICOM = IMAGEDATASTORE(Matfiledir,'fileextensions''。垫'...“ReadFcn”, @matRead);

从图像数据存储读取第一个DICOM卷。

[v,Vinfo] =读(IMDSDICOM);[〜,vfilename] = fileparts(vinfo.filename);

DICOM音量为灰度。属性删除单例通道维度函数,然后通过使用函数显示卷volshow.函数。

v =挤压(v);ViewPnl = Uipanel(图,'标题',vfilename);volshow(v,'父母', ViewPnl);

万博1manbetx支持功能

基质函数从带有文件名的MAT文件的第一个变量加载数据文件名

功能数据=矩阵(文件名)Inp = load(filename);f =字段(INP);数据= INP。(f {1});结尾

另请参阅

|||||

相关话题