2017-12-20 23 views
1

奇妙な質問の種類ですが、dicomファイルのタグを読み取ることができないときにエラーを処理するためのテストを行っています。dicomファイルのヘッダーを読むことができないようにする方法

残念ながら私は損傷したdicomを利用できません。

具体的には、誤ってエンコードされたテキストタグや無効な数値データタグをファイルに適用して、pythonのpydicomパッケージで読み取ることができないようにする方法はありますか?

+0

私はあなたが(私は、このような操作を行うことができ、そのいずれかを知らない、すぐに使用できるツールを求めているかどうかわかりません物事を簡単にすることができます)、または数行のコードでそうすることができるライブラリです。 –

+0

どちらかといえば、ただのコンセプトやアイデアでもあります。技術的な観点からみると、どのようにしてdicomファイルがボークになるのですか? –

答えて

3

DCMTKからdcmodifyツールを見ることができます。属性の挿入、変更、および削除に使用できます。コマンドラインで無効な属性値を指定することは可能ですが、ソースコードを変更して確実に変更することはできます(ただし、値表現に従って最大長を超える属性値を確実に書くことはできません)。

私のアプローチは、文字のバッファを作成し、それにバイナリデータを書き込むことです。次に、値を属性に書き込むメソッドに渡します。

例:

  • 書き込みユニコード(UTF-8)(0008,0005)によって指定されたキャラクタによってカバーされていない
  • 書き込みASCII文字が有効なUnicode文字でない配列 - わかりませんpydicomが問題に陥るかどうかはDICOMの観点からは間違っているでしょうか?
  • 値の表現が「10進文字列」または「整数文字列」の属性に数値以外の文字を書き出します。 VR "時間" のためのVR用YYYYMMDD以外
  • 形式 "日付" HHMMSS.FFFFFF以外
  • 形式
  • [ '0' - '9']以外の文字、 '' DCMTK、dcmodify:VR「一意識別子」

[編集]のためhttp://dicom.offis.de/dcmtk.php.en

+3

良い提案。その他:必要であれば不均一なパディングを置くことができます。非推奨のプライベートヘッダを使用し、モダリティのために必要なヘッダを落とし、使用されたTransferSyntaxについて嘘をつき、フレームレート、格納されたビットなどに嘘をつきます。フォーマットは既に、多くの方法で壊れやすいです。主なベンダーは、常に遵守して堅牢なものを送ることさえできません。 – Ashley

+0

すばらしいコメントと回答、ありがとうございます! –

関連する問題