⚠️ これは 非公式の翻訳サイトです。DCMTK / OFFIS とは無関係です。正確な情報は 原文(https://support.dcmtk.org/docs/dcmcjpeg.html) を参照してください。

dcmcjpeg: DICOMファイルをJPEG転送構文へエンコードする

書式

dcmcjpeg [options] dcmfile-in dcmfile-out

説明

dcmcjpeg は非圧縮のDICOM画像(dcmfile-in)を読み込み、JPEG圧縮(すなわちカプセル化されたDICOM転送構文への変換)を行い、変換後の画像を出力ファイル(dcmfile-out)へ書き出すユーティリティです。

引数

dcmfile-in   DICOM input filename to be converted ("-" for stdin)

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 を使用します

入力オプション

+f --read-file
ファイル形式またはデータセットを読み込みます(既定値)
+fo --read-file-only
ファイル形式のみを読み込みます
-f --read-dataset
ファイルメタ情報なしでデータセットを読み込みます(入力転送構文):
-t= --read-xfer-auto
転送構文の自動認識を用います(既定値)
-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 の転送構文として読み込みます(互換性、+tl では無視される):
+Ma --accept-acr-nema
photometric interpretation のない ACR-NEMA 画像を受け付けます # photometric # 情報のない古い ACR-NEMA 画像との互換性を有効にします(pseudo lossless エンコーダのみ)
+Mp --accept-palettes
不正な palette 属性タグ (0028,111x) および (0028,121x) を受け付けます # 有効にすると不正な palette 属性タグを受け付けます # (pseudo lossless エンコーダのみ)

JPEGエンコードオプション

+e1 --encode-lossless-sv1
lossless sv1 でエンコードします(既定値) # このオプションは Lossless JPEG Image Compression のために JPEG Lossless, Non-Hierarchical, First-Order # Prediction (Process 14 Selection Value 1) Transfer Syntax を選択します。
+el --encode-lossless
lossless でエンコードします # このオプションは Lossless JPEG Image Compression のために JPEG Lossless, Non-Hierarchical (Process 14) # Transfer Syntax を選択します。
+eb --encode-baseline
baseline でエンコードします # このオプションは Lossy JPEG 8 Bit Image Compression のために JPEG Baseline (Process 1) Transfer Syntax # を選択します。
+ee --encode-extended
extended sequential でエンコードします # このオプションは Lossy JPEG Image Compression のために JPEG Extended (Process 2 & 4) Transfer # Syntax を選択します。
+es --encode-spectral
spectral selection でエンコードします # このオプションは Lossy JPEG Image Compression のために JPEG Spectral Selection, Non-Hierarchical # (Process 6 & 8) Transfer Syntax を選択します。
+ep --encode-progressive
progressive でエンコードします # このオプションは Lossy JPEG Image Compression のために JPEG Full Progression, Non-Hierarchical # (Process 10 & 12) Transfer Syntax を選択します。(lossless JPEG コーデックの選択):
+tl --true-lossless
true lossless コーデック(既定値) # このオプションは真にロスレスな # 画像圧縮を保証するエンコーダを選択します。詳細は NOTES を参照してください。
+pl --pseudo-lossless
旧 pseudo-lossless コーデック # ロスレス圧縮アルゴリズムを用いるが、内部の色空間変換 # などにより画像が lossy になりうる旧エンコーダ。多くの場合 --true-lossless # より高い圧縮率が得られます。(lossless JPEG の表現):
+sv --selection-value [sv]: integer (1..7, default: 6)
--encode-lossless とともにのみ selection value sv を使用します # このオプションは lossless JPEG の selection value を選択します。
+pt --point-transform [pt]: integer (0..15, default: 0)
point transform pt を使用します # このオプションは lossless JPEG の point transform を選択します。 # 警告: ゼロ以外の値でこのオプションを使うと精度が失われ、 # すなわち圧縮が「lossy」になります。(lossy JPEG の表現):
+q --quality [q]: integer (0..100, default: 90)
quality factor q を使用します # このオプションは JPEG 圧縮器内部の量子化テーブルを決定する # quality factor を選択します。これは lossy JPEG における # 圧縮率と画質に影響します。 # 詳細は Independent JPEG Group のドキュメントを参照してください。
+sm --smooth [s]: integer (0..100, default: 0)
smoothing factor s を使用します # このオプションは圧縮前に画像データへのスムージング(ローパスフィルタ)を # 有効にします。画質を犠牲にして圧縮率を高めます。(その他の JPEG オプション):
+ho --huffman-optimize
huffman テーブルを最適化します(既定値) # このオプションは画像圧縮中の huffman テーブルの最適化を # 有効にします。わずかな CPU 時間の増加と引き換えに画像が # 少し小さくなります。bits/sample が 8 を超える場合は常に有効です。
-ho --huffman-standard
8 bits/sample の場合は標準 huffman テーブルを使用します # このオプションは画像圧縮中の huffman テーブルの最適化を # 無効にします。(compressed bits per sample、+tl では常に +ba):
+ba --bits-auto
bits/sample を自動的に選択します(既定値)
+be --bits-force-8
8 bits/sample を強制します
+bt --bits-force-12
12 bits/sample を強制します(baseline では不可)
+bs --bits-force-16
16 bits/sample を強制します(lossless のみ)(圧縮時の色空間変換、+tl で上書きされる):
+cy --color-ybr
lossy の場合カラー画像に YCbCr を使用します(既定値) # このオプションは lossy JPEG のカラー画像について、画像圧縮前に # 色空間を YCbCr へ変換します。
+cr --color-rgb
lossy の場合カラー画像に RGB を使用します # このオプションは lossy JPEG のカラー画像について、画像圧縮前の # YCbCr への色空間変換を抑止します。これにより RGB 色空間での # lossy 圧縮となるが、推奨はできません。
+cm --monochrome
カラー画像をモノクロに変換します # このオプションは圧縮前にカラー画像のモノクロへの変換を # 強制します。(展開時の色空間変換、入力が圧縮済みの場合。+tl では常に +cn):
+cp --conv-photometric
photometric interpretation が YCbCr の場合に変換します(既定値) # このオプションは、再圧縮の前に圧縮画像を読み込んで # 展開する際の dcmcjpeg の挙動を規定します。圧縮画像が # YBR_FULL または YBR_FULL_422 の photometric # interpretation を用いる場合、展開時に RGB へ変換します。
+cl --conv-lossy
lossy JPEG の場合 YCbCr を RGB に変換します # 圧縮画像が lossy JPEG でエンコードされている場合、YCbCr # の色モデルとみなして RGB へ変換します。
+cg --conv-guess
ライブラリが YCbCr と推定した場合に RGB へ変換します # 配下の JPEG ライブラリが圧縮画像の色空間を YCbCr と # 「推定」した場合、RGB へ変換します。
+cgl --conv-guess-lossy
lossy JPEG かつ配下の JPEG ライブラリが YCbCr と推定した場合に RGB へ変換します # 圧縮画像が lossy JPEG でエンコードされ、かつ配下の # JPEG ライブラリが色空間を YCbCr と「推定」した場合、RGB へ変換します。
+ca --conv-always
YCbCr を常に RGB へ変換します # 圧縮画像がカラー画像であれば、YCbCr の色モデルとみなして # RGB へ変換します。
+cn --conv-never
色空間を変換しません # 展開時に色空間を変換しません。(展開時の不正なエンコードに対する回避オプション、入力が圧縮済みの場合):
+w6 --workaround-pred6
predictor 6 でオーバーフローした JPEG lossless 画像に対する回避策を有効にします # 16 bits/pixel の DICOM 画像で、lossless JPEG で圧縮され、 # エンコーダが predictor 6 で 16ビット整数オーバーフローを # 生じたために特別な処理を要するものが「実際に」存在します。 # 展開時にはこれを補正(再現)する必要があります。 # このフラグはそうした不正な画像の正しい展開を有効にするが、 # 同時に正しく圧縮された画像の展開を不正にします。注意して使ってください。
+wi --workaround-incpl
不完全な JPEG データに対する回避策を有効にします # このオプションは、圧縮フラグメント末尾の不完全な JPEG データを # dcmjpeg に無視させ、(もしあれば)次のフラグメントから次フレームの # 展開を開始させます。これにより JPEG データが不完全な画像も # デコードできるようになります。
+wc --workaround-cornell
Huffman テーブルがオーバーフローした 16ビット JPEG lossless の Cornell 画像に対する回避策を有効にします # lossless JPEG 圧縮の初期のオープンソース実装の一つである # 「Cornell」ライブラリには、16 bit/sample の画像を圧縮すると # Huffmann テーブルに不正な値が生じる既知のバグがあります。 # このフラグはそうした画像を正しくデコードできるようにする回避策を有効にします。(YCbCr 成分のサブサンプリング、lossy JPEG のみ):
+s2 --sample-422
YBR_FULL_422 による 4:2:2 サブサンプリング(既定値) # このオプションは YCbCr 色空間での圧縮について 4:2:2 の # 色成分サブサンプリングを有効にします。DICOM の photometric # interpretation は YBR_FULL_422 としてエンコードされます。(非標準の YCbCr 成分サブサンプリング、+tl では不可):
+s4 --nonstd-444
YBR_FULL による 4:4:4 サンプリング # このオプションは YCbCr 色空間での圧縮について色成分サブサンプリングを # 無効にします。DICOM の photometric interpretation は YBR_FULL として # エンコードされ、これは lossy JPEG に関する DICOM の規則に違反します。
+n2 --nonstd-422-full
YBR_FULL による 4:2:2 サブサンプリング # このオプションは YCbCr 色空間での圧縮について 4:2:2 の # 色成分サブサンプリングを有効にします。DICOM の photometric # interpretation は YBR_FULL としてエンコードされ、DICOM の規則に違反します。
+n1 --nonstd-411-full
YBR_FULL による 4:1:1 サブサンプリング # このオプションは YCbCr 色空間での圧縮について 4:1:1 の # 色成分サブサンプリングを有効にします。DICOM の photometric # interpretation は YBR_FULL としてエンコードされ、DICOM の規則に違反します。
+np --nonstd-411
YBR_FULL_422 による 4:1:1 サブサンプリング # このオプションは YCbCr 色空間での圧縮について 4:1:1 の # 色成分サブサンプリングを有効にします。DICOM の photometric # interpretation は YBR_FULL_422 としてエンコードされ、DICOM の規則に違反します。

カプセル化ピクセルデータのエンコードオプション:

+ff --fragment-per-frame
各フレームを1つのフラグメントとしてエンコードします(既定値) # このオプションは各フレームについて1つの圧縮フラグメントを # 作成させます(推奨)。
+fs --fragment-size [s]ize: integer
フラグメントサイズを s キロバイトに制限します # このオプションはフラグメントサイズを制限し、その結果として # 1フレームあたり複数のフラグメントが作成されることがあります。(basic offset table のエンコード):
+ot --offset-table-create
offset table を作成します(既定値) # このオプションは圧縮された JPEG フラグメントに対して有効な # offset table を作成させます。
-ot --offset-table-empty
offset table を空のままにします # このオプションは圧縮された JPEG フラグメントに対して空の # offset table を作成させます。(モノクロ画像の VOI windowing、+tl では不可):
-W --no-windowing
VOI windowing を行いません(既定値) # 圧縮前にモノクロ画像へ window level/width を「焼き込み」ません。 # ピクセルスケーリングおよび rescale slope と # intercept のエンコードについては後述の注記を参照してください。
+Wi --use-window [n]umber: integer
画像ファイル中の n 番目の VOI window を使用します # 圧縮前に画像データにエンコードされた n 番目の window center/width # を適用します。
+Wl --use-voi-lut [n]umber: integer
画像ファイル中の n 番目の VOI ルックアップテーブルを使用します # 圧縮前に画像データにエンコードされた n 番目の VOI LUT を # 適用します。
+Wm --min-max-window
min-max アルゴリズムで VOI window を計算します # 出現する最小から最大までのピクセル値の範囲をカバーする # window center および width を計算して適用します。
+Wn --min-max-window-n
min-max アルゴリズムで VOI window を計算します(極値は無視) # 出現する2番目に小さい値から2番目に大きい値までの # 範囲をカバーする window center および width を計算して # 適用します。これは背景が人工的な黒(パディング値)に # 設定されている場合や、window 計算に含めたくない白い # オーバーレイが画像データに焼き込まれている場合に有用です。
+Wr --roi-min-max-window [l]eft [t]op [w]idth [h]eight: integer
min-max アルゴリズムで ROI window を計算します(関心領域は l,t,w,h で指定) # このオプションは --min-max-window と同様に動作するが、画像内の # 指定された関心領域のみを対象とします。
+Wh --histogram-window [n]umber: integer
ヒストグラムアルゴリズムで VOI window を計算します(n パーセントを無視) # 画像データのヒストグラムを計算し、画像データの n% が window # 計算で無視されるように window center および width を適用します。
+Ww --set-window [c]enter [w]idth: float
center c と width w で VOI window を計算します # 圧縮前に指定された window center/width を適用します。(モノクロ画像のピクセルスケーリング、--no-windowing 時、+tl では無視される):
+sp --scaling-pixel
最小/最大ピクセル値でスケーリングします(既定値) # モノクロ画像のピクセル値は、選択した JPEG プロセスで利用可能な # ピクセル範囲を可能な限り活かすよう常にスケーリングされます。 # このオプションは画像中に出現する最小・最大ピクセル値に # 基づくスケーリングを選択します。これはしばしば画質を # 大きく改善するが、同一シリーズ内の圧縮画像どうしで # rescale slope と intercept の値が異なる原因となり得ます。 # これは1つのシリーズに対するプレゼンテーションステートを # 作成する場合に問題となります。
+sr --scaling-range
最小/最大の範囲でスケーリングします # このオプションは、画像内で実際に使われる最小・最大値を # 考慮せず、stored bits、pixel representation、modality transform # で定義されるピクセル範囲に基づくスケーリングを選択します。(モノクロの rescale slope/intercept エンコード、-W 時、+tl では無視される):
+ri --rescale-identity
恒等の modality rescale をエンコードします(既定値、CT 画像では使用されない) # このオプションは恒等変換以外の modality 変換の作成を # 抑止します(恒等変換は多くの DICOM IOD で必須です)。 # 画像にエンコードされた window center/width 設定は適応され、 # VOI LUT は削除されます。
+rm --rescale-map
modality rescale を用いてピクセル範囲をスケーリングします(XA/RF/XA Biplane 画像では使用されない) # このオプションは、展開後の画像データを元の範囲へ # 戻す modality rescale slope と intercept を作成させます。 # これによりすべての VOI 変換が有効なまま保たれるが、 # DICOM IOD が恒等以外の modality rescale slope と # intercept 変換をサポートしている必要があります。(SOP Class UID):
+cd --class-default
SOP Class UID を保持します(既定値) # 元画像の SOP Class UID を保持します。
+cs --class-sc
Secondary Capture Image へ変換します(--uid-always を含意する) # 画像を Secondary Capture へ変換します。SOP Class UID に加えて、 # 有効な secondary capture 画像に必要なすべての属性が追加されます。 # 新しい SOP instance UID が常に割り当てられます。(SOP Instance UID):
+ud --uid-default
lossy 圧縮の場合に新しい UID を割り当てます(既定値) # 圧縮が lossy の場合に新しい SOP instance UID を割り当てます。
+ua --uid-always
常に新しい UID を割り当てます # 無条件に新しい SOP instance UID を割り当てます。
+un --uid-never
新しい UID を割り当てません # 新しい SOP instance UID を割り当てません。

出力オプション

+u --enable-new-vr
新しい VR (UN/UT) のサポートを有効にします(既定値)
-u --disable-new-vr
新しい VR のサポートを無効にし、OB へ変換します(group length のエンコード):
+g= --group-length-recalc
存在する場合は group length を再計算します(既定値)
+g --group-length-create
常に group length 要素を付けて書き込みます
-g --group-length-remove
常に group length 要素を付けずに書き込みます(シーケンスおよびアイテムにおける length エンコード):
+e --length-explicit
explicit な length で書き込みます(既定値)
-e --length-undefined
undefined な length で書き込みます(データセット末尾のパディング):
-p= --padding-retain
パディングを変更しません(既定値)
-p --padding-off
パディングなし
+p --padding-create [f]ile-pad [i]tem-pad: integer
ファイルを f バイトの倍数に、アイテムを i バイトの倍数に整列します

注記

dcmcjpeg ユーティリティはすべての SOP クラスの DICOM 画像を圧縮します。データセット内のすべての Pixel Data (7fe0,0010) 要素を処理します。すなわち圧縮はアイコン画像に対しても行われます。CT 画像(Hounsfield 単位を作成するために modality 変換が必要)および XA/RF/Biplane SOP クラス(modality 変換が「反転した」意味を持つ)については特別な処理を実装しています。ただし dcmcjpeg は、圧縮後の画像がオブジェクトの IOD のすべての制約に依然として準拠することを保証しようとはしません。

いくつかの例:

  • MR 画像は BitsAllocated=16 であることが必須です。
  • NM 画像は MONOCHROME2 または PALETTE COLOR の photometric interpretation でのみエンコードでき、RGB や YBR_FULL ではエンコードできません(これは実質的に圧縮を妨げます)。
  • Hardcopy Color 画像は RGB の色モデルでなければならず、lossy 圧縮を行う場合は問題となります。

作成した圧縮画像が DICOM 標準に準拠していることを保証する責任は利用者にあります。判断に迷う場合、dcmcjpeg ユーティリティを使えば画像を secondary capture へ変換できます。この SOP クラスは上記のような制約を課しません。

DCMTK 3.5.4 で、真にロスレスな JPEG 圧縮のための新しいエンコーダ(–true-lossless)が追加されました。内部の色空間変換や windowing などにより僅かに lossy な画像を作成する旧(–pseudo-lossless)エンコーダと比べると、考慮すべき点がいくつかあります:

  • Bits Allocated が 8 または 16 の元画像のみがサポートされます
  • 色空間変換、windowing、ピクセルスケーリングのオプションは無視または上書きされます
  • Photometric Interpretation の YBR_FULL_422、YBR_PARTIAL_422、YBR_PARTIAL_420、YBR_ICT、YBR_RCT はサポートされません
  • エンコーダは必要に応じて Planar Configuration を 1 から 0 へ自動的に変更します
  • 圧縮率は –pseudo-lossless モードより低くなることがあります

一方で、新しいエンコーダ(既定値)を使えば、圧縮が画質に影響しないことを保証できます。

安全側に倒すため、旧 pseudo-lossless エンコーダでは Lossy Compression Flag が常に "01" に設定され、(既定では)新しい SOP instance UID が割り当てられます。新旧どちらのロスレスエンコーダの出力かは、生成された DICOM 画像の Derivation Description でも区別できます。これには新エンコーダでは "Lossless JPEG compression"、旧エンコーダでは "Pseudo-Lossless JPEG compression" という語が含まれます。

転送構文

dcmcjpeg は入力(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
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
JPEGProcess10_12TransferSyntax                 1.2.840.10008.1.2.4.55
JPEGProcess14TransferSyntax                    1.2.840.10008.1.2.4.57
JPEGProcess14SV1TransferSyntax                 1.2.840.10008.1.2.4.70

(*) zlib サポートを有効にしてコンパイルした場合

dcmcjpeg は出力(dcmfile-out)について次の転送構文をサポートします:

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
JPEGProcess10_12TransferSyntax                 1.2.840.10008.1.2.4.55
JPEGProcess14TransferSyntax                    1.2.840.10008.1.2.4.57
JPEGProcess14SV1TransferSyntax                 1.2.840.10008.1.2.4.70

ロギング

各種コマンドラインツールおよび配下のライブラリのログ出力レベルは利用者が指定できます。既定ではエラーと警告のみが標準エラー出力へ書き出されます。–verbose オプションを使うと処理の詳細などの情報メッセージも報告されます。–debug オプションを使うと、デバッグなどの目的で内部動作の詳細をより多く得られます。その他のログレベルは –log-level オプションで選択できます。–quiet モードでは致命的エラーのみが報告されます。そのような非常に重大なエラー発生時には、通常アプリケーションは終了します。各ログレベルの詳細は "oflog" モジュールのドキュメントを参照してください。

ログ出力をファイルへ(必要に応じてログファイルローテーション付きで)、syslog(Unix)または event log(Windows)へ書き出したい場合は、–log-config オプションを使えます。この設定ファイルでは、特定のメッセージのみを特定の出力ストリームへ振り向けたり、メッセージを生成したモジュールやアプリケーションに基づいて特定のメッセージをフィルタリングしたりすることもできます。設定ファイルの例は < etcdir>/logger.cfg に用意されています。

コマンドライン

すべてのコマンドラインツールは引数について次の記法を用います。角括弧は省略可能な値(0〜1個)を囲み、末尾の3つのドットは複数の値(1〜n個)が許されることを示します。両者の組み合わせは 0〜n 個の値を意味します。

コマンドラインオプションは、それぞれ先頭の '+' または '-' 記号によって引数と区別されます。通常、コマンドラインオプションの順序と位置は任意です(すなわちどこに現れてもよい)。ただし、オプションが相互排他的な場合は最も右側の出現が用いられます。この挙動は一般的な Unix シェルの標準的な評価規則に従います。

加えて、ファイル名の前に '@' 記号を付けることで、1つ以上のコマンドファイルを指定できます(例: @command.txt)。そのようなコマンド引数は、それ以降の評価の前に、対応するテキストファイルの内容で置き換えられます(連続する空白は、引用符で囲まれていない限り単一の区切りとして扱われます)。コマンドファイルの中に別のコマンドファイルを含めることはできない点に注意してください。この単純だが効果的な方法により、よく使うオプションや引数の組み合わせをまとめられ、長く分かりにくいコマンドラインを避けられます(例は < datadir>/dumppat.txt に用意されています)。

環境変数

dcmcjpeg ユーティリティは、DCMDICTPATH 環境変数で指定された DICOM データ辞書を読み込もうとします。既定では、すなわち DCMDICTPATH 環境変数が設定されていない場合、辞書がアプリケーションに組み込まれていない限り(Windows では既定)、ファイル < datadir>/dicom.dic が読み込まれます。

通常はこの既定の挙動が望ましく、DCMDICTPATH 環境変数は別のデータ辞書が必要な場合にのみ使うべきです。DCMDICTPATH 環境変数は Unix シェルの PATH 変数と同じ形式で、コロン(":")でエントリを区切ります。Windows システムでは区切りにセミコロン(";")を用います。データ辞書のコードは DCMDICTPATH 環境変数で指定された各ファイルを読み込もうとします。データ辞書を1つも読み込めない場合はエラーとなります。

関連項目

dcmdjpeg(1)

Copyright (C) 2001-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.