Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack 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 easy-fancybox 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 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

Warning: Cannot modify header information - headers already sent by (output started at /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php:6114) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-content/plugins/all-in-one-seo-pack/app/Common/Meta/Robots.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php:6114) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/feed-rss2.php on line 8
DICOM Tag | 診療放射線技師がPythonをはじめました。 http://radiology-technologist.info 診療放射線技師のPython日記。解析等で使えるコードを作成、アップしていきたいと思っています。その他いろいろ Thu, 20 May 2021 21:21:31 +0000 ja hourly 1 https://wordpress.org/?v=6.7 https://i0.wp.com/radiology-technologist.info/wp-content/uploads/2018/09/cropped-logo5.png?fit=32%2C32 DICOM Tag | 診療放射線技師がPythonをはじめました。 http://radiology-technologist.info 32 32 164362728 DICOMタグをいじってみる http://radiology-technologist.info/post-601 Sun, 10 May 2020 21:31:54 +0000 http://radiology-technologist.info/?p=601 医療画像はDICOM画像として保存されており、その […]

The post DICOMタグをいじってみる first appeared on 診療放射線技師がPythonをはじめました。.]]>
医療画像は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)

広告
上新電機 パソコン買取サービス
The post DICOMタグをいじってみる first appeared on 診療放射線技師がPythonをはじめました。.]]>
601
DICOMタグの取得 http://radiology-technologist.info/post-71 Sat, 20 Jul 2019 22:10:35 +0000 http://mcu03iphuk.m5.valueserver.jp/wordpress/?p=71 今回はPydicomを使ってDICOMタグの取得を […]

The post DICOMタグの取得 first appeared on 診療放射線技師がPythonをはじめました。.]]>
今回はPydicomを使ってDICOMタグの取得をやってみたいと思います。

下準備

まだ、よくわからないという方のために詳しく説明していきたいと思います。

ある程度分かっている方は下準備は飛ばしてください

まずDICOM画像が手元にない場合は、Image-JのHPからサンプル画像がダウンロードできます。

拡張子(ファイル名の最後の文字)がdcmの画像がDICOM画像です。

ダウンロードした画像は、 デスクトップに「pydicom」というフォルダを作って入れておいてください。

(フォルダ名は何でも構いませんが、日本語のフォルダ名はプログラム実行時にエラーになってしまいますので必ず半角英数にて付けてください。)

続いて、コマンドプロンプトを立ち上げます。

そこに

jupyter notebook

と打ち込みます。少し無反応な時間が経ったのち、webブラウザが立ち上がり下図のページが立ち上がります。

デスクトップをクリックし、pydicomのフォルダに移動します。

先ほど、ダウンロードした画像が入っていることが確認できます。

次に、このフォルダにコードを書いていくファイルを作成したいと思います。

画面右側上方に『New』というボタンがありますので

そちらをクリックし、『Python3』を選択します。

pythonコードのファイル名を決めます。

jupyterと書いてあるわきのUntitleをクリックします。

新しくい開いたダイアログに名前を付けて『Rename』をクリックします。

そうするとデスクトップにある『pydicom』のフォルダに

『先ほど付けた名前.ipynb』

のファイルが作成されていると思います。

ここまでできましたら、とりあえず下準備は完了です。


広告
デル株式会社

DICOMタグの表示

まず、簡単なところからDICOMタグを表示させてみましょう。

import pydicom

ds = pydicom.dcmread('CT2.dcm')

print(ds)

コードが書けたら

shift + enterキーを押します。

いかがでしょうか?

下図のようにDICOMタグが表示できたと思います。

例えば、他のファイルのタグを見たい場合は上記コードの

ds = pydicom.dcmread(‘CT2.dcm‘)

下線部分に、ファイル名を指定すればOKです。

また、他のフォルダにあるファイルを指定したい場合はフルパスを指定することで表示することができます。

また、DICOMタグは項目ごとに表示することもできます。

例えば、モダリティーを見たい場合は

import pydicom

ds = pydicom.dcmread('CT2.dcm')
md = ds.Modality

print(md)

で『CT』と表示させることもできます。

また、タグコードで指定することもできます。

コードは16進数に変換してあげる必要があるので、

16進数に変換する『0x』とコードの下2桁4桁を合わせて指定、それらコードを [ ] で囲み ます。

なので

モダリティーの場合は     [0x0008,0x0060]

患者名の場合は        [0x0010,0x0010]

を指定します。また、値だけど取得したい場合は

『.value』

を追加してあげます。指定しない場合はタグコードとタグ名、タグの値が返されます。

import pydicom


ds = pydicom.dcmread('CT2.dcm')


md = ds[0x08,0x60].value
print('ds[0x08,0x60].value   ⇒ '+   str(md))

nm=ds[0x10,0x10].value
print('ds[0x10,0x10].value   ⇒ '+   str(nm))

md = ds[0x08,0x60]
print('ds[0x08,0x60]         ⇒ '+   str(md))

nm=ds[0x10,0x10]
print('ds[0x10,0x10]         ⇒ '+   str(nm))

タグコードで指定する場合は、4桁で指定することができます!!

(画像が消えちゃっていたので追加したため背景色が変わっちゃっています・・・)

DICOMタグの取得は、 解像度を調べたり、撮影条件を調べたりといろいろと便利です。

検査の画像をシリーズで取得した場合、ファイル名がUIDでの表記になっていることがあり、その場合にファイル名を画像番号で名前変更したりと思った以上に使えますよ。


広告
上新電機 パソコン買取サービス
The post DICOMタグの取得 first appeared on 診療放射線技師がPythonをはじめました。.]]>
71