スキップしてメイン コンテンツに移動

DCMTKを学ぶ - [dcmdump] dcmdata: a data encoding/decoding library and utility apps -

DCMTKを学ぶ - [dcmdump] dcmdata: a data encoding/decoding library and utility apps -

 dcmdumpユーティリティは、DICOMファイル(ファイル形式または生データセット)の内容をテキスト形式でstdoutにダンプします。つまり、コマンドプロンプトの場合は、コマンドプロンプト画面上に、DICOMファイルの内容がテキストで羅列されます。

 説明を飛ばしてやり方だけ知りたい方は、ページ最後を参照ください。

説明

 dcmdumpユーティリティは、DICOMファイル(ファイル形式または生データセット)の内容をテキスト形式でstdoutにダンプします。 非常に大きな値フィールド(例えば、ピクセルデータ)を有する属性は、「(not loaded)」とされます。文字列値のフィールドは角括弧([])で区切られます。このマッピングが明示的にオフにされない限り、既知のUIDは、等号(例えば、「= MRImageStorage」)を前に付けた名前によって表示されます。空の値フィールドは、 "no value available(使用可能な値はありません)"と記述されます。

 dcmdumpが生データセット(ファイル形式メタヘッダーなしのDICOMデータ)を読み取る場合、ファイルの最初の数バイトを調べて転送構文を推測しようとします。 転送構文を正しく推測することは必ずしも可能ではないため、可能な限りデータ・セットをファイル・フォーマットに変換する方がよいです(dcmconvユーティリティを使用して下さい)。また、-fおよび-t [ieb]オプションを使用して、dcmdumpに特定の転送構文を持つデータセットを強制的に読み取らせることもできます。

コマンドラインインターフェースからの基本的な使い方

>dcmdump [options] dcmfile-in...
  • dcmdump :コマンド
  • [options] :オプションを指定するデフォルト位置
  • dcmfile-in:入力されるdcmファイルのURI/URL (複数のDICOMファイルを保持するディレクトリでも可)

一般的なオプション


(左:省略記載、右:略なし記載)
  -h    --help
          この機能のヘルプを表示します

 --version
          この機能に必要なライブラリを含めてバージョンを表示します

 --arguments
          コマンドライン引数を拡張します

  -q    --quiet
          クワイエットモード。エラーやワーニングを表示しません

  -v    --verbose
          詳細モード。詳細ログを表示します

  -d    --debug
          デバッグモード。デバッグ情報を表示します

  -ll    --log-level  [l]evel: string constant (fatal, error, warn, info, debug, trace)
         ロガーレベルを指定します

  -lc   --log-config  [f]ilename: string
          ロガーにコンフィグファイルを指定します。

インプットオプション


input file format:

  +f   --read-file
         ファイルフォーマットまたはデータセットを読み取る(default)

  +fo  --read-file-only
         ファイルフォーマットのみ読み取る

  -f   --read-dataset
         ファイルメタ情報を除くデータセットを読み取る
input transfer syntax:

  -t=  --read-xfer-auto
         転送構文を認識する (デフォルト)

  -td  --read-xfer-detect
         ファイルメタヘッダーで指定された転送構文を無視する

  -te  --read-xfer-little
         明示的なVRリトルエンディアンで読み取る

  -tb  --read-xfer-big
         明示的なVRビッグエンディアンで読み込み

  -ti  --read-xfer-implicit
         暗黙VRリトルエンディアンで読み込み

input files:

  +sd  --scan-directories
         入力ファイルのディレクトリをスキャンする(dcmfile-in)

  +sp  --scan-pattern  [p]attern: string (--scan-directoriesを利用時のみ)
         ファイル名の一致のためのパターン(ワイルドカード)

         #すべてのシステムで利用可能ではありません

  -r   --no-recurse
         ディレクトリ内で再帰しない(デフォルト)

  +r   --recurse
         指定したディレクトリ内で再帰する

long tag values:

  +M   --load-all
         非常に長いタグ値を読み込む(デフォルト)

  -M   --load-short
         非常に長い値(例えばピクセルデータ)をロードしない

  +R   --max-read-length  [k]bytes: integer (4..4194302, default: 4)
         long値のしきい値をk kbytesに設定する

parsing of file meta information(ファイルメタ情報の解析):

  +ml  --use-meta-length
         ファイルメタ情報グループ長を使用する(デフォルト)

  -ml  --ignore-meta-length
         ファイルメタ情報グループ長を無視する

parsing of odd-length attributes:

  +ao  --accept-odd-length
         奇数長の属性を受け入れる(デフォルト)

  +ae  --assume-even-length
         実際の長さを1バイト大きくする(偶数長にする)

handling of explicit VR:

  +ev  --use-explicit-vr
         データセットから明示的なVRを使用する(デフォルト)

  -ev  --ignore-explicit-vr
         明示的なVRを無視する(データ辞書を優先する)

handling of non-standard VR:

  +vr  --treat-as-unknown
         非標準VRを未知(UN)として扱う(デフォルト)

  -vr  --assume-implicit
         暗黙のVRリトルエンディアンでの読み込みをトライする

handling of undefined length UN elements:

  +ui  --enable-cp246
         暗黙のVRとして未定義のlen UNを読み込み(デフォルト)

  -ui  --disable-cp246
         明示的なVRとして未定義のlen UNを読み込み

定義された長さのUN(Unknown)要素の処理:

  -uc  --retain-un
         要素をUNとして保持する(デフォルト)

  +uc  --convert-un
         既知の場合は真のVRに変換する

プライベート最大長要素の処理(暗黙的VR):

  -sq  --maxlength-dict
         辞書に定義されているように読む(デフォルト)

  +sq  --maxlength-seq
         定義されていない長さのシーケンスとして読み取る

間違った区切りアイテムの処理:

  -rd  --use-delim-items
         データセットからの区切りアイテムを使用する(デフォルト)

  +rd  --replace-wrong-delim
         間違ったシーケンス/アイテム区切りアイテムを置き換える

不正な未定義の長さのOB/OW要素の処理:

  -oi  --illegal-obow-rej
         不正な要素を含むデータセットを拒否する(デフォルト)

  +oi  --illegal-obow-conv
         定義されていない長さのOB / OW要素をSQに変換する

OW VRと明示的な長さのVOI LUTシーケンスの処理:

  -vi  --illegal-voi-rej
         不正なVOI LUTのデータセットを拒否する(デフォルト)

  +vi  --illegal-voi-conv
         不正なVOI LUTをSQに変換する

カプセル化のための明示的な長さのピクセルデータの処理、転送構文:

  -pe  --abort-expl-pixdata
         明示的な長さのピクセルデータで中断する(デフォルト)

  +pe  --use-expl-pixdata
         明示的な長さのピクセルデータを使用する

general handling of parser errors(解析エラー処理):

  +Ep  --ignore-parse-errors
         解析エラーから回復しようとする

  -Ep  --handle-parse-errors
         解析エラーを処理し、解析を停止する(デフォルト)

その他の解析オプション:

  +st  --stop-after-elem  [t]ag: "gggg,eeee" or dictionary name
         tで指定された要素の後に解析を停止する

  +sb  --stop-before-elem [t]ag: "gggg,eeee" or dictionary name
         tで指定された要素の前に解析を停止する

  • メインデータセットレベルの要素のみを考慮し、指定されたタグがファイルに存在しない場合にも機能します

自動データ補正:

  +dc  --enable-correction
         自動データ補正を有効にする(デフォルト)

  -dc  --disable-correction
         自動データ補正を無効にする

bitstream format of deflated input(収縮した入力のビットストリーム形式):

  +bd  --bitstream-deflated
         収縮したビットストリームを利用する(デフォルト)

  +bz  --bitstream-zlib
         収縮したzlibビットストリームを利用する

処理オプション


特定の文字セット:

   + U8 --convert-to-utf8
          特定の文字セット(0008,0005)の影響を受けるすべての要素値をUTF-8に変換する

  • 基礎となる文字エンコーディングライブラリからのサポートが必要(使用できる--versionの出力を参照)例えば、libiconvなど

アウトプットオプション


printing(出力の表示):

  +L   --print-all
         長いタグ値を完全に表示する

  -L   --print-short
         長いタグ値を短く表示する(デフォルト)

  +T   --print-tree
         単純なツリーとして階層構造を表示する

  -T   --print-indented
         インデントによる階層構造を表示する(デフォルト)

  +F   --print-filename
         各入力ファイルのファイル名を含むヘッダを出力する

  +Fs  --print-file-search
         検索するタグ1つを含むこれらの入力ファイルのファイル名のみを含むヘッダを出力する

mapping:

  +Un  --map-uid-names
         既知のUID番号を名前にマップする(デフォルト)

  -Un  --no-uid-names
         UID番号を名前にマップしない

quoting(引用):

  +Qn  --quote-nonascii
         ASCII以外の文字を引用し、XMLマークアップとして文字を制御する

  +Qo  --quote-as-octal
         非ASCIIを引用し、8進数として制御文字を引用する

  -Qn  --print-nonascii
         非ASCII文字と制御文字を出力する(デフォルト)

color:

  +C   --print-color
         カラー出力にANSIエスケープコードを使用する

         # Windows systemsでは利用不可

  -C   --no-color
         ANSIエスケープコードを使用しない(デフォルト)

         # Windows systemsでは利用不可

error handling:

  -E   --stop-on-error
         ファイルが破損している場合は表示しない(デフォルト)

  +E   --ignore-errors
         ファイルが破損しても表示しようとする

searching:

  +P   --search  [t]ag: "gggg,eeee" or dictionary name
         タグtのテキストダンプを出力する
         このオプションは複数回指定できます
         (デフォルト:完全なファイルが表示されます)

  +s   --search-all
         検索されたタグのすべてのインスタンスを表示する(デフォルト)

  -s   --search-first
         検索されたタグの最初のインスタンスのみを表示する

  +p   --prepend
          シーケンス階層を表示タグに付加
         :(gggg、eeee).(gggg、eeee).*と続けて表示されます
         (--searchとともに使用する場合のみ)

  -p   --no-prepend
         タグに階層を追加しない(デフォルト)

writing:

  +W   --write-pixel  [d]irectory: string
         dに格納された.rawファイルにピクセルデータを書き込む
         (リトルエンディアンでの書き込み、自動的にファイル名作成)

補足

 コマンドラインにパラメータとしてディレクトリを追加することは、オプション-scan-directoriesも指定した場合にのみ有効です。
 指定されたディレクトリ内のファイルを特定の名前パターン(ワイルドカードマッチングなど)に従って選択する必要がある場合は、オプション-scan-patternを使用する必要があります。
 このファイルパターンは、スキャンされたディレクトリ内のファイルにのみ適用され、-scan-patternオプション以外のコマンドラインで他のパターンが指定されている場合(たとえば、さらにファイルを選択する場合など)、これらは指定されたディレクトリには適用されません。

使用例

サンプルDICOMデータ:http://www.jira-net.or.jp/dicom/dicom_data_01_03.html
NM_LEE_IR6.dcm

サンプルデータをデスクトップに移動しておきます。
コマンドプロンプトで、次のように入力しました。

>dcmdump +T C:\Users\tatsu\Desktop\NM_LEE_IR6.dcm

(コマンドの意味)
dcmdrle :コマンド
+T :階層構造ツリー表示オプション
dcmfile-in:C:\Users\tatsu\Desktop\NM_LEE_IR6.dcm

※コマンドとオプションの間、もしコマンドがあれば、オプションとdcmfile-inの間には半角スペースを入れてください。

入力後、Enterで実行します。入力されたDICOMファイルの詳細な情報が表示されます。

 CMD画面

以上

Visionary Imaging Services, Inc.
Tatsuaki Kobayashi

コメント

このブログの人気の投稿

DCMTKをインストールする

DCMTKをインストールする DCMTKをインストールするために、まずDICOM@OFFISのWebサイト( http://dicom.offis.de/dcmtk.php.en )から自分のPCのOSに合ったDCMTK3.6.2をダウンロードします。 ダウンロードするDCMTKのリスト(OS別) 本書ではWindows10(64bit)に合わせ、 DCMTK 3.6.2 - executable binariesのリストの dcmtk-3.6.2-win64-dynamic.zip をダウンロードします。 ダウンロード後は、zipファイルを解凍します。解凍には特別なツールは不要で、zipファイルを右クリックして、「すべて展開」を選択するだけです。 ダウンロード後(ダウンロードフォルダ)  右クリックで「すべて展開」  展開先を指定(同じダウンロードフォルダ)  展開後 展開できたら、わかりやすいところにフォルダを移動しましょう。私の場合は ユーザフォルダ「tatsu」の中に移動しました。読者の方も、自分の好きなフォルダに移動しましょう。例えば、デスクトップでも構いません。  ユーザフォルダ内にDCMTKフォルダを移動した例 次はDCMTKの場所をPCに知らせるために、環境変数パスを設定します。 設定が必要な環境変数は2つです。 ~DCMTKフォルダ/bin (DCMTKの実体となるバイナリまでのパス) ~DCMTKフォルダ/share/dcmtk/dicom.dic (DCMTKの特定の機能で必要なDICOMタグ辞書) 設定は次のように行います。 まず、フォルダを開き、左側のツリー表示内の「PC」を右クリックし、最下段のプロパティを選択します。 プロパティを選択  次に、画面左側のシステムの詳細設定を選択します。  立ち上がったシステム画面からシステムの詳細設定を選択 システムのプロパティウィンドウが立ち上がりますので、その下段の環境変数を選択します。 環境変数を選択 環境変数ウィンドウが起動します。 環境変数ウィンドウ 次に、環境変数を追加します。追加は、下段の新規ボタンから行います。 新規

はじめに-DCMTK-

はじめに  このブログでは、DCMTK(v.3.6.2)のパッケージに含まれるコマンドラインツールの使い方を紹介していきます。  今回、DCMTKを理解して、より身近なツールにしたいという個人的なモチベーションでこのブログを書き始めました。  DCMTK(DICOM Toolkit)は、その名の通り、医用画像の国際標準規格であるDICOMとして作成された画像を取り扱うためのコマンドラインインターフェースで操作するツールで、ANSI C/C++で書かれたオープンソースソフトウェアです。 DICOMイメージファイルの検証、構築、変換、オフラインメディアの処理、ネットワーク接続を介したイメージの送受信、およびテスト用のイメージストレージとワークリストサーバーのソフトウェアが含まれています。  私がDCMTKに出会ったのは、もうDCMTKが成熟していたバージョン3.6.0の時でした。(この記事を執筆時点の最新バージョンは3.6.2)。  初めて使ったのは、仕事でDICOM接続テストに同行させていただいた時でした。 私はすっかりGUI(グラフィカルユーザーインターフェース)に慣れ親しんでいたので、DCMTKのようにCLI(コマンドラインインターフェース)で動作させるツールは使い方がわからないので、四苦八苦しました。  DCMTKを使いはじめ、徐々にそのすごさがわかってきました。例えば、OsiriXなどのソースなどを見ていると、直接DCMTKが利用されているではありませんか。このようなことから、きっとこのツールを使えることで得られるメリットは多いのではないかと感じるようになりました。  そして、よし、もっと使おう!と、ここも非常に単純に決めたのはいいものの、リファレンスは全て英語で、うまく動かなかったりという技術的につまづくことが多く、この点はとてもペインフルでした。  このような経験から、私のような痛みなく、このツールを使える人が増えて欲しいという単純な発想で、この技術ブログを書き始めました。  このブログを読んでいただく中で私の間違いに気づいてくださる読者の方もいらっしゃるだろうと思いつつも、自分の最初の直感"きっとこのツールを使えることで得られるメリットは多いのではないか"という気持ちを大切にしたいと考え、このキー