dicom 导入matlab,Reading DICOM files into Matlab

Hello all, Please can you help me correct the folllowing. I am trying to upload dicom files of mri scans to analyse the T2* over time.

When I load the dicoms it gives me this error:

Error using zeros

Size inputs must be scalar.

Error in ROI_timecourse_DICOM_v2_7_TS (line 30)

im4D=zeros(im4D_info.Rows,im4D_info.Columns,im4D_info.Private_2001_1018,dyns);

The code is as follows

%% Name and path of outcoming and incoming files

%path='/Volumes/DOCS/DATA/studies/';

%cd(path)

ROIcheck=input('Have you saved ROIs to use in this subject? [y/n]: ','s');

ROIcorr=input('Would you like to redo any of the ROIs? [y/n]: ','s');

loadRegisteredData=input('Do you also have registered data from imagej (exported as TIFF)? [y/n]: ','s');

%avg_window=input('Would level of moving average? [0-200]: ');

avg_window = 0; % turn off for now

avg_method=input('Summary method? [median|mean] (leave empty for default): ','s');

[FileName,PathName] = uigetfile({'*','*'},'Input the first DICOM functional image (exported from Osirix)');

im4D_info=dicominfo(strcat(PathName,FileName));

%suffix=strfind(FileName,'.');

% TS - change to not assume .dcm ending

suffix=strfind(FileName,'(');

FileName = FileName(1:suffix(1)-5);

dyns=im4D_info.NumberOfTemporalPositions;

name_dir=dir(strcat(PathName,FileName,'*'));

name_dir=name_dir(1:dyns);

datefile=num2str(char({name_dir.name}));

im4D=zeros(im4D_info.Rows,im4D_info.Columns,im4D_info.Private_2001_1018,dyns);

h=waitbar(0,'Loading Files...');

trigtimes=zeros(dyns,1);

for i=1:dyns

im4D_info_=dicominfo(strcat(PathName,name_dir(i).name));

im4D_info_.BitsAllocated=32;

im4D(:,:,:,i)=im4D_info_.RescaleSlope*dicomread(im4D_info_);

trigtimes(i)=im4D_info_.TriggerTime/1000;

waitbar(i/dyns,h,strcat('Loading Files... ',num2str(round(i/dyns*100)),' %'));

% fprintf(1,'File Name: %s \n',name_dir(i).name); %prints out all the names of loaded files

end

% load registered images if exist

if (loadRegisteredData=='y')

[FileName,PathName] = uigetfile({'*','*'},'Input the first registered functional image (exported from ImageJ as TIFF)');

%suffix=strfind(FileName,'.');

% TS - change to not assume .dcm ending

suffix=strfind(FileName,'_');

dyns=im4D_info.NumberOfTemporalPositions;

name_dir=dir(strcat(PathName,'*.tif','*'));

name_dir=name_dir(1:dyns);

datefile=num2str(char({name_dir.name}));

im4D_reg=zeros(im4D_info.Rows,im4D_info.Columns,im4D_info.Private_2001_1018,dyns);

h=waitbar(0,'Loading Reg Files...');

for i=1:dyns

t = Tiff(strcat(PathName,name_dir(i).name),'r');

im4D_reg(:,:,:,i)=read(t);

close(t);

waitbar(i/dyns,h,strcat('Loading Files... ',num2str(round(i/dyns*100)),' %'));

% fprintf(1,'File Name: %s \n',name_dir(i).name); %prints out all the names of loaded files

end

im4D = im4D_reg;

end

close(h)

fprintf(1,'Total of %d functional files loaded \n',i);

colour_map='rkbmgrkbmgcy';

cd(PathName)

if ((ROIcheck=='n')||(ROIcorr=='y'))

[FileNameA,PathNameA] = uigetfile({'*','*'},'Input the first DICOM anatomical image (exported from Osirix)');

imAnat_info=dicominfo(strcat(PathNameA,FileNameA));

% suffix=strfind(FileNameA,'.');

% TS - account for different path name compared to osirix

suffix=strfind(FileNameA,'(');

FileNameA=FileNameA(1:suffix(1)-1);

dyns=imAnat_info.NumberOfTemporalPositions;

if (dyns==1)

h=waitbar(0,'Loading Files...');

slc=imAnat_info.Private_2001_1018;

name_dir1=dir(strcat(PathNameA,FileNameA,'*'));

name_dir1=name_dir1(1:slc);

for i=1:slc

imAnat(:,:,i)=dicomread(strcat(PathNameA,name_dir2(i).name));

% fprintf(1,'File Name: %s \n',name_dir1(i).name);

waitbar(i/slc,h,strcat('Loading Files... ',num2str(round(i/slc*100)),' %'));

end

close(h)

fprintf(1,'Total of %d anatomical files loaded \n',i);

else

name_dir2=dir(strcat(PathNameA,FileNameA,'*'));

name_dir2=name_dir2(1:dyns);

datefile=num2str(char({name_dir2.name}));

h=waitbar(0,'Loading Files...');

for i=1:dyns

imAnat(:,:,:,i)=dicomread(strcat(PathNameA,name_dir2(i).name));

waitbar(i/dyns,h,strcat('Loading Files... ',num2str(round(i/dyns*100)),' %'));

% fprintf(1,'File Name: %s \n',name_dir1(i).name);

end

close(h)

fprintf(1,'Total of %d anatomical files loaded \n',i);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值