ホーム » 「pydicom 2.2」タグがついた投稿

タグアーカイブ: pydicom 2.2

pydicom 2.2 : イントロダクション

pydicom 2.2 : イントロダクション(翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/20/2021 (v2.2.1)

* 本ページは、pydicom の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス 無料 Web セミナー開催中

◆ クラスキャットは人工知能・テレワークに関する各種サービスを提供しております。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
  • ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
E-Mail:sales-info@classcat.com  ;  WebSite: https://www.classcat.com/  ;  Facebook

 

pydicom 2.2 : イントロダクション

pydicom は医療画像、レポートと放射線治療オブジェクトのような DICOM ファイルを扱うための純粋な Python パッケージです。

pydicom はこれらの複雑なファイルを簡単な操作で自然な pythonic 構造に読むことを簡単にします。変更されたデータセットは再度 DICOM 形式ファイルに書くことができます。

ここに対話的セッションで pydicom を使用する簡単なサンプルがあります、放射線治療計画ファイルを読み、患者の設定を head-first-supine (仰臥位) から head-first-prone (腹臥位) に変更し、そして新しいファイルにセーブします。

import pydicom
from pydicom.data import get_testdata_file
filename = get_testdata_file("rtplan.dcm")
ds = pydicom.dcmread(filename)  # plan dataset
ds.PatientName
ds.dir("setup")  # get a list of tags with "setup" somewhere in the name
ds.PatientSetupSequence[0]
ds.PatientSetupSequence[0].PatientPosition = "HFP"
ds.save_as("rtplan2.dcm")
'Last^First^mid^pre'

['PatientSetupSequence']

(0018, 5100) Patient Position                    CS: 'HFS'
(300a, 0182) Patient Setup Number                IS: '1'
(300a, 01b2) Setup Technique Description         ST: ''
ds.PatientSetupSequence[0].PatientPosition = "HFP"

pydicom は DICOM サーバではなく (代わりに pynetdicom 参照)、主として画像を表示するためのものでもありません。Python コードで DICOM ファイルのデータ要素を操作させるために設計されています。

pydicom はインストールと使用が簡単で、 純粋な Python パッケージですから、Python が動作するところではどこでも動作するはずです。

一つの制限は圧縮された pixel データ (e.g. JPEG) は最初にそれを解凍する場合にのみ知的な方法で変更できることです。ひとたび解凍されれば、最初に解凍されたデータと同じ方法で変更できて DICOM ファイルに書き戻すことができます。

 

以上



pydicom 2.2 : README (概要)

pydicom 2.2 : README (概要) (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/18/2021 (v2.2.1)

* 本ページは、pydicom の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

 

pydicom 2.2 : 概要 (README)

pydicomDICOM ファイルで作業するための純粋な Python パッケージです。それは簡単な “pythonic” 流儀で貴方が DICOM データを読み、変更して書くことを可能にします。

純粋な Python パッケージですから、pydicom は他の要件なしに Python が実行できる場所であればどこでも実行できますが、Pixel データで作業している場合には NumPy もインストールすることを勧めます。

DICOM networking のための Python ライブラリを探している場合には私達の別のプロジェクトに関心があるかもしません : pynetdicom

 

インストール

pip の使用 :

pip install pydicom

conda の使用 :

conda install -c conda-forge pydicom

開発版のためのインストール手順を含む詳細は、インストールガイド を見てください。

 

ドキュメント

pydicom ユーザガイドチュートリアルサンプルAPI リファレンス ドキュメントは GitHub ページ上の 現在のリリース開発版 の両方に対して利用可能です。

 

Pixel データ

圧縮されたそして非圧縮の Pixel データは常に バイト として読まれ、変更されて書かれることが可能です :

>>> from pydicom import dcmread
>>> from pydicom.data import get_testdata_file
>>> path = get_testdata_file("CT_small.dcm")
>>> ds = dcmread(path)
>>> type(ds.PixelData)

>>> len(ds.PixelData)
32768
>>> ds.PixelData[:2]
b'\xaf\x00'

NumPy がインストールされていれば、Pixel データは Dataset.pixel_array プロパティを使用して ndarray に変換できます :

>>> arr = ds.pixel_array
>>> arr.shape
(128, 128)
>>> arr
array([[175, 180, 166, ..., 203, 207, 216],
       [186, 183, 157, ..., 181, 190, 239],
       [184, 180, 171, ..., 152, 164, 235],
       ...,
       [906, 910, 923, ..., 922, 929, 927],
       [914, 954, 938, ..., 942, 925, 905],
       [959, 955, 916, ..., 911, 904, 909]], dtype=int16)

 

圧縮された Pixel データ

JPEG, JPEG-LS と JPEG 2000

JPEG 圧縮 Pixel データを ndarray に変換することは一つまたはそれ以上の追加の Python ライブラリのインストールを必要とします。どのライブラリが必要かの情報については、pixel データハンドラ・ドキュメント を参照してください。

 

RLE

RLE Pixel データをエンコードしてデコードするには NumPy を必要とするだけですが、それは非常に遅い可能性があります。プロセスを高速化するために 一つ以上の追加の Python ライブラリをインストールする ことを考えることを望むかもしれません。

 

サンプル

より多くの サンプル はドキュメントで利用可能です。

患者の ID を変更する

from pydicom import dcmread

ds = dcmread("/path/to/file.dcm")
# Edit the (0010,0020) 'Patient ID' element
ds.PatientID = "12345678"
ds.save_as("/path/to/file_updated.dcm")

 
Pixel データを表示する

NumPy と matplotlib を使用して :

import matplotlib.pyplot as plt
from pydicom import dcmread
from pydicom.data import get_testdata_file

# The path to a pydicom test dataset
path = get_testdata_file("CT_small.dcm")
ds = dcmread(path)
# `arr` is a numpy.ndarray
arr = ds.pixel_array

plt.imshow(arr, cmap="gray")
plt.show()

 

以上



ClassCat® Chatbot

人工知能開発支援

◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com

カテゴリー