Read Metadata from DICOM Files

DICOM files contain metadata that provide information about the image data, such as the size, dimensions, bit depth, modality used to create the data, and equipment settings used to capture the image. To read metadata from a DICOM file, use the dicominfo function. dicominfo returns the information in a MATLAB® structure where every field contains a specific piece of DICOM metadata. You can use the metadata structure returned by dicominfo to specify the DICOM file you want to read using dicomread — see Read Image Data from DICOM Files. If you just want to view the metadata in a DICOM file, for debugging purposes, you can use the dicomdisp function.

The following example reads the metadata from a sample DICOM file that is included with the toolbox.

info = dicominfo('CT-MONO2-16-ankle.dcm')
info = 

                          Filename: [1x89 char]
                       FileModDate: '18-Dec-2000 11:06:43'
                          FileSize: 525436
                            Format: 'DICOM'
                     FormatVersion: 3
                             Width: 512
                            Height: 512
                          BitDepth: 16
                         ColorType: 'grayscale'
    FileMetaInformationGroupLength: 192
        FileMetaInformationVersion: [2x1 uint8]
           MediaStorageSOPClassUID: '1.2.840.10008.5.1.4.1.1.7'
        MediaStorageSOPInstanceUID: [1x50 char]
                 TransferSyntaxUID: '1.2.840.10008.1.2'
            ImplementationClassUID: '1.2.840.113619.6.5'
                                .
                                .
                                .

Private DICOM Metadata

The DICOM specification defines many of these metadata fields, but files can contain additional fields, called private metadata. This private metadata is typically defined by equipment vendors to provide additional information about the data they provide.

When dicominfo encounters a private metadata field in a DICOM file, it returns the metadata creating a generic name for the field based on the group and element tags of the metadata. For example, if the file contained private metadata at group 0009 and element 0006, dicominfo creates the name:Private_0009_0006. dicominfo attempts to interpret the private metadata, if it can. For example, if the metadata contains characters, dicominfo processes the data. If it can't interpret the data, dicominfo returns a sequence of bytes.

If you need to process a DICOM file created by a manufacturer that uses private metadata, and you prefer to view the correct name of the field as well as the data, you can create your own copy of the DICOM data dictionary and update it to include definitions of the private metadata. You will need information about the private metadata that vendors typically provide in DICOM compliance statements. For more information about updating DICOM dictionary, see Create Your Own Copy of DICOM Dictionary.

Create Your Own Copy of DICOM Dictionary

MathWorks uses a DICOM dictionary that contains definitions of thousands of standard DICOM metadata fields. If your DICOM file contains metadata that is not defined this dictionary, you can update the dictionary, creating your own copy that it includes these private metadata fields.

To create your own dictionary, perform this procedure:

  1. Make a copy of the text version of the DICOM dictionary that is included with MATLAB. This file, called dicom-dict.txt is located in matlabroot/toolbox/images/medformats or matlabroot/toolbox/images/iptformats depending on which version of the Image Processing Toolbox software you are working with. Do not attempt to edit the MAT-file version of the dictionary, dicom-dict.mat.

  2. Edit your copy of the DICOM dictionary, adding entries for the metadata. Insert the new metadata field using the group and element tag, type, and other information. Follow the format of the other entries in the file. The creator of the metadata (e.g., an equipment vendor) must provide you with the information.

  3. Save your copy of the dictionary.

  4. Set MATLAB to use your copy of the DICOM dictionary, dicomdict function.