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

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

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

標準的な画像形式をDICOMフォーマットに変換します。
説明を飛ばしてやり方だけ知りたい方は、ページ最後を参照ください。

説明

 img2dcmツールは、JPEGやBMPのような標準的な画像フォーマットからDICOMへの変換ツールとして機能します。

 異なるSOPクラスを選択できます。

 DICOM出力ファイルに格納されている追加情報(患者、シリーズなど)は、DICOMオブジェクトの「テンプレート」として機能する他のDICOMファイルから抽出することができます。

 img2dcmは、欠落しているDICOMタイプ1およびタイプ2の属性(つまり、必須のタグ)を生成して、テンプレートデータセットなしでも機能するように構成することもできます。

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

>img2dcm [options] imgfile-in dcmfile-out
  • img2dcm :コマンド
  • [options] :オプションを指定するデフォルト位置
  • imgfile-in:入力されるdcmファイルのURI/URL 
  • dcmfile-out:出力されるdcmファイルのURI/URL

一般的なオプション

(左:省略記載、右:略なし記載)
  -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
          ロガーにコンフィグファイルを指定します。

インプットオプション


general:

  -i    --input-format  [i]nput file format: string
          サポートされているフォーマット:JPEG(デフォルト)、BMP

  -df   --dataset-from  [f]ilename: string
          DICOMファイルfからのデータセットを使用する

  -stf  --study-from  [f]ilename: string
          DICOMファイルfから患者/スタディを読む

  -sef  --series-from  [f]ilename: string
          DICOMファイルfから患者/スタディ/シリーズを読む

  -ii   --instance-inc
          DICOMファイルから読み取ったインスタンス番号を増やす

JPEG format:

  -dp   --disable-progr
          プログレッシブJPEGのサポートを無効にする

  -de   --disable-ext
          拡張シーケンシャルJPEGのサポートを無効にする

  -jf   --insist-on-jfif
          JFIFヘッダーの存在を主張する

  -ka   --keep-appn
          APPNセクションを維持する(JFIFを除く)

処理オプション

attribute checking:

        --do-checks
          属性の有効性チェックを有効にする(デフォルト)

        --no-checks
          属性の有効性チェックを無効にする

  +i2   --insert-type2
          欠落しているタイプ2の属性を挿入する(デフォルト)
           (--do-checksでのみ)

  -i2   --no-type2-insert
          欠落しているタイプ2属性を挿入しない
           (--do-checksでのみ)

  +i1   --invent-type1
          欠損タイプ1の属性を作成する
           (--do-checksでのみ)

  -i1   --no-type1-invent
           欠落しているタイプ1の属性を作成しない
           (--do-checksでのみ)

character set:

  +l1   --latin1
          標準文字セットとしてlatin-1を設定する(デフォルト)

  -l1   --no-latin1
          標準文字セットとして7ビットASCIIを保持する

other processing options:

  -k    --key  [k]ey: gggg,eeee="str", path or dictionary name="str"
          さらなる属性を追加する

アウトプットオプション


target SOP class:

  -sc   --sec-capture
         セカンダリキャプチャSOPクラスを作成する

  -nsc  --new-sc
          新しいセカンダリキャプチャSOPクラスを作成する

  -vlp  --vl-photo
          Visible Light Photographic SOPクラスを書き込み(デフォルト)

output file format:

  +F    --write-file
          ファイル形式を書き込む(デフォルト)

  -F    --write-dataset
          ファイルメタ情報なしでデータセットを書き込む

グループ長エンコーディング:

  +g=   --group-length-recalc
          グループ長を再計算する(デフォルト)

  +g    --group-length-create
          常にグループの長さの要素で書き込む

  -g    --group-length-remove
          グループ長要素なしで常に書き込み

length encoding in sequences and items:

  +e    --length-explicit
          明示的な長さの書き込み(デフォルト)

  -e    --length-undefined
          定義されていない長さの書き込み

データセット末尾のパディング(--write-datasetではなく):

  -p    --padding-off
          パディングなし(暗黙的に--write-datasetの場合)

  +p    --padding-create  [f]ile-pad [i]tem-pad: integer
          ファイルを複数のfバイトに整列させ、項目を複数のiバイトに整列させる

使用例

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

サンプル2:BMPデータ:Lenaの画像をImageJを用いてBMP(8 bit)に変換して保存。マトリクスは512*512とする。

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

>img2dcm -i BMP -sef C:\Users\tatsu\Desktop\CT_LEE_IR6a.dcm +i2 +i1 C:\Users\tatsu\Desktop\lena-std.bmp C:\Users\tatsu\Desktop\LENA

(コマンドの意味)
img2dcm :コマンド
-i BMP :オプション(BMP画像を読み取る際に必要なオプション)
-sef C:\Users\tatsu\Desktop\CT_LEE_IR6a.dcm:オプション(患者/スタディ/シリーズメタデータをコピーする元データの指定)
+i2 +i1:オプション(タイプ1、2のタグを作成)
imgfile-in:C:\Users\tatsu\Desktop\lena-std.bmp
dcmfile-out:C:\Users\tatsu\Desktop\LENA

※コマンドとオプションの間、オプションとdcmfile-inの間、また、imgfile-in と dcmfile-outのパスの間には半角スペースを入れてください。

入力後、Enterで実行します。出力に設定しているLENA(DCMファイル)がデスクトップに新規作成されます。

ImageJで LENA(DCMファイル)を確認すると、メタデータがコピーされていることがわかります。カラーモデルは維持されます。

CMD画面

DCMしたBMP画像

以上

Visionary Imaging Services, Inc.
Tatsuaki Kobayashi

コメント

このブログの人気の投稿

はじめに-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が利用されているではありませんか。このようなことから、きっとこのツールを使えることで得られるメリットは多いのではないかと感じるようになりました。  そして、よし、もっと使おう!と、ここも非常に単純に決めたのはいいものの、リファレンスは全て英語で、うまく動かなかったりという技術的につまづくことが多く、この点はとてもペインフルでした。  このような経験から、私のような痛みなく、このツールを使える人が増えて欲しいという単純な発想で、この技術ブログを書き始めました。  このブログを読んでいただく中で私の間違いに気づいてくださる読者の方もいらっしゃるだろうと思いつつも、自分の最初の直感"きっとこのツールを使えることで得られるメリットは多いのではないか"という気持ちを大切にしたいと考え、このキー

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を学ぶ - [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    --h