To write a DICOM image sequence from a 3D data array using MATLAB, you will need to specify ‘PixelSpacing’ and the ‘SliceThickness’, otherwise the 3D reconstruction software would have no idea to determine the length of the volume data. One way is to copy a sample metadata structure from another volume, update it with the new ‘PixelSpacing’ and ‘SliceThickness’, and pass it to dicomwrite. dicomwrite can write the correct ‘PixelSpacing’ and ‘SliceThickness’ into the dicom file, however, the reconstruction software (for example, slicer) would still treat ‘SliceThickness’ as 1 even it displays the correct ‘SliceThickness’ value. Another way is to directly specify these matadata values as the following. You just need to find the corresponding SOP Class UID for your dicom data from http://www.apteryx.fr/dicom/dicom_conformance
% T defines the 'PixelSpacing' and the 'SliceThickness' %% save dicom images for i = 1 : n_slices status = dicomwrite(uint16(data(:,:,i)), ... file_name, ... 'SliceThickness', T(3), ... 'PixelSpacing', [T(1); T(2)], ... 'SliceLocation', location_base - (i-1)*T(3), ... 'ImageOrientationPatient', [1 0 0 0 1 0], ... 'CreateMode', 'Copy', ... 'SOPClassUID', '1.2.840.10008.5.1.4.1.1.2'); end
Wow! Finally I got a blog from where I can actually obtain useful facts concerning my study and knowledge.
Great read thankk you