All information, both header and image, is read into a list structure from a DICOM file.

readDICOMFile(fname, boffset = NULL, endian = "little",
  flipud = TRUE, skipSequence = FALSE, pixelData = TRUE, warn = -1,
  debug = FALSE)

parseDICOMHeader(rawString, sq.txt = "", endian = "little",
  verbose = FALSE)

Arguments

fname

is the file name of the DICOM image (with suffix).

boffset

is the number of bytes to skip at the beginning of the DICOM file (default = NULL which lets the code determine the starting point).

endian

is the endian-ness of the file (default is "little").

flipud

is a logical variable for vertical flipping of the image (default is TRUE).

skipSequence

is a logical variable to skip all content contained in SequenceItem tags (default = TRUE).

pixelData

is a logical variable (default = TRUE) on whether or not the PixelData should be read from the DICOM files. This is useful when one wants to gather the DICOM header information without loading the images.

warn

is a number to regulate the display of warnings (default = -1). See options for more details.

debug

is a logical variable (default = FALSE) that regulates to display of intermediate processing steps.

rawString

is a vector of raw values taken directly from the DICOM file.

sq.txt

is an character string (default = “”) that indicates if the DICOM header field is embedded within a sequence.

verbose

is a logical variable (default = FALSE) that regulates to display of intermediate processing steps.

Value

A list containing two elements:

hdr

all DICOM header fields (with or without “sequence” information).

img

the ‘image’ information.

Details

A while loop is used to traverse the unknown number of DICOM header fields contained in a single file. Information contained in “sequences” may be included/excluded according to the logical variable skipSequence (default = TRUE).

A resursive implementation of the code breaks the DICOM file into segments and calls itself to parse each segment.

Strict adherence to the DICOM standard is not required. Specifically, content is allowed to start at the first byte and the four characters ‘DICM’ are not required at bytes 129-132.

References

Whitcher, B., V. J. Schmid and A. Thornton (2011). Working with the DICOM and NIfTI Data Standards in R, Journal of Statistical Software, 44 (6), 1--28. http://www.jstatsoft.org/v44/i06

Digital Imaging and Communications in Medicine (DICOM)
http://medical.nema.org
http://en.wikipedia.org/wiki/Digital_Imaging_and_Communications_in_Medicine

See also

Author

Brandon Whitcher bwhitcher@gmail.com

Examples


x <- readDICOMFile(system.file("dcm/Abdo.dcm", package="oro.dicom"))
graphics::image(t(x$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="",
                main="Abdo.dcm")


x <- readDICOMFile(system.file("dcm/Spine1.dcm", package="oro.dicom"))
graphics::image(t(x$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="",
                main="Spine1.dcm")