スキップしてメイン コンテンツに移動

はじめに

所信表明

VISブログ担当の小林です。
私の専門は医用画像情報です。
医用画像情報を扱う際に、DICOMデータの取り扱いは避けて通れません。
しかし、DICOMについて調べると、リソースが無くて困ることが多いです。
そこで、個人的に好きなツールである、dcm4cheを使ったDICOMのハウツーを備忘録としてこの技術ブログに残していくことにしました。

これまでにいろいろなオープンソースのDICOMツールを使ってきました。
DCMTK、GDCM、pixelmed.jarやpydicomなどです。

このブログではdcm4cheを使います。dcm4cheはこれらのツールに匹敵する強力なツールです。そして特筆すべき点として、堅牢なDICOMサーバ(dcm4chee)もこのツールを使ってオープンソースで提供されています。

dcm4che

2000年頃、Gunter Zeilinger氏は、商用のJava DICOM Toolkit(JDT)を使ってJDicomユーティリティを作成しました。
この後、彼は自身のDICOMツールキットを書くべきであると決めたそうです。
そして、dcm4che(d-c-m-for-chayと発音)が生まれました。
Gunter氏は、オープンソースの革命的な側面にインスパイアされて、有名な革命家にちなんで、ツールキットに名前を付けることにしたそうです。

当時、このツールキットのオリジナル版は、JavaベースのDICOM API用のJSR(Java Specification Request)としてSun(現在はOracle)に提出することを目的として設計されました。
そのことを念頭に置いて、ツールキットはインターフェース層と実装層に分けられました。
JSRには至りませんでしたが、プロジェクトはJava DICOM開発コミュニティの間で人気が高まり始めました。
そして、dcm4cheをDICOMバックエンドにしたdcm4jbossアーカイブが誕生したそうです。

このDICOMサーバアプリケーションを開発するサブプロジェクトは、IHE Image ManagerとImage Archiveアクターを実装しました。
dcm4jbossは、医用画像の研究および画像診断レポートを管理するための堅牢で安定したプラットフォームに進化しました。
その道は決して楽ではありませんでしたが、何度もIHE Con​​nectathonに参加して、そして、多くの施設で利用されるようになります。
近年では、このアーカイブはdcm4chee(d-c-m-for-cheeと発音)と呼ばれています。
このcheeは、「che」+「e」で、最後の「e」は商用での使用を表す「e」です。
その後、2006年頃、Gunter氏はDICOMツールキットを再設計する必要性を感じられたそうで、パフォーマンス、メモリ使用量、柔軟性、およびシンプルさ(JSRに基づくインターフェース層の削除)を追求したツールが現在も開発され続けています。
このツールキットの新しいバージョンは、dcm4chex(最後のxはバージョンナンバーです。2019/6/25現在はdcm4che5)と名づけられています。

Table Of Contents

DICOMユーティリティ編(予定)


  • dcm2dcm: 指定された転送構文に従ってDICOMファイルをトランスコードする
  • dcm2jpg: DICOM画像をJPEGまたは他の画像形式に変換する
  • dcm2str: dicomファイルまたはコマンドラインパラメータにAttribute形式パターンを適用する
  • dcm2xml: DICOMファイルをXMLに変換する
  • dcmdir: DICOMDIRのダンプ、作成、更新をする
  • dcmdump: DICOMファイルをテキストにダンプする
  • dcmldap: LDAPサーバへ/からのネットワークAEの設定エントリの挿入/削除
  • dcmqrscp: Simple DICOM archive (簡易DICOMサーバ)
  • dcmvalidate: 指定された情報オブジェクト定義に従ってDICOMオブジェクトを検証する
  • emf2sf: DICOM Enhanced Multi-frame画像を従来のDICOMシングルフレーム画像に変換
  • findscu: DICOM C-FIND Query Requestの実行
  • getscu: DICOM C-GET Retrieve Requestの実行
  • hl72xml: HL7 v2.x messageをXMLへ変換
  • hl7pix: HL7 v2.x PIX Managerへ問い合わせる(クエリ)
  • hl7rcv: HL7 v2.x Receiver
  • hl7snd: HL7 v2.x messageの送信
  • ianscp: DICOMインスタンス可用性通知の受信
  • ianscu: DICOMインスタンス可用性通知の送信
  • jpg2dcm: JPEGまたはMPEGをDICOMファイルへ変換
  • mkkos: DICOM Key Object Selection Documentを作成
  • modality: DICOM Modalityシミュレータ
  • movescu: DICOM C-MOVE Retrieve requestの実行
  • mppsscp: DICOM Modality Performed Procedure Step Receiver
  • mppsscu: DICOM Modality Performed Procedure Stepの送信
  • pdf2dcm: PDFをDICOMファイルへ変換
  • stgcmtscu: DICOM Storage Commitment Requestの実行
  • storescp: DICOM Composite Object Receiver(アーカイブ機能)
  • storescu: DICOM Composite Objectsの送信
  • stowrs: Web上でDICOM Composite Objectまたはバルクデータファイルを送信する
  • wadors: Wado RS Client Simulator
  • wadows: Wado WS Client Simulator
  • xml2dcm: XMLからDICOMファイルを更新/作成する
  • xml2hl7: XMLからHL7 v2.x messageを作成する
  • xml2prefs: Java Preferencesのインポート

プログラミング編(予定)

可能な限りユーティリティのコードをそのまま使う。

  • 既存のDICOMデータの読み込みと書き込み
  • DICOMデータのメタデータ確認
  • DICOMデータのピクセルの読み込みと書き込み
  • 8bit-grayscale画像のDICOMデータを作成する
  • 16bit-grayscale画像のDICOMデータを作成する
  • 32bit-grayscale画像のDICOMデータを作成する
  • 32bit-RGB画像のDICOMデータを作成する
  • MPEGのDICOMデータを作成する
  • セカンダリキャプチャ画像(DICOMPDF)を作成する
  • dcmqrscpサーバーをコードから起動する
  • dcmqrscpにエコーを送ってみる
  • dcmqrscpにdcmsndを使ってDICOMデータを送信してみる
  • dcmqrscpにC-Findしてみる
  • dcmqrscpにQRしてみる
  • DICOMDIRを作成する
  • プリンターへDICOMプリントしてみる(Weasis参照)

自分へ

ボチボチ。でもやるからにはしっかりやろう。趣味で。

ブログ開設:2019/6/25
更新 2019/11/5

DICOMを制す者が医用画像情報を制す
"The player who controls the DICOM, controls the Medical Imaging Informatics."
by Tatsuaki Kobayashi

コメント

このブログの人気の投稿

DockerでDICOMサーバを使いまわす

DCM4CHEEがだいぶ前からDocker対応しているので、その手順をメモします。 基本的には、このページに記載の通りです。 https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker 一番シンプルな構築方法でいきます。 https://github.com/dcm4che/dcm4chee-arc-light/wiki/Run-minimum-set-of-archive-services-on-a-single-host あくまでもテストケースですが、今回は仮想OSを立てて、その中にDockerを入れて、サーバーのホストにします。以下のようにしてみました。 大元のPCでの作業 VirtualBox(またはHyper-V)を用意する Ubuntu19.04を最小構成で仮想化する(メモリは4GB, 割り当て仮想保存容量127GBなど)。 (インストール時にイメージを再起動できない場合はPC本体を再起動するとよいことがあります) Ubuntu19.04を起動する。 Ubuntuで行う作業 Ubuntuをインストールしたら行うお決まりのコマンドを打つ sudo -i apt-get update apt-get upgrade vimを入れておく  apt install vim UbuntuにJavaを入れておく。(JDK9以上) apt install openjdk-12-jre-headless Dockerをインストールする apt install docker.io DCM4CHEE関連のイメージを取得する(一行ずつ実行) docker pull dcm4che/slapd-dcm4chee:2.4.44-19.0 docker pull dcm4che/postgres-dcm4chee:12.0-19 docker pull dcm4che/dcm4chee-arc-psql:5.19.0 docker pull dcm4che/keycloak:7.0.0 docker pull dcm4che/keycloak-gatekeeper:7.0.0 docker pull

dcm4cheをローカル環境にインストールする

DCM4CHEのインストール ここからダウンロードします。 執筆時点では(2019/11/5)、最新バージョンは5.19.0です。 https://sourceforge.net/projects/dcm4che/files/dcm4che3/ (リンクではdcm4che3となっていますが、バージョンでは5で、何か意図があるのかなと、思っています。) 環境変数パス ダウンロードができたら、解凍して、binフォルダまでの環境変数パスを通します。 Windows ならシステムの詳細設定からだったと思います。 MacやLinuxなら、.bashrcあたりにパスを追加します。 例えば、ubuntuで、localフォルダにコピーした場合ならば。 vim ~/.bashrc から、「i」でインサートモードにして、以下を追記して、 #dcm4che export PATH="$PATH:/usr/local/dcm4che/dcm4che-5.15.1/bin" 「esc」押して、「:」おして、wq!でエンター。 追記できたら、 $source ~/.bashrc パスが通せたか、dcmdumpコマンドで確認します。 > dcmdump dcmdump: missing file operand Try `dcmdump --help' for more information. このように表示されれば、インストールは完了です。 注意 DCMTKをインストールしている場合、コマンドが被ることがあります。 DICOMツールは何個もいらないので、DCM4CHEを使うときはDCM4CHEのみにパスを、DCMTKを使うときはDCMTKにパスを通すと競合しません。 Visionary Imaging Services, Inc.