gdcmraw

Langue: en

Version: 334543 (ubuntu - 24/10/10)

Section: 1 (Commandes utilisateur)

NAME

gdcmraw - .TH "gdcmraw" 1 "Thu Sep 16 2010" "Version 2.0.15" "GDCM"

NAME

gdcmraw - .SH "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

PARAMETERS

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

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

JPEG Lossy 8bits
JPEG Lossy 12bits
JPEG Lossless 2-16bits

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

SEE ALSO

gdcmdump(1), gdcmraw(1)

Copyright (c) 2006-2010 Mathieu Malaterre