Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the urvanov-syntax-highlighter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the advanced-ads domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。lancr ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114
DICOMタグをいじってみる | 診療放射線技師がPythonをはじめました。

DICOMタグをいじってみる

医療画像はDICOM画像として保存されており、そのタグには患者情報や、検査情報、画像情報と様々な内容が入っています。

画像処理を行っていく際に、タグ情報を使うことは多々あります。

そこで、今回はpythonでDICOMタグを扱っていく方法をやってみたいと思います。

DICOMを読み込む方法や、表示方法は以下の記事に記載していますのでそちらを参照ください。

DICOMタグの取得


DICOMタグの構成

まずは、タグ情報を扱うにはDICOMタグの構成を知らなければなりません。タグの一つ一つの中には以下のようないろいろな情報がまとまって一つの情報となっています。(記載事項以外にもあるかも。。。)

Tagタグの番号
Attribute Name項目名
Attribute Name J日本語の項目名
(上図に記載されていません)
Attribute Typeデータの必須事項、条件付き必須事項等
(上図に記載されていません)
VRデータの型
Lengthデータの長さ
(上図に記載されていません)
Value

なので、プログラミングで使っていく際にはDICOMデータのどの項目を扱っていくのか指定しなければならないということになります。


広告
デル株式会社

予約タグとプライベートタグ

タグには必須事項となるタグがあり、それが予約タグとなります。

また、必須項目のタグはモダリティーにより異なってきます。

また、患者情報であったり、検査情報であったり、必須項目は偶数番のブロック(タグ番号の前側の番号)で指定されています。一方、プライベートタグに関しては奇数番で指定できます。

各モダリティーごとの必須項目タグはLIBERWORKS社のサイトに記載されていますので興味があるかたはご覧ください。


広告
HP Directplus -HP公式オンラインストア-

タグ情報を変更する

既存のタグ情報を変更するする場合は以下のコードでできます。

dcm[0x0008,0x0070].value = ‘変更する値’

なお、このままではタグ情報を変更しただけで保存できていませんので次に保存していきましょう。


広告
BTOパソコン・パソコン関連商品がお買い得!パソコン工房のセール

タグ情報を画像に保存する

タグ情報を変更したら今度は、画像に保存しなければなりません。

save_as(file_path, write_like_original=False)

で保存することができます。

write_like_original=False

の部分は、DICOMに準拠した形式ではなく個人で指定した形式で保存しますか?という事です。なので、Trueにしてしまうと形式に反してしまうかもしれませんのでここの部分はFalseのままがいいでしょう。


プライベートタグを作成する

プライベートタグに関しては、企業がそれぞれ作成しています。

例えば、SiemensのMRI装置でDiffusionを撮像した場合、b値等がプライベートタグとして登録されていますが、10年前のcanon製のMRI 装置では記載されていません。

プライベートタグを画像に載せたい場合はまず、ブロックを作成しなくてはなりません。患者に関する情報を載せているグループや、検査情報を載せているグループといったものです。

block = dcm.private_block(0x0019, “diffusion parameter”, create=True)
block.add_new(0x0c, ‘SH’, b_val)

で画像に登録をしたら保存をします。
dcm.save_as(file_path, write_like_original=False)

これで、プライべートタグの登録が完了です。


資料

DICOM規格に関してはJIRAのホームページに詳細な記載がありますので興味がある方は以下のリンクからご覧ください。

JIRA DICOMの世界

JIRA 勉強会資料 DICOMに慣れる -現場で DICOM 接続に慌てないための知識 (3) 画像系の通信 -



環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

広告
上新電機 パソコン買取サービス

Categories:

,