gdcmraw - Man Page

Extract Data Element Value Field​.

Synopsis

gdcmraw [options] file-in file-out

Description

The gdcmraw tool is mostly used for development purpose​. It is used to extract a specific binary field from a DICOM DataSet​.

Parameters

file-in   DICOM input filename

file-out  output filename

Options

  -i --input     Input filename
  -o --output    Output filename
  -t --tag       Specify tag to extract value from​.

Specific Options

  -S --split-frags  Split fragments into multiple files​.
  -p --pattern      Specify trailing file pattern (see split-frags)​.
  -P --pixel-data   Pixel Data trailing 0​.

General Options

  -h   --help
         print this help text and exit

  -v   --version
         print version information and exit

  -V   --verbose
         verbose mode (warning+error)​.

  -W   --warning
         warning mode, print warning information

  -E   --error
         error mode, print error information

  -D   --debug
         debug mode, print debug information

Typical Usage

Copy Attribute Value to file

This will extract the value at Tag (0025,101b):

$ gdcmraw -i GE_MR_0025xx1bProtocolDataBlock​.dcm -t 25,101b -o pdb​.raw

Extract Pixel Data

If you do not specify any tag, the Pixel Data element is the default one​. So for instance to grab the Pixel Data from an image:

$ gdcmraw -i test​.acr -o test​.raw

You can then for example compute the md5sum of this pixel data (very useful):

$ md5sum test​.raw
f845c8f283d39a0204c325654493ba53  test​.raw

Encapsulated Syntax

When the Pixel Data is encapsulated, multiple fragments can be used to store a single slice image:

$ gdcmdump D_CLUNIE_CT1_J2KR​.dcm
​.​.​.
(7fe0,0010) OB                                                    # u/l,1 Pixel Data
  (fffe,e000) ?? []                           # 0,1 Item
  (fffe,e000) ?? ff\\4f\\ff\\51\\00\\29\\00\\00\\00\\00\\02\\00\\00\\00\\02\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\02\\00\\00\\00\\02\\00         # 65536,1 Item
  (fffe,e000) ?? 2c\\b7\\ee\\68\\de\\e3\\93\\2d\\b3\\b8\\ba\\90\\7b\\42\\3e\\f8\\42\\16\\64\\88\\46\\30\\37\\d4\\50\\95\\9b\\b6\\a5\\c7\\38\\9b         # 65536,1 Item
  (fffe,e000) ?? 48\\3c\\03\\e8\\c4\\3f\\44\\e1\\8a\\5c\\73\\3b\\02\\0a\\ad\\a5\\8f\\e4\\0c\\81\\76\\a2\\d7\\1b\\7f\\b7\\cd\\bc\\30\\c6\\6a\\6a         # 43308,1 Item
(fffe,e0dd) 0

In order to create a J2K image out of it, we need to extract each fragments and concatenate them:

$ gdcmraw -i D_CLUNIE_CT1_J2KR​.dcm -o D_CLUNIE_CT1_J2KR​.j2k

This is a valid J2K file, using the Kakadu software package:

$ kdu_expand -i D_CLUNIE_CT1_J2KR​.j2k -o D_CLUNIE_CT1_J2KR​.tiff -record D_CLUNIE_CT1_J2KR​.txt
$ cat D_CLUNIE_CT1_J2KR​.txt
Sprofile=PROFILE2
Scap=no
Sextensions=0
Ssize={512,512}
Sorigin={0,0}
Stiles={512,512}
Stile_origin={0,0}
Scomponents=1
Ssigned=yes
Sprecision=16
Ssampling={1,1}
Sdims={512,512}
Cycc=no
Cmct=0
Clayers=1
Cuse_sop=no
Cuse_eph=no
Corder=LRCP
Calign_blk_last={no,no}
Clevels=5
Cads=0
Cdfs=0
Cdecomp=B(-:-:-)
Creversible=yes
Ckernels=W5X3
Catk=0
Cuse_precincts=no
Cblk={64,64}
Cmodes=0
Qguard=1
Qabs_ranges=18,19,19,20,19,19,20,19,19,20,19,19,20,19,19,20

>> New attributes for tile 0:

Extract fragments as single file

Sometimes each fragments is in fact a single slice, so we would not need to concatenate them:

$ gdcmdump 00191113​.dcm
​.​.​.
(7fe0,0010) OB                                                    # u/l,1 Pixel Data
  (fffe,e000) ?? 00\\00\\00\\00\\6b\\38\\01\\00\\10\\77\\02\\00\\37\\b6\\03\\00\\a7\\f4\\04\\00         # 20,1 Item
  (fffe,e000) ?? ff\\d8\\ff\\c3\\00\\0b\\08\\02\\00\\02\\00\\01\\00\\11\\00\\ff\\c4\\00\\1b\\00\\01\\01\\01\\01\\01\\01\\01\\01\\00\\00\\00\\00         # 79970,1 Item
  (fffe,e000) ?? ff\\d8\\ff\\c3\\00\\0b\\08\\02\\00\\02\\00\\01\\00\\11\\00\\ff\\c4\\00\\1b\\00\\01\\01\\01\\01\\01\\01\\01\\01\\00\\00\\00\\00         # 81564,1 Item
  (fffe,e000) ?? ff\\d8\\ff\\c3\\00\\0b\\08\\02\\00\\02\\00\\01\\00\\11\\00\\ff\\c4\\00\\1b\\00\\01\\01\\01\\01\\01\\01\\01\\01\\00\\00\\00\\00         # 81694,1 Item
  (fffe,e000) ?? ff\\d8\\ff\\c3\\00\\0b\\08\\02\\00\\02\\00\\01\\00\\11\\00\\ff\\c4\\00\\1b\\00\\01\\01\\01\\01\\01\\01\\01\\01\\00\\00\\00\\00         # 81511 (81512),1 Item
(fffe,e0dd) 0

Let's try to extract those 4 individual Lossless jpeg individually:

$ gdcmraw --split-frags -i 00191113​.dcm -o jpeg --pattern %02d​.ljpeg

This will output 4 files:

-rw-r--r--  1 mathieu mathieu   81512 2008-08-08 22:10 jpeg03​.ljpeg
-rw-r--r--  1 mathieu mathieu   81694 2008-08-08 22:10 jpeg02​.ljpeg
-rw-r--r--  1 mathieu mathieu   81564 2008-08-08 22:10 jpeg01​.ljpeg
-rw-r--r--  1 mathieu mathieu   79970 2008-08-08 22:10 jpeg00​.ljpeg

Footnote About Jpeg Files

It is a common misunderstanding to interchange 'JPEG 8bits lossy' with simply JPEG file​. The JPEG specification is much broader than simply the common lossy 8bits file (as found on internet)​.

You can have:

Those are what is defined in ITU-T T​.81, ISO/IEC IS 10918-1​.

See Also

gdcmdump(1), gdcmraw(1)

Author

Mathieu Malaterre

Main developer

Referenced By

gdcmconv(1), gdcmdump(1), gdcmimg(1), gdcminfo(1), gdcmpdf(1), gdcmscanner(1), gdcmtar(1).

08/07/2026 GDCM 3.0.24 DICOM Manipulation.