dcm2img: DICOM画像を標準的な画像形式へ変換する
書式
dcm2img [options] dcmfile-in [bitmap-out]
説明
dcm2img は DICOM 画像を読み込み、選択した画像処理オプションに従ってピクセルデータを変換し、次のいずれかの汎用画像形式で書き出すユーティリティです。対応形式は BMP、PGM/PPM、PNG、TIFF、JPEG、JPEG-LS。非圧縮の DICOM 画像に加え、JPEG、JPEG-LS、RLE で圧縮された DICOM 画像にも対応します。
引数
dcmfile-in DICOM input filename to be converted ("-" for stdin)
bitmap-out output filename to be written (default: stdout)
オプション
全般オプション
-h --help- このヘルプを表示して終了します
--version- バージョン情報を表示して終了します
--arguments- 展開後のコマンドライン引数を表示します
-q --quiet- quiet モード。警告やエラーを表示しません
-v --verbose- 詳細表示モード。処理の詳細を表示します
-d --debug- デバッグモード。デバッグ情報を表示します
-ll --log-level [l]evel: string constant- ロガーにレベル l を使います(fatal, error, warn, info, debug, trace)
-lc --log-config [f]ilename: string- ロガーに設定ファイル f を使います
入力オプション
+f --read-file- ファイル形式またはデータセットとして読み込みます(既定値)
+fo --read-file-only- ファイル形式のみを読み込みます
-f --read-dataset- ファイルメタ情報なしのデータセットとして読み込みます。入力転送構文:
-t= --read-xfer-auto- 転送構文(TS)の自動認識を使います(既定値)
-td --read-xfer-detect- ファイルメタヘッダで指定された TS を無視します
-te --read-xfer-little- explicit VR little endian の TS として読み込みます
-tb --read-xfer-big- explicit VR big endian の TS として読み込みます
-ti --read-xfer-implicit- implicit VR little endian の TS として読み込みます
画像処理オプション
+F --frame [n]umber: integer- 指定したフレームを選びます(既定値: 1)
+Fr --frame-range [n]umber [c]ount: integer- フレーム n から c 枚を選びます
+Fa --all-frames- すべてのフレームを選びます。回転:
+Rl --rotate-left- 画像を左に回転します(-90度)
+Rr --rotate-right- 画像を右に回転します(+90度)
+Rtd --rotate-top-down- 画像を上下反転で回転します(180度)。反転:
+Lh --flip-horizontally- 画像を水平方向に反転します
+Lv --flip-vertically- 画像を垂直方向に反転します
+Lhv --flip-both-axes- 画像を水平・垂直の両方向に反転します。拡大縮小:
+a --recognize-aspect- 拡大縮小時にピクセル縦横比を考慮します(既定値)
-a --ignore-aspect- 拡大縮小時にピクセル縦横比を無視します
+i --interpolate [n]umber of algorithm: integer- 拡大縮小時に補間を使います(1..4、既定値: 1)
-i --no-interpolation- 拡大縮小時に補間しません
-S --no-scaling- 拡大縮小しません。ピクセル縦横比を無視します(既定値)
+Sxf --scale-x-factor [f]actor: float- x 軸を係数で拡大縮小し、y 軸を自動計算します
+Syf --scale-y-factor [f]actor: float- y 軸を係数で拡大縮小し、x 軸を自動計算します
+Sxv --scale-x-size [n]umber: integer- x 軸を n ピクセルに拡大縮小し、y 軸を自動計算します
+Syv --scale-y-size [n]umber: integer- y 軸を n ピクセルに拡大縮小し、x 軸を自動計算します。色空間変換(JPEG 圧縮画像のみ):
+cp --conv-photometric- photometric interpretation が YCbCr の場合に変換します(既定値)
+cl --conv-lossy- 非可逆 JPEG の場合に YCbCr を RGB へ変換します
+cg --conv-guess- ライブラリが YCbCr と推定した場合に RGB へ変換します
+cgl --conv-guess-lossy- 非可逆 JPEG かつ基盤の JPEG ライブラリが YCbCr と推定した場合に RGB へ変換します
+ca --conv-always- YCbCr を常に RGB へ変換します
+cn --conv-never- 色空間を変換しません。bits stored:
+bs --bits-stored-fix- 不整合な bits stored の値を補正します(既定値) # 圧縮ビットストリーム中の BitsStored の値が # DICOM データセットの値より小さい場合、データセット側の値を # 更新します(JPEG 圧縮画像のみ)
-bs --bits-stored-keep- 不整合な bits stored の値をそのまま保持します # 圧縮ビットストリームと矛盾していても BitsStored の値を保持します。 # 一部の不良画像を正しくデコードする助けになることがあります(JPEG 圧縮画像のみ)。不正なエンコーディングへの回避オプション(JPEG 圧縮画像のみ):
+w6 --workaround-pred6- 予測子6のオーバーフローを伴う JPEG ロスレス画像への回避策を有効にします # 16 ビット/ピクセルの DICOM 画像で、ロスレス JPEG により圧縮され # 特別な処理を要するものが実際に存在します。エンコーダが予測子6で # 16 ビット整数オーバーフローを生じており、展開時にこれを補正(再現) # する必要があるためです。 # このフラグはそうした不良画像を正しく展開できるようにしますが、 # 同時に正しく圧縮された画像を誤って展開する原因になります。注意して使ってください。
+wi --workaround-incpl- 不完全な JPEG データへの回避策を有効にします # このオプションを使うと、dcm2img は圧縮フラグメント末尾の不完全な # JPEG データを無視し、(あれば)次のフラグメントから次フレームの # 展開を始めます。これにより JPEG データが不完全な画像でもデコードできます。
+wc --workaround-cornell- Huffman テーブルのオーバーフローを伴う 16 ビット JPEG ロスレス Cornell 画像への回避策を有効にします # ロスレス JPEG 圧縮の最初期のオープンソース実装の一つである # "Cornell" ライブラリには、16 ビット/サンプルの画像を圧縮すると # Huffman テーブルに不正な値を生じる既知のバグがあります。 # このフラグはそうした画像を正しくデコードできる回避策を有効にします。modality LUT 変換:
-M --no-modality- 保存された modality LUT 変換を無視します
+M --use-modality- modality LUT 変換を使います(既定値)。VOI LUT 変換:
-W --no-windowing- VOI ウィンドウイングを行いません(既定値)
+Wi --use-window [n]umber: integer- 画像ファイル内の n 番目の VOI ウィンドウを使います
+Wl --use-voi-lut [n]umber: integer- 画像ファイル内の n 番目の VOI ルックアップテーブルを使います
+Wm --min-max-window- min-max アルゴリズムで VOI ウィンドウを計算します
+Wn --min-max-window-n- 極端な値を無視し、min-max アルゴリズムで VOI ウィンドウを計算します
+Wr --roi-min-max-window [l]eft [t]op [w]idth [h]eight: integer- min-max アルゴリズムで ROI ウィンドウを計算します。関心領域は l,t,w,h で指定します
+Wh --histogram-window [n]umber: integer- ヒストグラムアルゴリズムで VOI ウィンドウを計算します。n パーセントを無視します
+Ww --set-window [c]enter [w]idth: float- 中心 c と幅 w で VOI ウィンドウを計算します
+Wfl --linear-function- VOI LUT 関数を LINEAR に設定します
+Wfs --sigmoid-function- VOI LUT 関数を SIGMOID に設定します。presentation LUT 変換:
+Pid --identity-shape- presentation LUT shape を IDENTITY に設定します
+Piv --inverse-shape- presentation LUT shape を INVERSE に設定します
+Pod --lin-od-shape- presentation LUT shape を LIN OD に設定します。オーバーレイ:
-O --no-overlays- オーバーレイを表示しません
+O --display-overlay [n]umber: integer- オーバーレイ n を表示します(0..16、0=すべて、既定値: +O 0)
+Omr --ovl-replace- オーバーレイモード "Replace" を使います(Graphic オーバーレイの既定値)
+Omt --ovl-threshold- オーバーレイモード "Threshold Replace" を使います
+Omc --ovl-complement- オーバーレイモード "Complement" を使います
+Omv --ovl-invert- オーバーレイモード "Invert Bitmap" を使います
+Omi --ovl-roi- オーバーレイモード "Region of Interest" を使います(ROI オーバーレイの既定値)
+Osf --set-foreground [d]ensity: float- オーバーレイ前景の濃度を設定します(0..1、既定値: 1)
+Ost --set-threshold [d]ensity: float- オーバーレイのしきい値濃度を設定します(0..1、既定値: 0.5)。display LUT 変換:
+Dm --monitor-file [f]ilename: string- f で定義したモニタ特性に従って出力を校正します
+Dp --printer-file [f]ilename: string- f で定義したプリンタ特性に従って出力を校正します
+Da --ambient-light [a]mbient light: float- 環境光の値(cd/m^2、既定値: ファイル f)
+Di --illumination [i]llumination: float- 照度の値(cd/m^2、既定値: ファイル f)
+Dn --min-density [m]inimum optical density: float- Dmin の値(既定値: off、+Dp と併用時のみ)
+Dx --max-density [m]aximum optical density: float- Dmax の値(既定値: off、+Dp と併用時のみ)
+Dg --gsd-function- 校正に GSDF を使います(+Dm/+Dp の既定値)
+Dc --cielab-function- 校正に CIELAB 関数を使います。互換性:
+Ma --accept-acr-nema- photometric interpretation のない ACR-NEMA 画像を受け入れます
+Mp --accept-palettes- 不正なパレット属性タグ (0028,111x) と (0028,121x) を受け入れます
+Mc --check-lut-depth- LUT 記述子の3番目の値を確認し、LUT データに基づく期待ビット深度と比較します
+Mm --ignore-mlut-depth- modality LUT 記述子の3番目の値を無視し、テーブル要素あたりのビット数を自動判定します
+Mv --ignore-vlut-depth- VOI LUT 記述子の3番目の値を無視し、テーブル要素あたりのビット数を自動判定します。TIFF 形式:
+Tl --compr-lzw- LZW 圧縮(既定値)
+Tr --compr-rle- RLE 圧縮
+Tn --compr-none- 非圧縮
+Pd --predictor-default- LZW 予測子を使いません(既定値)
+Pn --predictor-none- LZW 予測子 1(予測なし)
+Ph --predictor-horz- LZW 予測子 2(水平方向の差分)
+Rs --rows-per-strip [r]ows: integer (default: 0)- ストリップあたりの行数。既定値はストリップあたり 8K。PNG 形式:
+il --interlace- インターレースファイルを作成します(既定値)
-il --nointerlace- 非インターレースファイルを作成します
+mf --meta-file- PNG ファイルメタ情報を作成します(既定値)
-mf --meta-none- PNG ファイルメタ情報を作成しません。JPEG 形式:
+Jq --compr-quality [q]uality: integer (0..100, default: 90)- 圧縮の品質値(パーセント)
+Js4 --sample-444- 4:4:4 サンプリング(サブサンプリングなし)
+Js2 --sample-422- 4:2:2 サブサンプリング(クロマ成分の水平方向サブサンプリング、既定値)
+Js1 --sample-411- 4:1:1 サブサンプリング(クロマ成分の水平・垂直方向サブサンプリング)。JPEG-LS 形式:
+Trl --rendered-lossless- レンダリング後画像のロスレス圧縮(既定値)
+Tll --true-lossless- 生画像のロスレス圧縮
+f8 --force-8-bit- 出力ビット深度を 8 ビットに固定します(--true-lossless とは併用不可)。その他の変換:
+G --grayscale- カラー画像をグレースケール(モノクロ)に変換します
+P --change-polarity- 極性を反転します(ピクセル出力を反転します)
+C --clip-region [l]eft [t]op [w]idth [h]eight: integer- 画像領域を切り出します(l, t, w, h)
出力オプション
-im --image-info- 画像の詳細を表示します(詳細表示モードが必要)
-o --no-output- 一切出力しません(-im と併用すると便利)。ファイル名生成(--frame-range または --all-frames との併用時のみ):
+Fc --use-frame-counter- ファイル名に0始まりのカウンタを使います(既定値)
+Fn --use-frame-number- ファイル名に絶対フレーム番号を使います。画像形式:
+oa --write-auto- ファイル名の拡張子からファイル形式を判定します(ファイルの既定値) # 出力ファイル名に拡張子がない、または未知・非対応の拡張子の場合は # 警告を表示して BMP ファイルを書き出します(--write-bmp を参照)。
+op --write-raw-pnm- 8 ビットバイナリ PGM/PPM を書き出します
+opb --write-8-bit-pnm- 8 ビット ASCII PGM/PPM を書き出します(stdout の既定値)
+opw --write-16-bit-pnm- 16 ビット ASCII PGM/PPM を書き出します
+opn --write-n-bit-pnm [n]umber: integer- n ビット ASCII PGM/PPM を書き出します(1..32)
+ob --write-bmp- 8 ビット(モノクロ)または 24 ビット(カラー)BMP を書き出します
+obp --write-8-bit-bmp- 8 ビットパレット BMP を書き出します(モノクロのみ)
+obt --write-24-bit-bmp- 24 ビットトゥルーカラー BMP を書き出します
+obr --write-32-bit-bmp- 32 ビットトゥルーカラー BMP を書き出します
+ot --write-tiff- 8 ビット(モノクロ)または 24 ビット(カラー)TIFF を書き出します
+on --write-png- 8 ビット(モノクロ)または 24 ビット(カラー)PNG を書き出します
+on2 --write-16-bit-png- 16 ビット(モノクロ)または 48 ビット(カラー)PNG を書き出します
+oj --write-jpeg- 8 ビット非可逆 JPEG(baseline)を書き出します
+ol --write-jpls- JPEG-LS を書き出します
注記
–interpolate オプションでは、次の補間アルゴリズムを選べます:
- 1 = pbmplus toolkit 由来の補間付き自由拡大縮小アルゴリズム
- 2 = c't magazine 由来の補間付き自由拡大縮小アルゴリズム
- 3 = Eduard Stanescu による双線形補間付き拡大アルゴリズム
- 4 = Eduard Stanescu による双三次補間付き拡大アルゴリズム
–write-tiff オプションは、DCMTK が外部の TIFF ライブラリ libtiff を有効にして構成・コンパイルされている場合にのみ利用できます。TIFF 圧縮オプションが使えるかどうかは libtiff の構成に依存します。
–write-png オプションは、DCMTK が外部の PNG ライブラリ libpng を有効にして構成・コンパイルされている場合にのみ利用できます。–interlace オプションを使うと、PNG ファイルの読み込み中に段階的なプレビューが可能になります。PNG ファイル内のメタ情報(TEXT)を扱うアプリケーションはわずかしかありません。
転送構文
dcm2img は入力(dcmfile-in)について次の転送構文に対応します:
LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1
DeflatedExplicitVRLittleEndianTransferSyntax 1.2.840.10008.1.2.1.99 (*)
BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2
JPEGLSLosslessTransferSyntax 1.2.840.10008.1.2.4.80
JPEGLSLossyTransferSyntax 1.2.840.10008.1.2.4.81
JPEGProcess10_12TransferSyntax 1.2.840.10008.1.2.4.55
JPEGProcess14SV1TransferSyntax 1.2.840.10008.1.2.4.70
JPEGProcess14TransferSyntax 1.2.840.10008.1.2.4.57
JPEGProcess1TransferSyntax 1.2.840.10008.1.2.4.50
JPEGProcess2_4TransferSyntax 1.2.840.10008.1.2.4.51
JPEGProcess6_8TransferSyntax 1.2.840.10008.1.2.4.53
RLELosslessTransferSyntax 1.2.840.10008.1.2.5
(*) zlib サポートを有効にしてコンパイルした場合
ロギング
各コマンドラインツールと基盤ライブラリのロギング出力レベルはユーザーが指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。–verbose オプションを使うと、処理の詳細など情報メッセージも報告されます。–debug オプションは、デバッグなどの目的で内部動作のより詳しい情報を得るのに使えます。その他のロギングレベルは –log-level オプションで選べます。–quiet モードでは致命的エラーのみが報告されます。そうした非常に深刻なエラーが起きると、通常アプリケーションは終了します。各ロギングレベルの詳細は、モジュール "oflog" のドキュメントを参照してください。
ロギング出力をファイル(任意でログファイルのローテーション付き)、syslog(Unix)、またはイベントログ(Windows)へ書き出したい場合は、–log-config オプションを使えます。この設定ファイルでは、特定のメッセージのみを特定の出力ストリームへ振り分けたり、生成元のモジュールやアプリケーションに基づいて特定のメッセージを絞り込んだりもできます。設定ファイルの例は < etcdir>/logger.cfg にあります。
コマンドライン
すべてのコマンドラインツールは、引数について次の表記を用います。角括弧は省略可能な値(0〜1個)を囲み、末尾の3つのドットは複数の値を指定できること(1〜n個)を示します。両者の組み合わせは0〜n個の値を意味します。
コマンドラインオプションは、先頭の '+' または '-' 記号によって引数と区別されます。通常、コマンドラインオプションの順序や位置は任意です(どこに現れてもよい)。ただし、相互に排他的なオプションの場合は、最も右にあるものが使われます。この挙動は、一般的な Unix シェルの標準的な評価規則に準拠しています。
加えて、ファイル名の前に '@' 記号を付けることで、1つ以上のコマンドファイルを指定できます(例: @command.txt)。このコマンド引数は、以降の評価に先立って、対応するテキストファイルの内容に置き換えられます(複数の空白文字は、引用符で囲まれていない限り単一の区切りとして扱われます)。コマンドファイルの中に別のコマンドファイルを含めることはできない点に注意してください。この単純ながら効果的な方法により、よく使うオプションや引数の組み合わせをまとめられ、長く分かりにくいコマンドラインを避けられます(例は < datadir>/dumppat.txt にあります)。
環境変数
dcm2img ユーティリティは、環境変数 DCMDICTPATH で指定された DICOM データ辞書の読み込みを試みます。既定では、すなわち DCMDICTPATH 環境変数が設定されていない場合は、辞書がアプリケーションに組み込まれていない限り(Windows では既定で組み込み)、ファイル < datadir>/dicom.dic が読み込まれます。
この既定の挙動が望ましく、DCMDICTPATH 環境変数は別のデータ辞書が必要な場合にのみ使うべきです。DCMDICTPATH 環境変数は、エントリをコロン(":")で区切るという点で Unix シェルの PATH 変数と同じ形式を持ちます。Windows システムでは、区切り文字にセミコロン(";")を使います。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルの読み込みを試みます。データ辞書を1つも読み込めない場合はエラーとなります。
ファイル
< datadir>/camera.lut - カメラ特性ファイルのサンプル
< datadir>/monitor.lut - モニタ特性ファイルのサンプル
< datadir>/printer.lut - プリンタ特性ファイルのサンプル
< datadir>/scanner.lut - スキャナ特性ファイルのサンプル
関連項目
img2dcm(1)
著作権
Copyright (C) 2001-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.