There are two main files, "ReadDicomElementList" which will read all tags of a dicom file into a struct and "WriteDicomElementList" which can write them back to a new file.
A large dicom dictionary is included from GDCM with private tags from Philips, Siemens and Toshiba (See Dictionary-License.txt).
These functions are usable for creation of an anatomize function, or to manipulate data which is not support by Matlab defaults functions (like writing a dicom file with one big volume inside)
Example read output:
>> Elements(4)
name: 'MediaStorageSOPInstanceUID'
data: '1.2.840.113619.2.1.2.2011002556.2.10.602503127'
group: '0002'
number: '0003'
type: 'UI'
length: 46
info: 'Type Included'
explicit: 1
location: 192
Dirk-Jan Kroon (2019). Dicom Tags Read and Write (https://www.mathworks.com/matlabcentral/fileexchange/29145-dicom-tags-read-and-write), MATLAB Central File Exchange. Retrieved .
1.1.0.0 | Now also reads Dicom files with ISO header.
|
Create scripts with code, output, and formatted text in a single executable document.
Hossam El-Rewaidy (view profile)
Zhiyan Wang (view profile)
Thank you!
BLP (view profile)
I have tried to get tag list for DICOM file generated by a Philips Epiq 5 ultrasound scanner and I got an error:
>> elementlist=ReadDicomElementList('IM_0001')
138 element.data=fread(f, element.length, 'uint8')';
Error using fread
Invalid size.
Error in ReadDicomElementList>ReadDicomElement (line 138)
element.data=fread(f, element.length, 'uint8')';
Error in ReadDicomElementList (line 65)
element=ReadDicomElement(f,dcmdic);
Any idea what may be the reason?
Scott (view profile)
I'm running into a situation where the ReadDicomElement function fails to read the PixelData because the defined size is -1 (line 139 of ReadDicomElementList.m). A comment in the calling functionReadDicomElementList says it will "Read all tags until the PixelData is reached" but it proceeds to read until the end of the file is reached. How can one handle the OB-type PixelData element with element.length = -1?