img2dcm: 標準画像フォーマットをDICOM形式へ変換する
書式
img2dcm [options] imgfile-in... dcmfile-out
説明
img2dcm は、JPEG(JPEG-LS を含む)や BMP といった標準的な画像フォーマットを DICOM へ変換するツールです。出力する SOP Class はいくつかの選択肢から選べます。DICOM 出力ファイルに格納する付加情報(患者やシリーズなどに関する情報)は、結果として生成する DICOM オブジェクトの「テンプレート」となる別の DICOM ファイルから取り込めます。また img2dcm は、欠けている DICOM の type 1・type 2 属性を補うように設定でき、テンプレートとなるデータセットが一切なくても動作させられます。
引数
imgfile-in image input filename
dcmfile-out DICOM output filename ("-" for stdout)
オプション
全般オプション
-h --help- このヘルプを表示して終了します
--version- バージョン情報を表示して終了します
--arguments- 展開したコマンドライン引数を表示します
-q --quiet- quiet モード。警告もエラーも表示しません
-v --verbose- 詳細表示モード。処理の詳細を表示します
-d --debug- debug モード。デバッグ情報を表示します
-ll --log-level [l]evel: string constant- (fatal, error, warn, info, debug, trace) ロガーにレベル l を使用します
-lc --log-config [f]ilename: string- ロガーに設定ファイル f を使用します
入力オプション
-i --input-format [i]nput file format: string- 対応フォーマット: JPEG (default), BMP
-df --dataset-from [f]ilename: string- DICOM ファイル f のデータセットを使用します
-dx --dataset-from-xml [f]ilename: string- XML ファイル 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 を除く)
-rc --remove-com- COM セグメントを除去します XML validation:
+Vd --validate-document- XML 文書を DTD に対して検証します
+Vn --check-namespace- 文書ルートの XML 名前空間を確認します
処理オプション
--do-checks- 属性の妥当性検査を有効にします (default)
--no-checks- 属性の妥当性検査を無効にします
+i2 --insert-type2- 欠けている type 2 属性を挿入します (default) (only with --do-checks)
-i2 --no-type2-insert- 欠けている type 2 属性を挿入しません (only with --do-checks)
+i1 --invent-type1- 欠けている type 1 属性を補います (default) (only with --do-checks)
-i1 --no-type1-invent- 欠けている type 1 属性を補いません (only with --do-checks) character set conversion of study/series file:
-Ct --transliterate- 表現できない文字を、見た目の似た文字で近似するよう試みます
-Cd --discard-illegal- 変換先の文字集合で表現できない文字を破棄します other processing options:
-k --key [k]ey: gggg,eeee="str", path or dictionary name="str"- 属性をさらに追加します
出力オプション
-sc --sec-capture- Secondary Capture SOP class で書き出します (default)
-nsc --new-sc- 新しい Secondary Capture SOP class で書き出します
-vlp --vl-photo- Visible Light Photographic SOP class で書き出します
-oph --oph-photo- Ophthalmic Photography SOP class で書き出します output file format:
+F --write-file- ファイル形式で書き出します (default)
-F --write-dataset- ファイルメタ情報なしでデータセットを書き出します 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- 不定長で書き出します data set trailing padding (not with --write-dataset):
-p --padding-off- パディングなし(--write-dataset では暗黙的にこちら)
+p --padding-create [f]ile-pad [i]tem-pad: integer- ファイルを f バイト、アイテムを i バイトの倍数に整列させます
注記
属性の供給元
一般的な画像フォーマットを DICOM 形式へ変換する際、img2dcm には、新しい DICOM ファイルの必須(および任意)属性、たとえば患者・スタディ・シリーズの情報を埋めるための追加入力を与えられます。これらの情報はいくつかの方法で集められ、それらは組み合わせて使えます。結果ファイルへは次の順序で適用されます。
- –dataset-from オプションを使うと、img2dcm は既存の DICOM ファイルから属性を取り込みます。指定された DICOM ファイルは丸ごと取り込まれ、以降のすべての書き出し処理の土台となります。ただし例外として、SOP Instance UID はこのオプションでは複製されません。また Rows や Columns などの画像関連データは変換時に置き換えられます。img2dcm はそれ以外の属性値の妥当性を検査しない点に注意してください。たとえばシーケンス内部を見て、新しいオブジェクトに合わせて属性(参照画像など)を調整したりはしません。そのため、(旧)SC および VLP オブジェクトについては、data ディレクトリにあるテンプレートを使うことを推奨します。「入力テンプレート」の節も参照してください。–dataset-from オプションの代わりに、排他的なオプション –dataset-from-xml も使えます。ただしこの場合、ファイルは dcm2xml が生成する形式の XML データを含んでいなければなりません。
-
–study-from と –series-from オプションを使うと、既存の DICOM ファイルから患者・スタディ・シリーズの情報を取り込めます。–series-from を指定すると、img2dcm は指定された DICOM ファイルを開き、シリーズレベルまでのすべての必須情報を取り込みます。これには患者・スタディ・シリーズの情報が含まれる点に注意してください。–study-from の場合は、シリーズ情報は対象外となります。–study-from と –series-from を同時に使うことには意味があります。両方のオプションをコマンドラインに与えた場合は、右側にある方が優先されます。取り込まれる属性は次のとおりです。
Patient Level: Patient's Name Patient ID Patient's Sex Patient's Birth Date Specific Character Set Study Level: Study Instance UID Study Date Study Time Referring Physician's Name Study ID Accession Number Series Level (only in case of option --series-from): Series Instance UID Series Number Manufacturer -
–insert-type2 と –invent-type1 オプション(どちらも既定で有効)により、欠けている属性(type 2 属性)や欠けている属性値(type 1 属性のもの)が img2dcm によって自動的に追加・補完されます。これらのオプションは –do-checks オプション(既定)が有効な場合にのみ評価される点に注意してください。–no-checks オプションが有効な場合、属性の自動挿入は一切行われません。
- –key オプションを使うと、DICOM 出力ファイルにさらに属性を追加できます。–key オプションでは、シーケンス・アイテム・入れ子になった属性も指定できます。その場合は特別な「パス」表記を使う必要があります。このパス表記の詳細は dcmodify のドキュメントを参照してください。–key オプションは複数回指定できます。'=' の後ろの値部分は省略でき、その場合は属性が長さ 0 で設定されます。なお –key オプションは DICOM ファイルを保存する直前、つまり処理の最後に適用されるため、値の検査は一切行われないので留意してください。
UID
新しい Study Instance UID と Series Instance UID は、–study-from と –series-from オプションを適用した後、必要があれば生成されます。これらの手順を経ても Study Instance UID または Series Instance UID が存在しない場合、それぞれ独立して新たに生成されます。
SOP Instance UID については逆の挙動が選ばれています。–dataset-from または –dataset-from-xml オプションを使うと引き継がれると期待するかもしれませんが、そうはなりません。SOP Instance UID は新しいオブジェクトに複製されません。これがほとんどのユースケースで望ましい挙動のはずです。とはいえ、特定の SOP Instance UID を新しいオブジェクトに挿入したい場合は、–key オプションを使うとよいでしょう。
入力テンプレート
DICOM への変換を支援するため、img2dcm には –dataset-from オプションで使える定義済みのテンプレートがいくつか付属しています(サンプルファイル SC.dump と VLP.dump を参照)。これらのテンプレートには目的の値を埋めたうえで、実際に img2dcm で使う前に DICOM ファイルへダンプ(変換)しておく必要があります。ダンプを DICOM へ変換するには dump2dcm を使います。例:
dump2dcm SC.dump SC.dcm
Ophthalmic Photography 画像については、XML テンプレートが用意されています(サンプルファイル OP_template_utf_8.xml と OP_template_latin_1.xml を参照)。
任意の DICOM ファイルをテンプレートとして使うこともできます。ただし DICOM データセットは丸ごと取り込まれるため、構築する DICOM オブジェクトに含めるべき属性だけが存在することを確かめておいてください。SOP Class UID と Pixel Data 属性(Rows や Columns などの属性を含む)は複製されず、変換時に img2dcm によって置き換えられます。
マルチフレーム画像
選んだ DICOM SOP class がマルチフレームに対応していれば、複数の入力ファイルを 1 つの DICOM マルチフレーム画像へ変換できます。具体的には、Multi-frame Secondary Capture SOP Class がこの機能に対応しています。これらは –new-sc コマンドラインオプションで選択します。
文字集合
–dataset-from または –dataset-from-xml で入力テンプレートを読み込むと、そのテンプレートの specific character set が生成される DICOM ファイルに使われます。さらに –study-from または –series-from オプションを併用した場合、img2dcm はこれらの属性の文字集合をテンプレートのものへ変換しようと試み、変換できないときはエラーを報告します。
–study-from または –series-from オプションをテンプレートなしで使った場合は、その供給元の specific character set が生成される DICOM ファイルに使われます。–key オプションでコマンドラインに指定したキーは生のバイト列として扱われ、テンプレートやスタディ/シリーズファイルによって既に存在する属性を上書きします。したがって、他のファイルから読み込まれる可能性がある場合は、コマンドラインで specific character set を指定しないよう注意してください。また、コマンドラインで指定した属性値が正しいエンコーディングを使っていることを保証するのはユーザーの責任です。値が DICOM ファイルに格納される前に変換は一切行われません。
入力プラグイン
img2dcm は現在、入力フォーマットとして JPEG、JPEG-LS、BMP に対応しています。
JPEG 入力プラグイン
JPEG については、ソースファイルの元の JPEG はデコードせず、抽出して若干変形する(たとえば JFIF ヘッダを切り落とす)ことで、デコードと再エンコードを必要とせずに大きな JPEG ファイルでも高速に変換できるようにしています。JPEG プラグインは、JPEG ファイル内のデータの実際のエンコーディングに応じて、必要な出力 Transfer Syntax を自動的に選びます。そのため JPEG プラグインでは次の Transfer Syntax(および対応する JPEG エンコーディング)が使われます。
- JPEG Coding Process 1
Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit
Transfer Syntax UID = 1.2.840.10008.1.2.4.50 - JPEG Coding Process 2 (8-bit) and 4 (12-bit)
Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit
Transfer Syntax UID = 1.2.840.10008.1.2.4.51 - JPEG Coding Process 10 (8-bit) and 12 (12-bit)
Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit
Transfer Syntax UID = 1.2.840.10008.1.2.4.55
カラー画像とグレースケール画像のどちらにも対応しています。
Extended JPEG Transfer Syntax のサポートは(–disable-ext オプションで)無効にでき、(廃止された)Progressive JPEG Transfer Syntax のサポートも(–disable-progr オプションで)無効にできます。
JPEG ロスレスエンコーディング、および算術符号化や階層型の JPEG エンコーディングモードは、このプラグインでは対応していません。
JFIF(JPEG File Interchange Format)情報は、JPEG ファイル内の任意の APPn マーカーを利用します。多くのデジタルカメラは、生成する JPEG 出力にこの JFIF 情報を組み込みません。たとえば JFIF には、圧縮画像のピクセルアスペクト比に関する情報が含まれます。img2dcm に JPEG ストリーム中の JFIF ヘッダを必須とさせたい場合は、–insist-on-jfif オプションを使うとよいでしょう。これは JFIF 情報が見つからないときに処理を中断させます。既定では、欠けている JFIF 情報は無視されます。
DICOM においては、JFIF(やその他の APPn)データを DICOM オブジェクト内部の JPEG ストリームへ組み込むことが許されるかどうかは、ある種の「グレーゾーン」です。とはいえ、最も確実なやり方はこうしたマーカーとその情報を JPEG ストリームから切り落とすことであり、img2dcm もこの方式をとります。既定では、すべての APPn マーカーが元の JPEG ストリームから切り落とされます。ただし JFIF 以外の APPn マーカー(たとえば EXIF 情報)を DICOM ストリーム内に残したい場合は、–keep-appn オプションが役に立ちます。このオプションは、JPEG ストリーム全体をこうしたデータの有無で走査する必要がないため、APPn 情報を切り落とすより若干高速なはずです。前述のとおり、JFIF 情報は img2dcm によって常に除去されます。ただしこのオプションを使うと APP2 マーカーは保持されますが、img2dcm は対応する ICC Profile (0028,2000) 属性を作成しません。
JPEG-LS 入力プラグイン
JPEG-LS プラグインはメインの JPEG プラグインへ直接統合されています。入力が JPEG か JPEG-LS かをユーザーが事前に明示する必要はありません。
JPEG-LS についても、ソースファイルの元の JPEG-LS はデコードせず、抽出して若干変形する(たとえば APP8 マーカーを切り落とす)ことで、デコードと再エンコードを必要とせずに大きな JPEG-LS ファイルでも高速に変換できるようにしています。
JPEG-LS プラグインは、JPEG-LS ファイル内のデータの実際のエンコーディングに応じて、必要な出力 Transfer Syntax を自動的に選びます。そのため JPEG-LS プラグインでは次の Transfer Syntax(および対応する JPEG-LS エンコーディング)が使われます。
- JPEG-LS Lossless Image Compression
Transfer Syntax UID = 1.2.840.10008.1.2.4.80 - JPEG-LS Lossy (Near-Lossless) Image Compression
Transfer Syntax UID = 1.2.840.10008.1.2.4.81
カラー画像とグレースケール画像のどちらにも対応しています。CP-1843 により、コンポーネントのエンコード方式(component、line、sample のいずれのインターリーブか)が JPEG-LS ビットストリーム内で指定されるため、Planar Configuration (0028,0006) の値は無関係であり、0 に設定するものとされています。JPEG-LS 固有の色変換は現在 DICOM で定義されていないため、JPEG-LS ストリームは RGB 色空間でエンコードされているものとみなされます。
DICOM においては、SPIFF ヘッダは DICOM オブジェクト内部の JPEG-LS ストリームに存在してはならないことが明確です。プラグインは、マーカー APP8 に SPIFF ヘッダを含む入力 JPEG-LS ファイルを単に拒否します。
既定では、すべての APPn マーカーが元の JPEG-LS ストリームから切り落とされます。ただし APPn マーカー(たとえば APP8/HP の色変換情報、いわゆる 'mrfx')を DICOM ストリーム内に残したい場合は、–keep-appn オプションが役に立ちます。プラグインは APP8/HP マーカーに指定された実際の色変換を確認する点に注意してください。DICOM は APP8 マーカーでのいかなる色変換の指定も許さないため、値 0(色変換なし)のみが受け入れられます。
BMP 入力プラグイン
img2dcm は入力フォーマットとして BMP に対応しています。ただし今のところ、最も一般的な BMP 画像にのみ対応しています。具体的には、ビットフィールドやランレングス符号化を使う BMP 画像は拒否されます。そうした画像はまれです。入力画像は、RGB カラーモデルでビット深度 24 の DICOM 画像へ、あるいは MONOCHROME2 カラーモデルで 1 ピクセルあたり 8 ビットの画像へ変換されます。BMP フォーマットの変換を細かく調整するための専用オプションはありません。
出力プラグイン
出力する SOP Class はコマンドラインで選べます。現在は、Secondary Capture Image SOP Class(既定、-sc オプション)、Multi-frame Secondary Capture Image SOP Class(-nsc オプション)、Visible Light Photographic Image SOP Class(-vl オプション)、Ophthalmic Photography Image SOP Class(-oph オプション)向けの書き出しプラグインが利用できます。最初のものは DICOM 標準では非推奨ですが、広く対応されているため既定として選ばれている点に注意してください。将来のバージョンの img2dcm では、他の SOP Class 向けにさらに書き出しプラグインが提供される可能性があります。
新しい Secondary Capture SOP Class については、出力にどの具体的な SOP Class を使うかを指定できません。これは、これらの新しい SOP class が色深度(1/8/16)と画像が白黒かカラーかによって互いに区別されるためです。そのため img2dcm は変換時に、与えられたソース画像にどの出力 SOP Class が適しているかを判断します。
例
ここでは img2dcm アプリケーションの使い方を示すいくつかの例を挙げます。
- img2dcm image.jpg out.dcm
JPEG ファイル "image.jpg" を読み込み、旧 Secondary Capture SOP Class へ変換して、結果を DICOM ファイル "out.dcm" に保存します。これが img2dcm の最も簡単な使い方です。この SOP Class の有効なオブジェクトを書き出すのに必要な type 1・type 2 属性は自動的に挿入されます。 - img2dcm -i BMP image.bmp out.dcm
上と同じですが、JPEG の代わりに BMP ファイルを読むよう img2dcm に指示します。 - img2dcm image.jpg out.dcm -vlp -k "PatientName=Bond^James"
最初の例と同じですが、Visible Light Photographic Image オブジェクトを "out.dcm" に書き出し、本来は空のままになる PatientName に "Bond^James" を設定します。 - img2dcm image.jpg out.dcm –series-from template.dcm -k "PatientName=Bond^James"
1) と同じですが、DICOM ファイル "template.dcm" から患者/スタディ/シリーズの情報を取り込みます。属性 PatientName は最終的に "Bond^James" になり、"template.dcm" のどんな値も上書きされる点に注意してください。これは -k オプションが変換パイプラインの最後に適用されるためです(前述)。 - img2dcm image.jpg out.dcm –no-checks
1) と同じですが、属性検査も type 1・type 2 属性の挿入も一切行いません。したがってこの場合、無効な DICOM オブジェクトが生成されます。これは、出力ファイルを完成形とするつもりがなく、さらに変換を施す場合(たとえば dcmodify で属性を追加する場合)に役立ちます。–no-checks オプションは、何をしているか分かっている場合にのみ使ってください。 - img2dcm image.jpg out.dcm –no-type1-invent
1) と同じですが、欠けている type 1 属性やその値は挿入しません。type 2 属性は挿入されます。この場合、すべての type 1 属性が他の手段、すなわち –key オプションでの追加によって与えられることを確かめなければならない点に注意してください。さもないと img2dcm はエラーを報告し、変換を中止します。 - img2dcm image.jpg out.dcm –keep-appn –insist-on-jfif
1) と同じですが、EXIF のような APPn 情報を、結果として生成される DICOM オブジェクトの JPEG ストリームへ引き継ぎます。さらに –insist-on-jfif により、ソースファイルに JFIF 情報がなければ img2dcm は中断します。 - img2dcm image1.jpg image2.jpg out.dcm –new-sc
JPEG ファイル "image1.jpg" と "image2.jpg" を読み込み、適切な Multi-frame Secondary Capture SOP Class のマルチフレーム画像へ変換して、結果を DICOM ファイル "out.dcm" に保存します。
ロギング
各種コマンドラインツールおよび配下のライブラリのロギング出力のレベルは、ユーザーが指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。–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 に用意されています)。
環境変数
img2dcm ユーティリティは、DCMDICTPATH 環境変数で指定された DICOM データ辞書を読み込もうとします。既定では、つまり DCMDICTPATH 環境変数が設定されていない場合は、辞書がアプリケーションに組み込まれていない限り(Windows では既定で組み込み)、ファイル < datadir>/dicom.dic が読み込まれます。
既定の挙動が望ましく、DCMDICTPATH 環境変数は代替のデータ辞書が必要なときにのみ使ってください。DCMDICTPATH 環境変数の形式は Unix シェルの PATH 変数と同じで、コロン (":") でエントリを区切ります。Windows システムでは、区切りにセミコロン (";") を使います。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルを読み込もうとします。データ辞書を 1 つも読み込めない場合はエラーとなります。
ファイル
< datadir>/SC.dump - Secondary Capture 画像向けのサンプルダンプファイル
< datadir>/VLP.dump - Visible Light Photographic 画像向けのサンプルダンプファイル
< datadir>/OP_template.xml - Ophthalmic Photography 画像向けのサンプル XML テンプレート
関連項目
dcm2pnm(1), dcmj2pnm(1), dump2dcm(1), dcmconv(1), dcmodify(1), dcm2xml(1)
著作権
Copyright (C) 2007-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.