<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl-ns/current/manpages/docbook.xsl" ?>
<!DOCTYPE Data [ <!ENTITY version SYSTEM 'version.txt'> ]>
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<info>
<author><personname><firstname>Mathieu</firstname><surname>Malaterre</surname></personname><contrib>Main developer</contrib></author>
<copyright><year>2006</year><year>2011</year><holder>Mathieu Malaterre</holder></copyright>
</info>
  <refmeta>
    <refentrytitle>gdcmraw</refentrytitle>
    <manvolnum>1</manvolnum>
    <refmiscinfo class="source">GDCM</refmiscinfo>
    <refmiscinfo class="version">&version;</refmiscinfo>
    <refmiscinfo class="manual">DICOM Manipulation.</refmiscinfo>
  </refmeta>
  <refnamediv><refname>gdcmraw</refname>
    <refpurpose>Extract Data Element Value Field.</refpurpose>
</refnamediv>
<refsection xml:id="gdcmraw_1synopsis">
<title>SYNOPSIS</title>

<para><literallayout>gdcmraw [options] file-in file-out
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1description">
<title>DESCRIPTION</title>

<para>The <emphasis role="bold">gdcmraw</emphasis> tool is mostly used for development purpose. It is used to extract a specific binary field from a DICOM DataSet.</para>
</refsection>
<refsection xml:id="gdcmraw_1parameters">
<title>PARAMETERS</title>

<para><literallayout>file-in   DICOM input filename

file-out  output filename
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1options">
<title>OPTIONS</title>

<para><literallayout>  -i --input     Input filename
  -o --output    Output filename
  -t --tag       Specify tag to extract value from.
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1specific_options">
<title>specific options</title>

<para><literallayout>  -S --split-frags  Split fragments into multiple files.
  -p --pattern      Specify trailing file pattern (see split-frags).
  -P --pixel-data   Pixel Data trailing 0.
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1general_options">
<title>general options</title>

<para><literallayout>  -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
</literallayout></para>
</refsection>
<refsection xml:id="gdcmviewer_1usage">
<title>Typical usage</title>
<refsection xml:id="gdcmraw_1copy_attribute">
<title>Copy Attribute Value to file</title>

<para>This will extract the value at Tag (0025,101b):</para>

<para><literallayout>$ gdcmraw -i GE_MR_0025xx1bProtocolDataBlock.dcm -t 25,101b -o pdb.raw
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1extract_pixeldata">
<title>Extract Pixel Data</title>

<para>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:</para>

<para><literallayout>$ gdcmraw -i test.acr -o test.raw
</literallayout></para>

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

<para><literallayout>$ md5sum test.raw
f845c8f283d39a0204c325654493ba53  test.raw
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1encapsulated_syntax">
<title>Encapsulated Syntax</title>

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

<para><literallayout>$ gdcmdump D_CLUNIE_CT1_J2KR.dcm
</literallayout></para>

<para><literallayout>...
(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
</literallayout></para>

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

<para><literallayout>$ gdcmraw -i D_CLUNIE_CT1_J2KR.dcm -o D_CLUNIE_CT1_J2KR.j2k
</literallayout></para>

<para>This is a valid J2K file, using the Kakadu software package:</para>

<para><literallayout>$ kdu_expand -i D_CLUNIE_CT1_J2KR.j2k -o D_CLUNIE_CT1_J2KR.tiff -record D_CLUNIE_CT1_J2KR.txt
</literallayout></para>

<para><literallayout>$ cat D_CLUNIE_CT1_J2KR.txt
</literallayout></para>

<para><literallayout>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

&gt;&gt; New attributes for tile 0:
</literallayout></para>
</refsection>
<refsection xml:id="gdcmraw_1extract_fragments">
<title>Extract fragments as single file</title>

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

<para><literallayout>$ gdcmdump 00191113.dcm
</literallayout></para>

<para><literallayout>...
(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
</literallayout></para>

<para>Let&apos;s try to extract those 4 individual Lossless jpeg individually:</para>

<para><literallayout>$ gdcmraw --split-frags -i 00191113.dcm -o jpeg --pattern %02d.ljpeg
</literallayout></para>

<para>This will output 4 files:</para>

<para><literallayout>-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
</literallayout></para>
</refsection>
</refsection>
<refsection xml:id="gdcmraw_1footnote">
<title>Footnote about JPEG files</title>

<para>It is a common misunderstanding to interchange &apos;JPEG 8bits lossy&apos; with simply JPEG file. The JPEG specification is much broader than simply the common lossy 8bits file (as found on internet).</para>

<para>You can have:</para>

<para><itemizedlist>
<listitem>
<para>JPEG Lossy 8bits </para>
</listitem>
<listitem>
<para>JPEG Lossy 12bits </para>
</listitem>
<listitem>
<para>JPEG Lossless 2-16bits</para>
</listitem>
</itemizedlist>
Those are what is defined in ITU-T T.81, ISO/IEC IS 10918-1.</para>
</refsection>
<refsection xml:id="gdcmraw_1see_also">
<title>SEE ALSO</title>

<para><emphasis role="bold">gdcmdump</emphasis>(1), <emphasis role="bold">gdcmraw</emphasis>(1)</para>
</refsection>
</refentry>
