Skip to content

Commit

Permalink
fix memory issue with dicom export
Browse files Browse the repository at this point in the history
  • Loading branch information
wahln committed Oct 16, 2020
1 parent 04b0875 commit 0505046
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 22 deletions.
12 changes: 6 additions & 6 deletions MatRad_Config.m
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,19 @@
propMC;
propStf;

%For storing the Environment & its version
env;
envVersion;
isOctave; %Helper bool to check for Octave
isMatlab; %Helper bool to check for Matlab

%Disable GUI
disableGUI = false;
end

properties (SetAccess = private)
messageLog = {};
logFileHandle;

%For storing the Environment & its version
env;
envVersion;
isOctave; %Helper bool to check for Octave
isMatlab; %Helper bool to check for Matlab
end

properties (Constant)
Expand Down
31 changes: 15 additions & 16 deletions dicom/@matRad_DicomExporter/matRad_exportDicomCt.m
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

disp('Exporting DICOM CT...');
matRad_cfg = MatRad_Config.instance();

env = matRad_getEnvironment();
matRad_cfg.dispInfo('Exporting DICOM CT...');

%default meta
meta.PatientName = obj.PatientName;
Expand All @@ -38,7 +38,7 @@
meta.StudyInstanceUID = obj.StudyInstanceUID;
meta.FrameOfReferenceUID = obj.FrameOfReferenceUID;

ClassUID = '1.2.840.10008.5.1.4.1.1.2'; %RT Structure Set
ClassUID = '1.2.840.10008.5.1.4.1.1.2'; %CT Image
meta.MediaStorageSOPClassUID = ClassUID;
meta.SOPClassUID = ClassUID;
%TransferSyntaxUID = '1.2.840.10008.1.2';
Expand Down Expand Up @@ -105,7 +105,6 @@
obj.ctSliceMetas = struct([]);
obj.ctExportStatus = struct([]);

isOctave = strcmp(env,'OCTAVE');

for i = 1:nSlices
ctSlice = ctCube(:,:,i);
Expand All @@ -118,24 +117,24 @@
obj.ctSliceMetas(i).SlicePositions = z(i);

%Create and store unique ID
obj.ctSliceMetas(i).SOPClassUID = '1.2.840.10008.5.1.4.1.1.2';
%These lines DO NOT WORK since Matlab overwrites the unique ID's
%obj.ctSliceMetas(i).SOPInstanceUID = dicomuid;
%obj.ctSliceMetas(i).MediaStorageSOPInstanceUID = obj.ctSliceMetas(i).SOPInstanceUID;
obj.ctSliceMetas(i).SOPClassUID = ClassUID;

fullFileName = fullfile(obj.dicomDir,[fileName num2str(i) '.dcm']);
if isOctave
if matRad_cfg.isOctave
obj.ctSliceMetas(i).SOPInstanceUID = dicomuid;
obj.ctSliceMetas(i).MediaStorageSOPInstanceUID = obj.ctSliceMetas(i).SOPInstanceUID;

dicomwrite(ctSlice,fullFileName,obj.ctSliceMetas(i));
else
status = dicomwrite(ctSlice,fullFileName,obj.ctSliceMetas(i),'ObjectType','CT Image Storage');
obj.ctExportStatus = obj.addStruct2StructArray(obj.ctExportStatus,status);
end

%We need to get the info of the file just written because of Matlab's
%hardcoded way of generating InstanceUIDs during writing
tmpInfo = dicominfo(fullFileName);
obj.ctSliceMetas(i).SOPInstanceUID = tmpInfo.SOPInstanceUID;
obj.ctSliceMetas(i).MediaStorageSOPInstanceUID = tmpInfo.MediaStorageSOPInstanceUID;
%We need to get the info of the file just written because of Matlab's
%hardcoded way of generating InstanceUIDs during writing
tmpInfo = dicominfo(fullFileName);
obj.ctSliceMetas(i).SOPInstanceUID = tmpInfo.SOPInstanceUID;
obj.ctSliceMetas(i).MediaStorageSOPInstanceUID = tmpInfo.MediaStorageSOPInstanceUID;
end

matRad_progress(i,nSlices);

Expand Down

0 comments on commit 0505046

Please sign in to comment.