これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド dcmodify です。
プログラム:
NAME
dcmodify - DICOM ファイルを変更する
SYNOPSIS
dcmodify [オプション] dcmfile-in...
DESCRIPTION
変更する DICOM 内のタグと項目を変更、挿入、削除できるツールです。
ファイル。 値の多重度が 1 を超えるシーケンスとタグもサポートされます。 メタヘッダー
情報とタグの VR を直接変更することはできません。 変更する 現時点では。 の
タグの変更に加えて、 変更する いくつかの入力オプションを利用可能にします - 強制
変更する ユーザーが指定したとおりに入力ファイルを処理し、制御する出力オプションを指定します。
結果のファイルの出力形式。
複数の修正を実行する必要がある場合は、 変更する に変更を加えます
コマンドラインに表示される順序と同じです。 その点に注意してください 変更する しない
指定された値がその値表現 (VR) と一致するかどうかを確認します。 通常はエラーになります
というメッセージが出力されますが、通常はユーザーが適切な VR 使用法に注意する必要があります。
If 変更する 挿入すべきタグがわからない場合、タグの VR は UN に設定され、
コマンドラインで指定された値は、一連の XNUMX 進数として解釈されます。
(VR=OB に提供されているものと同様)。 回避するには、これらのタグを辞書に挿入してください。
この行動。 また、 -イウン オプションで、強制することも可能です 変更する 離れる
国連の価値観は変わりません。 オプションを使用する -u ラトビアの 変更する すべての VR=UN 属性を OB として保存します。
変更する いわゆるタグ パスを使用して、シーケンス内のタグにアクセスできます。 の
(擬似形式化された) 構文は次のとおりです
{シーケンス[項目番号].}*要素
ここで、「sequence」は (0008,1111) のようなシーケンス タグ、またはタグの辞書名です。 'アイテム-
no' は、アクセスする項目番号 (XNUMX から数えます) を示します。 「要素」は、
作業するターゲットタグ。 タグは (0010,0010) として直接指定するか、または
対応する辞書名「PatientName」。 「*」は繰り返し可能であることを示します
DICOM ファイルのより深いレベルにアクセスするシーケンス ステートメント (「例」セクションを参照)。 ために
「item-no」、ワイルドカード文字「*」も使用して周囲のすべての項目を選択できます
シーケンス (以下の「ワイルドカード」セクションを参照)。
を使用して複数のノード (つまり、単一の要素ではない) で構成されるタグ パスを挿入する場合
-i オプションを使用すると、欠落しているパス要素 (アイテム、シーケンス、リーフ要素) が挿入されます。
紛失時は自動的に。 これは項目のワイルドカードでは機能しません: 単一の項目がない場合
周囲のシーケンスに存在します 変更する もちろん決めることはできません、アイテムをいくつにすべきか
生成される。 ただし、「5」のように項目番号を指定した場合は、6項目すべて(先頭から数えて)
ゼロ) は、挿入モードで自動的に生成できます (そして実際に生成されます)。 すでに 2 つの項目がある場合
存在する場合、残り (4) が挿入されます。
プライベート タグの変更に関していくつかの問題があることに注意してください (「
PRIVATE TAGS セクション)、および UID の変更 (CHANGING UIDs セクション)。
パラメーター
dcmfile-in 変更する DICOM 入力ファイル名
OPTIONS
一般的な オプション
-h --ヘルプ
このヘルプテキストを印刷して終了します
- バージョン
バージョン情報を印刷して終了します
-引数
拡張されたコマンドライン引数を出力する
-q -- 静かに
クワイエットモード、警告やエラーを出力しない
-v --verbose
詳細モード、印刷処理の詳細
-d --デバッグ
デバッグモード、デバッグ情報の出力
-ll --log-level [l] evel:文字列定数
(致命的、エラー、警告、情報、デバッグ、トレース)
ロガーにはレベルlを使用します
-lc --log-config [f] ilename:文字列
ロガーには設定ファイルfを使用します
オプション
入力ファイル形式:
+ f --read-file
ファイル形式またはデータセットの読み取り(デフォルト)
+ fo--read-file-only
読み取りファイル形式のみ
-f --read-dataset
ファイルメタ情報なしでデータセットを読み取る
+fc --ファイルの作成
ファイルが存在しない場合はファイル形式を作成します
入力転送構文:
-t = --read-xfer-auto
TS認識を使用(デフォルト)
-td--read-xfer-detect
ファイルメタヘッダーで指定されたTSを無視します
-te --read-xfer-little
明示的なVRリトルエンディアンTSで読む
-tb --read-xfer-big
明示的なVRビッグエンディアンTSで読む
-ti--read-xfer-implicit
暗黙のVRリトルエンディアンTSで読む
奇数長の属性の解析:
+ao --奇数長を受け入れる
奇数の長さの属性を受け入れる (デフォルト)
+ae --偶数長を想定
実際の長さは XNUMX バイト大きいと仮定します
自動データ修正:
+dc --enable-correction
自動データ修正を有効にする (デフォルト)
-dc --修正を無効にする
自動データ修正を無効にする
デフレートされた入力のビットストリーム形式:
+bd --ビットストリームデフレート
圧縮されたビットストリームを期待します (デフォルト)
+bz --bitstream-zlib
圧縮された zlib ビットストリームを期待します
処理 オプション
バックアップ入力ファイル:
- バックアップ
変更する前にファイルをバックアップする (デフォルト)
-nb --バックアップなし
ファイルをバックアップしないでください (危険)
挿入モード:
-i --insert "[t]ag-path=[v]alue"
位置 t に値 v を使用してパスを挿入 (または上書き)
-if --insert-from-file "[t]ag-path=[f]ilename"
ファイル f の値を使用して位置 t にパスを挿入 (または上書き)
-nrc --no-reserv-check
プライベート予約をチェックしないでください
変更モード:
-m --modify "[t]ag-path=[v]alue"
位置 t のタグを値 v に変更します
-mf --modify-from-file "[t]ag-path=[f]ilename"
位置 t のタグをファイル f の値に変更します
-ma --modify-all "[t]ag=[v]alue"
ファイル内のすべての一致するタグ t を値 v に変更します
消去モード:
-e --erase "[t]ag-path"
位置 t のタグ/項目を消去します
-ea --erase-all "[t]ag"
ファイル内の一致するタグをすべて消去します
-ep --erase-private
ファイルからすべての個人データを消去する
一意の識別子:
-gst --gen-stud-uid
新しいスタディ インスタンス UID を生成する
-gse --gen-ser-uid
新しいシリーズ インスタンス UID を生成する
-gin --gen-inst-uid
新しいSOPインスタンスUIDを生成します
-nmu --no-meta-uid
関連する場合はメタヘッダー UID を更新しない
データセット内のUIDが変更される
エラー処理:
-ie --ignore-errors
変更エラーが発生した場合はファイルを続行します
-imt --ignore-missing-tags
「タグが見つかりません」を成功として扱います
ファイルを変更または消去するとき
-iun --ignore-un-values
要素に値を書き込もうとしないでください
国連のVRを持っている
出力 オプション
出力ファイル形式:
+ F --write-file
書き込みファイル形式(デフォルト)
-F--write-dataset
ファイルメタ情報なしでデータセットを書き込む
出力転送構文:
+ t =-write-xfer-同じ
入力と同じTSで書き込む(デフォルト)
+ te --write-xfer-little
明示的なVRリトルエンディアンTSで書く
+ tb --write-xfer-big
明示的なVRビッグエンディアンTSで書く
+ ti--write-xfer-implicit
暗黙のVRリトルエンディアンTSで書く
1993年以降の値の表現:
+ u --enable-new-vr
新しいVRのサポートを有効にする(UN / UT)(デフォルト)
-u --新しいvrを無効にする
新しいVRのサポートを無効にし、OBに変換します
グループ長エンコーディング:
+ g = --group-length-recalc
存在する場合はグループの長さを再計算します(デフォルト)
+ g --group-length-create
常にグループ長の要素で書く
-g--group-length-remove
常にグループ長要素なしで書き込む
シーケンスとアイテムの長さのエンコード:
+le --length-explicit
明示的な長さで書き込む(デフォルト)
-le --length-未定義
未定義の長さで書き込む
データセットの末尾のパディング (--write-dataset を使用しない):
-p= --パディング保持
パディングを変更しないでください (--write-dataset でない場合のデフォルト)
-p --パディングオフ
パディングなし (--write-dataset の場合は暗黙的)
+ p --padding-create [f] ile-pad [i] tem-pad:整数
ファイルを複数のfバイトに揃え、アイテムを
iバイトの倍数
PRIVATE タグ
プライベート タグを使用する場合は、考慮する必要がある問題がいくつかあります。 しかし
予約タグ (gggg,00xx) の挿入または変更は常に機能するはずです。
挿入
プライベート タグ (gggg,00xx による予約ではない) を挿入したい場合は、次のことを確認してください。
あなたはそれを辞書に登録しました(を参照) /datadict.txt 詳細については)。 そうでない場合
リストされた、 変更する VR=UN を指定して挿入します。 また、場合によっては挿入に失敗することもあります
いくつかの値については。
辞書にプライベートタグがある場合は、 変更する 次のように動作します。
プライベート作成者が一致する、タグを囲むデータセット内の予約、挿入は
辞書で見つかった VR とコマンドラインで指定された値を使用して実行されます。 しかし、もし
プライベートクリエーターが一致しないか、何も設定されていません。 変更する エラーで返されます。 もし
予約が存在するかどうかに関係なく、プライベート タグを挿入する必要があります。オプション
-nrc を使用して強制的に挿入できます。 ただし、このとき VR は UN に設定されます。
そうすると辞書には見つかりません。
未知の VR を持つ要素への値の挿入がどのように処理されるかについては、上記の説明を参照してください。
修正
プライベートタグの値を変更すると、 変更する VR を辞書と照合しません。 それで
タグの VR に一致する値のみを入力するように注意してください。
プライベートタグの値を変更したい場合 および VR、このタグを追加したばかりなので、
辞書、次のように削除できます 変更する 再度挿入してください。 それから 変更する あなたの
適切な VR を決定するための辞書エントリ (サブセクションの挿入も参照)。
また、未知の VR を持つ要素に値を挿入する方法については、上記の説明を参照してください。
処理されます。
削除
この方法でエスプレッソの抽出を計量する場合、エスプレッソがスパウトから落ちるタイミングとスケールが反応するタイミングに時間差が生じます。エスプレッソがスパウトからエスプレッソカップに落ち、スケールが計量するまで若干の時間差が生じるため、抽出ボタンを止めた後、液量が約2~4g増加することを念頭に置いて抽出を止めてください。 変更する プライベート予約タグを削除するには、次の点にご注意ください。 変更する なくなり
この予約の下にあるプライベートタグをタッチします。 ユーザーはそれを処理することを強制されます
予約とそれに関連付けられたプライベート タグ間の一貫性。
プライベートの非予約タグの削除については、特別な問題はありません。
変化 UIDS
変更する 「メディア ストレージ SOP クラス UID」と「メディア ストレージ SOP」を自動的に修正します。
データセット内の関連タグに変更を加えた場合、メタヘッダー内の「インスタンス UID」
(「SOP クラス UID」および「SOP インスタンス UID」) 挿入または変更モード オプションを使用します。 あなたはできる
この動作を無効にするには、 -nmu オプションを選択します。
新しい UID を生成すると、 -gst, -gse or -ジン、これは選択した UID にのみ影響します。
引き起こす。 したがって、使用する場合 -gst 新しい「スタディ インスタンス UID」を生成し、次に「シリーズ」を生成します。
「インスタンス UID」と「SOP インスタンス UID」は影響を受けません。 これはあなたに可能性を与えます
各値を個別に生成します。 通常は、「基礎となる」UID も変更します。
この柔軟性の欠点として、ユーザーは「新しい」を作成するときに次のことを確認する必要があります。
新しい UID を持つ DICOM ファイル 変更する、他の UID はユーザーが次のように更新する必要があります。
必要。
あなたが -ジン オプション、関連するメタヘッダー タグ (「メディア ストレージ SOP インスタンス」
UID') は自動的に更新されます。 この動作を無効にすることはできません。
作成 NEW ファイル
オプション -- 作成ファイル ラトビアの 変更する ファイルがディスク上に存在しない場合は作成します。
これは、連続して実行してファイルを最初から作成するために使用できます。
のようなオプションを使用した挿入 - 入れる。 これは、作成するときに特に便利かもしれません
次のようなツールのファイルをクエリします 発見 or movecu。 特定の出力転送構文がない場合
定義されている、 変更する 出力にはリトル エンディアン明示的非圧縮を選択します。 ファイル
新しく作成されたファイルは常に DICOM ファイル形式、つまりオプションとして書き込まれます。 --書き込みデータセット is
と一緒に使用することは許可されません - 作成。 このようにして、少なくともメタヘッダーが書き込まれます。
挿入が実行されない場合、バイト長が XNUMX のファイルが作成されます。
変更する コール。
ELEMENT VALUES FROM FILE
コマンドで要素値を指定するのではなく、ファイルから要素値を読み取るには
ライン、オプション -mf および -もしも に使える。 OW 要素の場合、データは次のとおりであることに注意してください。
リトルエンディアンで注文されることが予想され、必要に応じて交換されます。 ファイルサイズ
常に偶数のバイト数である必要があります。つまり、自動パディングは実行されません。
ワイルドカード
変更する パス内の項目番号にワイルドカード文字「*」を使用することもできます。
式、たとえば「ContentSequence[*].CodeValue」は、すべての「コード値」属性を選択します。
ContentSequence のすべての項目。 すべての基本操作でワイルドカードの使用が可能です。
つまり修正する -m、挿入 -i および -e それを実現するオプションと、自動
構築と処理のための強力なツールである中間パス ノードの作成
複雑なデータセット。
オプション -ま および -ea DICOM 要素ベースのすべての出現を変更または削除します。
そのタグではワイルドカードは受け入れられませんが、単一の要素 (つまり、単一の要素) に対してのみ機能します。
辞書名またはタグキー)。
例
-i --挿入:
dcmodify -i "(0010,0010)=名前" file.dcm
PatientName タグを「file.dcm」の第 1 レベルに挿入します。
タグがすでに存在する場合は、 -i で上書きされます。 あなたがしたい場合は
値の多重度 > 1 (例: 4) の要素を挿入します。
これは、dcmodify -i "(0018,1310)=1\2\3\4" で実行できます。
dcmodify -i "(0008,1111)[0].PatientName=別の名前" *.dcm
PatientName タグをシーケンスの最初の項目に挿入します
(0008,1111)。 ファイルに対するワイルドカードの使用は次のとおりであることに注意してください。
可能。 より長いタグ パスを指定することもできます (例:
"(0008,1111)[0].(0008,1111)[1].(0010,0010)=A Third One").
パスの一部、たとえばシーケンスや項目「0」の場合
存在しない場合は、dcmodify によって自動的に挿入されます。
dcmodify -i "(0008,1111)[*].PatientName=別の名前" *.dcm
PatientName タグをシーケンスのすべての項目に挿入します
(0008,1111)。 ファイルに対するワイルドカードの使用は次のとおりであることに注意してください。
可能。 より長いタグ パスを指定することもできます (例:
"(0008,1111)[*].(0008,1111)[*].(0010,0010)=XNUMX 番目のもの")。
-if --ファイルから挿入:
dcmodify -if "PixelData=pixel.raw" file.dcm
ファイル「pixel.raw」の内容を PixelData 要素に挿入します
「file.dcm」の。 ファイルの内容はそのまま読み込まれます。
OW データはリトル エンディアンで順序付けされることが期待されており、
必要に応じて交換します。 を確認するためのチェックは行われません。
データ量は、次のような他の属性の観点から妥当です。
行または列。
-m --変更:
dcmodify -m "(0010,0010)=名前" file.dcm
0010,0010階層目のタグ(1)を「A Name」に変更します。
このオプションでは、例に示すように長いタグ パスも許可されます。
上記は -i の場合です。 リーフ要素または中間要素の場合、
パスの一部が存在しないため、そのまま挿入されません
「-i」オプションを使用した場合になります。
dcmodify -m "(0010,0010)=名前" -imt file.dcm
0010,0010階層目のタグ(1)を「A Name」に変更します。 による
オプション「-imt」を指定すると、「タグが見つかりません」の代わりに成功が返されます。
要素/項目 (または長いパス内の中間ノード) がそうする場合
存在しない。
「-m」オプションの場合、パス内の最後のノードは次のとおりである必要があることに注意してください。
リーフ要素、つまりシーケンスや項目ではありません。
-mf --ファイルから変更:
dcmodify -mf "PixelData=pixel.raw" file.dcm
すでに PixelData 要素が存在する場合は -if と同じことを行います。
「file.dcm」内。 それ以外の場合は何も変わりません。
-ma --modify-all:
dcmodify -ma "(0010,0010)=新しい名前" file.dcm
-m と同じですが、一致するすべてのタグに対して機能します。
「ファイル.dcm」。 したがって、以下を含むデータセット全体を検索します。
タグ (0010,0010) のシーケンスを削除し、「新しい名前」に変更します。
-e --消去:
dcmodify -e "(0010,0010)" *.dcm
第 0010,0010 レベルのすべての *.dcm ファイルのタグ (1) を消去します。
このオプションでは、示されているように、より長いタグ パスも許可されます。
上記は -i の場合です。
dcmodify -e "(0010,0010)" -imt *.dcm
第 0010,0010 レベルのすべての *.dcm ファイルのタグ (1) を消去します。 による
オプション「-imt」を指定すると、「タグが見つかりません」の代わりに成功が返されます。
要素/項目 (または長いパス内の中間ノード) がそうする場合
存在しない。
-ea --erase-all:
dcmodify -ea "(0010,0010)" *.dcm
-e と同じですが、シーケンスおよび項目でも検索します。
-ep --erase-private:
dcmodify -ep *.dcm
すべてのプライベート タグ (つまり、奇数のグループ番号を持つタグ) を削除します。
現在のディレクトリ内の *.dcm に一致するすべてのファイル。
-gst --gen-stud-uid:
dcmodify -gst ファイル.dcm
これにより、StudyInstanceUID の新しい値が生成されます。
(0020,000d)。 他の UID は変更されません。
-gse --gen-ser-uid:
dcmodify -gse ファイル.dcm
これにより、SeriesInstanceUID の新しい値が生成されます。
(0020,000e)。 他の UID は変更されません。
-gin --gen-inst-uid:
dcmodify -gin file.dcm
このコマンドは、SOPInstanceUID の新しい値を生成します。
(0008,0018)。 対応する MediaStorageSOPInstanceUID
(0002,0003) は新しい値に自動的に調整されます。
このメタヘッダーを回避することはできないことに注意してください
-nmu オプションを使用して更新します。
-nmu --no-meta-uid:
dcmodify -m "SOPInstanceUID=[UID]" -nmu *.dcm
これにより、SOPInstanceUID が指定された [UID] に変更されます。
しかし、-nmu はそれを回避し、dcmodify が
メタヘッダーの MediaStorageSOPInstanceUID も..fi
ERROR 取り扱い
変更する コマンドラインで指定された各変更操作の実行を試みます。
エラーが発生しても、他の処理は実行されます。 ただし、エラーが発生した場合は、変更された
ファイルは保存されません。 -無視-エラー オプションが指定されています。 そのオプションがあれば
選択、 変更する コマンドラインで指定されたさらなるファイルの変更も続行します。
さもないと 変更する 変更エラーが発生した最初のファイルの後に終了します。
Status --ignore-missing-tags オプションが有効になっている場合、変更または消去操作 (つまり、
- 入れる) タグが存在しないために失敗した場合は、成功したものとして扱われます。 それか
ファイル内に特定のタグが存在しないことを確認したい場合は意味があります
または、それらが存在する場合は、それらが特定の値に設定されていることを確認します。
ロギング
さまざまなコマンドラインツールと基盤となるライブラリのログ出力のレベルは、
ユーザーが指定します。 デフォルトでは、エラーと警告のみが標準に書き込まれます
エラーストリーム。 オプションの使用 -詳細 処理の詳細などの情報メッセージもあります
報告されています。 オプション - デバッグ 内部アクティビティの詳細を取得するために使用できます。
たとえば、デバッグの目的で。 オプションを使用して、他のログレベルを選択できます - ログ-
レベル。 に - 静かな モードのみの致命的なエラーが報告されます。 このような非常に重大なエラーイベントでは、
通常、アプリケーションは終了します。 さまざまなログレベルの詳細については、
モジュール 'oflog'のドキュメントを参照してください。
ロギング出力をファイルに書き込む必要がある場合(オプションでログファイルローテーションを使用)、
syslog(Unix)またはイベントログ(Windows)オプションへ --log-config に使える。 この
構成ファイルでは、特定のメッセージのみを特定の出力に送信することもできます
ストリームおよびモジュールまたはアプリケーションに基づいて特定のメッセージをフィルタリングするため
が生成されます。 構成ファイルの例は、に提供されています。 /logger.cfg.
COMMAND LINE
すべてのコマンドラインツールは、パラメータに次の表記を使用します。角かっこで囲みます
オプションの値(0-1)、末尾のXNUMXつのドットは、複数の値が許可されていることを示します
(1-n)、両方の組み合わせは0からnの値を意味します。
コマンドラインオプションは、先頭の「+」または「-」記号によってパラメータと区別されます。
それぞれ。 通常、コマンドラインオプションの順序と位置は任意です(つまり、
どこにでも表示できます)。 ただし、オプションが相互に排他的である場合、右端の外観
使用されている。 この動作は、一般的なUnixシェルの標準的な評価ルールに準拠しています。
さらに、XNUMXつ以上のコマンドファイルは、接頭辞として「@」記号を使用して指定できます。
ファイル名(例: @ command.txt)。 このようなコマンド引数は、次の内容に置き換えられます。
対応するテキストファイル(複数の空白は、次の場合を除いて単一の区切り文字として扱われます)
さらに評価する前に、XNUMXつの引用符の間に表示されます)。 その点に注意してください
コマンドファイルに別のコマンドファイルを含めることはできません。 このシンプルだが効果的なアプローチ
オプション/パラメータの一般的な組み合わせを要約することができ、長くなり、
紛らわしいコマンドライン(例はファイルで提供されています /dumppat.txt).
ENVIRONMENT
XNUMXμmの波長を持つ 変更する ユーティリティは、で指定されたDICOMデータディクショナリを読み込もうとします。
DCMDICTPATH 環境変数。 デフォルトでは、つまり DCMDICTPATH 環境変数
設定されていない、ファイル /dicom.dic 辞書が作成されない限りロードされます
アプリケーションに(Windowsのデフォルト)。
デフォルトの動作が優先され、 DCMDICTPATH 環境変数のみ
代替データディクショナリが必要な場合に使用されます。 NS DCMDICTPATH 環境変数
Unixシェルと同じ形式です パス コロン( ':')で区切る変数
エントリ。 Windowsシステムでは、セミコロン( ';')が区切り文字として使用されます。 データディクショナリ
コードは、で指定された各ファイルをロードしようとします DCMDICTPATH 環境変数。 それ
データディクショナリをロードできない場合はエラーです。
COPYRIGHT
Copyright(C)2003-2014 by OFFIS eV、Escherweg 2、26121 Oldenburg、Germany。
onworks.net サービスを使用してオンラインで dcmodify を使用する