在进行CT图像的深度学习研究时,需要使用大量的CT数据。 我从TCIA下载的CT图像是. dcm文件,每个. dcm文件表示一个slice。 如图所示,下载的是Head-neck数据。
在matlab中读取时,按如下方式使用dicomread () )函数
文件路径=' 000000.DCM '
info=Dicominfo(fullfile ) (文件路径);
image=DICOMread(info;
这里只取了一个slice,应该如何批量读取. dcm文件呢? 如何对各层的图像数据进行排序? 以下是参考代码。
主要有几个需要注意的地方:
读取info的层数信息,用于排序
删除多馀的空白数据
clear,clc
% %就绪文件路径
folder='./4/'; 所有slice的文件夹
ext={'*.dcm'};
文件路径=[ ];
forI=1:length(ext ) )。
filepaths=cat(1,filepaths,dir ) fullfile ) folder,ext{i} )读取所有. dcm文件
结束
a=length (文件路径;
data=zeros (512,512,a ); 图像大小% %
num=Zeros(1,a );
for i=1:a
info=Dicominfo(fullfile(folder,filepaths(i ) I ).name ); 读取CT图像的扫描信息
No=info.SliceLocation; 读取层的序列号
num(I )=floor ) no;
结束
value=min(num ) : );
%% extrating number of slices
for i=1:a
info=Dicominfo(fullfile(folder,filepaths(i ) I ).name );
No=info.SliceLocation;
num0=floor(no ) ABS (value ) 1; 按从小到大的顺序对slicelocation进行排序
image=DICOMread(info;
数据(:Num0)=image; % saving data,including blanks
结束
%% delete the blank
n_dim=size(data,3 );
t=1;
for j=1: n_dim
img=data (:j );
ifmean(img )==0
rem(t )=j;
t=t 1;
else
结束
结束
数据(:rem )=[]; %%删除空白图层
n=size(data,3 );
temp=data;
%% show and save the result
for i=1:n
data (3360,n-i 1 )=temp ) :I );
结束
for i=1:n
imshow(data ) :I )、[] ) )
结束
save pat4.mat data %%%保存的数据