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

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

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


DICOMファイルエンコーディングを変換します。
説明を飛ばしてやり方だけ知りたい方は、ページ最後を参照ください。

説明

 dcmconvユーティリティはDICOMファイルを読み取り、エンコーディング変換を実行し、変換されたデータを出力ファイルに書き込みます。
画像の圧縮や解凍に利用します。

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

>dcmconv [options] dcmfile-in dcmfile-out
  • dcmconv :コマンド
  • [options] :オプションを指定するデフォルト位置
  • dcmfile-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
          ロガーにコンフィグファイルを指定します。

インプットオプション


input file format:

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

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

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

input transfer syntax:

  -t=  --read-xfer-auto
         転送構文を認識する (default)

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

  -te  --read-xfer-little
         explicit VR little endianで読み込む

  -tb  --read-xfer-big
         explicit VR big endianで読み込む

  -ti  --read-xfer-implicit
         implicit VR little endianで読み込む

parsing of file meta information:

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

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

  +ao  --accept-odd-length
         奇数長の属性を許可する (default)

  +ae  --assume-even-length
         奇数長の属性に1byte加算して真の値を仮定する

handling of explicit VR:

  +ev  --use-explicit-vr
         explicit VRのデータセットを利用する (default)

  -ev  --ignore-explicit-vr
         explicit VRを無視する (data dictionaryを優先)

handling of non-standard VR:

  +vr  --treat-as-unknown
         非標準のVRはUnKnownとして取り扱う (default)

  -vr  --assume-implicit
         implicit VR little endianとして読み込みを試す

handling of defined length UN(Unknown) elements:

  -uc  --retain-un
         バイト長が定義されているUnknown属性のVRをUNのまま残す (default)

  +uc  --convert-un
         バイト長が定義されているUnknown属性のVRがわかれば、真のVRに変換する

handling of undefined length UN elements:

  +ui  --enable-cp246
         バイト長が未定義かつVRがUNの属性をimplicit VRとして読み込む (default)

  -ui  --disable-cp246
         バイト長が未定義かつVRがUNの属性をexplicit VRとして読み込む

handling of defined length UN elements:

  -uc  --retain-un
         バイト長が定義済みかつVRがUNの属性をUNとして取り扱う (default)

  +uc  --convert-un
         バイト長が定義済みかつVRがUNの属性を、もしVRがわかれば真のVRに変換する

handling of private max-length elements (implicit VR):

  -sq  --maxlength-dict
         dicom.dicの定義に従う (default)

  +sq  --maxlength-seq
         未定義のバイト長として読み込む

handling of wrong delimitation items(区切りアイテム属性の誤り):

  -rd  --use-delim-items
         データセットからの区切り項目を使用する (default)

  +rd  --replace-wrong-delim
         誤っているシーケンスの区切り項目(アイテム属性)を置き換える

handling of illegal undefined length OB/OW elements:

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

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

handling of VOI LUT Sequence with OW VR and explicit length(OW VRと明示的な長さのVOI LUTシーケンスの処理):

  -vi  --illegal-voi-rej
         不正なVOI LUTをもつデータセットを拒否する (default)

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

handling of explicit length pixel data for encaps. transfer syntaxes:

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

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

general handling of parser errors:

  +Ep  --ignore-parse-errors
         パースエラーのリカバーにトライする

  -Ep  --handle-parse-errors
         パースエラーを検出し、処理を中断する (default)

other parsing options:

  +st  --stop-after-elem  [t]ag: "gggg,eeee" or dictionary name
         タグ番号で要素を指定した後にパースを中断する

automatic data correction:

  +dc  --enable-correction
         自動データ補正を許可する (default)

  -dc  --disable-correction
         自動データ補正を許可しない

bitstream format of deflated input:

  +bd  --bitstream-deflated
         deflated bitstreamを使用 (default)

  +bz  --bitstream-zlib
         deflated zlib bitstreamを使用

処理オプション

specific character set:

  # the following options require support from an underlying character
  # encoding library (see output of --version on which one is available)

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

  +L1  --convert-to-latin1
         影響を受けた要素の値をISO 8859-1に変換する

  +A7  --convert-to-ascii
         影響を受ける要素の値を7ビットのASCIIに変換する

  +C   --convert-to-charset  [c]harset: string
         影響を受けた要素の値をDICOMで定義された用語cで指定された文字に変換する

  -Ct  --transliterate
     類似文字で表現できない文字の近似

  -Cd  --discard-illegal
         destinationの文字セットで表現できない文字を破棄する

other processing options:

  -ig  --no-invalid-groups
         無効なグループ番号を持つ要素を削除する

アウトプットオプション


output file format:

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

  +Fm  --write-new-meta-info
         新しいメタ情報を含むファイル形式を書き込む

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

output transfer syntax:

  +t=  --write-xfer-same
         入力と同じ転送構文で書き込み(デフォルト)

  +te  --write-xfer-little
         explicit VR little endianで書き込み

  +tb  --write-xfer-big
         explicit VR big endianで書き込み

  +ti  --write-xfer-implicit
         implicit VR little endianで書き込み

  +td  --write-xfer-deflated
         deflated explicit VR little endianで書き込み

  +tg  --write-xfer-ge
         big endian pixel dataを持つprivate GE implicit VR little endianを書き込む (non-standard)

post-1993 value representations:

  +u   --enable-new-vr
         新しいVR(UN/UT)のサポートを有効にする (default)

  -u   --disable-new-vr
         新しいVRのサポートを無効にし、VRをOBに変換する

group length encoding:

  +g=  --group-length-recalc
         もしあればグループ長を再計算する (default)

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

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

length encoding in sequences and items:

  +e   --length-explicit
         明示的なバイト長の書き込み (default)

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

  +eo  --write-oversized
         大きすぎる明示的な長さのシーケンスを書き込む
         未定義のバイト長でも。 (default)

  -eo  --abort-oversized
         大きすぎる明示的なシーケンス/アイテムは中断する

data set trailing padding (not with --write-dataset)(データセット末尾のパディング(--write-datasetではなく)):

  -p=  --padding-retain
         パディングを変更しない(デフォルト以外の場合は--write-dataset)

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

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

deflate compression level (only with --write-xfer-deflated)(圧縮レベルを収縮させます(--write-xfer-deflatedでのみ)):

  +cl  --compression-level  [l]evel: integer (default: 6)
         0 =非圧縮、1 =高速、9 =最適圧縮

使用例

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

サンプルデータが圧縮されている場合、変換できません(https://forum.dcmtk.org/viewtopic.php?t=739)。下記のコマンドプロンプトキャプチャ画面に例を示します。

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

>dcmconv +te C:\Users\tatsu\Desktop\NM_LEE_IR6.dcm C:\Users\tatsu\Desktop\NM_ExLEE_IR6.dcm

(コマンドの意味)
dcmconv :コマンド
+te :オプション
dcmfile-in:C:\Users\tatsu\Desktop\NM_LEE_IR6.dcm
dcmfile-out:C:\Users\tatsu\Desktop\NM_ExLEE_IR6.dcm

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

入力後、Enterで実行します。出力に設定しているNM_ExLEE_IR6.dcmファイルが新規作成されます。


CMD画面
(一行目に、JPEG圧縮画像からの変換でエラーキャッチ) 
(2度目のコマンドでImLEE→ExLEE変換)

左(原画像):Implicit VR Little Endian
右(変換後):Explicit VR Little Endian

Transfer Syntax UID
(原画像)1.2.840.10008.1.2 Implicit VR Endian(Default Transfer Syntax for DICOM.)
(変換後)1.2.840.10008.1.2.1 Explicit VR Little Endian

以上

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