gdcmraw (1) Linux Manual Page
gdcmraw – .TH "gdcmraw" 1 "Fri Oct 29 2010" "Version 2.0.16" "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.rawYou 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
…In order to create a J2K image out of it, we need to extract each fragments and concatenate them:
(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
$ gdcmraw -i D_CLUNIE_CT1_J2KR.dcm -o D_CLUNIE_CT1_J2KR.j2kThis 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
…Let’s try to extract those 4 individual Lossless jpeg individually:
(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
$ gdcmraw –split-frags -i 00191113.dcm -o jpeg –pattern %02d.ljpegThis 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.
