サイトマップ
医工連携グループ | CAR | MRI | Canon | Software |

YAKAMI DICOM ツール集(フリーの DICOM Viewer/Converter/etc.)

English | 日本語

新着情報

 バグ読めない DICOM ファイルに関する情報を募集しております。 ご協力頂けますとありがたいです。
 YAKAMI DICOM Tools のソースコード(C079) のライセンスについてのお問い合わせは、 京都大学産官学連携本部 知財・ライセンス化部門 までお願いします。

目次

  1. 紹介
  2. 動作環境
  3. ダウンロード
  4. インストール
  5. アンインストール
  6. 実行方法
  7. 主な機能
  8. サポート
  9. 免責
  10. 著作権など
  11. "YAKAMI DICOM Tools"についての論文など
  12. 更新履歴
  13. 課題
  14. 雑感

紹介

 「八上 DICOM ツール集 / YAKAMI DICOM Tools」は、 フリーウェアで、研究用に DICOM ファイルを扱うためのツール集です。無料でご利用になれます。

 このパッケージは、以下のアプリケーションと文書を含んでいます。

アプリケーション

DICOM Viewer
DICOM Converter
File Mover

DICOM Viewer

 親子ウィンドウ式(MDI)高速 DICOM ビューワープログラム

DICOM Converter

 DICOM ファイルから DICOM/画像ファイルへの一括ファイル変換プログラム

File Mover

 DICOM File 整理プログラム

Folder Renamer

 DICOM ファイルを収めたフォルダの名前自動変更プログラム

DICOM Counter

 DICOM ファイル集計プログラム

Shortcut Maker

 ショートカット自動作成プログラム

Index Maker

 DICOM ファイル一覧 ("_DCM_IDX.txt") 自動作成プログラム

Table Maker

 DICOM ヘッダ表自動作成プログラム

PACS Client

 検査を検索して開くためのインターフェイスです。

WL/WW Editor

 ウィンドウ・レベル/幅(WL/WW)を編集するプログラム

Gamma Editor

 ガンマカーブ編集プログラム An editor for gamma curve settings.

CLUT Editor

Color Look-Up Table (CLUT) ファイルを編集するプログラム

Combi Editor

 WL/WW、ガンマカーブ、CLUT の組み合わせを編集するプログラム

Command-Line Converter

DICOM ファイルをコピーしたり画像ファイルに変換するコマンドラインのプログラム

Conveyer

 "DICOM Viewer", "DICOM Converter" or "PACS Client" を呼び出す中継プログラム。

共通設定

 このパッケージの複数のプログラムで共通の設定を編集するプログラム

レジストリ設定

 このパッケージに関するレジストリ登録の追加と削除を行うプログラム


文書:

readme.ja.txt はじめにお読み下さい
viewer_guide.ja.txt "DICOM Viewer" の使い方
script.ja.txt DICOM Converter 用 DICOM 変換スクリプトの書き方
DICOM 変換スクリプト例 何もしない / 匿名化 / 暗号化(binary) / 復号(binary) / 暗号化(text) / 復号(text)
filename.ja.txt 出力ファイル/フォルダの Path の指定の仕方
conv-cmd.ja.txt "DICOM Converter" をDOS 窓から対話的にコントロールする方法
pacs-cmd.ja.txt "PACS Client" をDOS 窓から対話的にコントロールする方法
cmd_conv_usage.ja.txt "Command-Line Converter" の使用法
tbl_cmd.ja.txt "Table Maker" をDOS 窓から対話的にコントロールする方法

目次へ


動作環境

目次へ


ダウンロード

 以下のリンクからお願いします。

最新版

YAKAMI DICOM ツール集 ver. 1.4.5.0 ZIP 圧縮、5,179kB (x86版)
(2014/01/21 公開、32bit版 Windows 8/7/Vista®/XP/2000 対応)

English version, 4,559kB

YAKAMI DICOM ツール集 ver. 1.4.5.0 ZIP 圧縮、5,101kB (x64版)
(2014/01/21 公開、64bit Windows 8/7/Vista®/XP/2000 対応)

English version, 4,655kB

全バージョンで、描画を DirectX と GDI を実行中に切り替え可能になりました。 既定では GDI を使います。 DirectX の使用は、 32bit 環境での動作に限ります。

旧版

YAKAMI DICOM ツール集 ver. 1.4.4.0 ZIP 圧縮、5,164kB (x86版)
(2013/10/04 公開、32bit版 Windows 8/7/Vista®/XP/2000 対応)

English version, 4,546kB

YAKAMI DICOM ツール集 ver. 1.4.4.0 ZIP 圧縮、5,091kB (x64版)
(2013/10/04 公開、64bit Windows 8/7/Vista®/XP/2000 対応)

English version, 4,633kB

全バージョンで、描画を DirectX と GDI を実行中に切り替え可能になりました。 既定では GDI を使います。 DirectX の使用は、 32bit 環境での動作に限ります。

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,714kB (x86版)
(2013/03/04 公開、32bit版 Windows 7/Vista®/XP/2000 対応)

English version, 2,360kB

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,873kB (x64版)
(2013/03/04 公開、64bit Windows 7/Vista®/XP/2000 対応)

English version, 2,481kB

YAKAMI DICOM ツール集 ver. 1.3.13.0 ZIP 圧縮、2,987kB (DirectX, x86版)
(2013/03/04 公開、32bit版 Windows 7/Vista®/XP/2000 対応)

English version, 2,650kB
使用には DirectX® の更新が必要です!!!

目次へ


インストール

 インストールするには、ダウンロードして解凍して出来たフォルダの中にある setup.exe を実行してください。

重要 以前のバージョンのものが既に インストールされている場合は予めアンインストールしておいてください。
 DirectX® 版をご利用になる場合は、YAKAMI DICOM ツール集を使用する前に、 以下のページにあるインストールプログラムを利用して、最新(2007/07/27 以降)の バージョンの DirectX® がインストールされた状態にしておいてください。
DirectX®:
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=ja-nec

 これらのプログラムをインストールして使用するには、 Microsoft .NET™ Framework 2.0 のインストールを必要とします。 以下のページでダウンロードできます。
(Windows 7/Vista® には .NET™ framework 2.0 が初めから入っています。)
.NET™ Framework 2.0:
http://www.microsoft.com/ja-jp/download/details.aspx?id=1639

目次へ


アンインストール

 コントロールパネルの「プログラムの追加と削除」(Windows XP) か 「プログラムと機能」(Windows 7/Vista®) を開き、リストから "YAKAMI DICOM Tools" (ver. 1.0.4.1 以降) か "DICOM Tools" (ver. 1.0.4.1 以前) を選び、 「アンインストール」をクリックしてください。

目次へ


実行方法

 スタートメニューの [全てのプログラム] - [YAKAMI Software] の中に ショートカットがありますので、それをクリックしてください。

目次へ


主な機能

DICOM Viewer

DICOM Viewer

 親子ウィンドウ式(MDI)高速 DICOM ビューワープログラム
* ファイル形式:DICOM 形式。little endian も big endian も対応。画像データの  マルチフレームや入れ子形式や各種圧縮にも対応(JPEG, JPEG Lossless, JPEG LS, MPEG)。  (MPEG データが含まれていた場合、外部プログラムでの再生用に .mpeg ファイルに変換)  他の医用/研究用画像形式:NIfTI, ANALIZE, RAW に対応  画像形式:JPEG (JFIF, LossLess JPEG, JPEG-LS, JPEG 2000),   Bitmap, EMF, EXIF, Icon (Windows), W3C PNG, TIFF, WMF (Windows メタファイル) フォルダ毎に子ウィンドウを開いて DICOM ファイルを表示し、測定機能も利用でき、 子ウィンドウ間での連動機能も搭載。
* 表示機能:拡大、縮小、90度毎回転、鏡像、平行移動、 ウィンドウ/レベル(WL/WW)変更、白黒反転
* 連動機能:スライス位置、縮尺と向き、表示位置、WL/WW と白黒反転
* 測定機能:長さ、円形ROIの平均値/標準偏差/最大値/最小値
 以上はログファイルによる保存と再現が可能
* 画像フィルタ:スラブ - 平均/MIP/MinIP/中央値、平面/立方 - 平均/膨張/収縮/中央値
* 画像融合
* クロス・リファレンス
* 拡大鏡
* 物差し
* 読影の進捗
* DICOM ファイルから DICOM/画像ファイルへの変換(匿名化も可)
 等々


DICOM Converter

DICOM Converter

 DICOM から DICOM へのファイル一括変換プログラム
 多数の DICOM ファイルの形式やヘッダ内容や画像やファイル名やフォルダ名を 一括で書き換え可能。スクリプトを書けばヘッダの詳細な操作も可能。 匿名化用としても使用可能。
 なお、変換速度は、 Windows Explorer での単なるファイルのコピーと同程度。


File Mover

File Mover

 DICOM File 整理プログラム
 各ファイルをヘッダ内容に応じたパス(フォルダ名+ファイル名)に配置。
 OsiriX™ の DICOM file 保存フォルダが処理可能であることを 確認済み。


Folder Renamer

Folder Renamer

 DICOM ファイルを収めたフォルダの名前自動変更プログラム
 各フォルダの名前を、その中にある DICOM ファイルのヘッダ内容に応じて変更。 その変更方法は自在に指定可能。


DICOM Counter

DICOM Counter

 DICOM ファイル集計プログラム
 指定されたフォルダの中にある全てのファイルから DICOM ファイルを探し出して集計します。


Shortcut Maker

Shortcut Maker

 ショートカット自動作成プログラム
 DICOM ファイルを収めたフォルダをスキャンし、そのフォルダへの ショートカットファイル (.lnk) を作成します。


Index Maker

Index Maker

 DICOM ファイル一覧 ("_DCM_IDX.txt") 自動作成プログラム
"DICOM Viewer" による読み込み時間の短縮のためにフォルダ毎に作られます。


Table Maker

Table Maker

 DICOM ヘッダ表自動作成プログラム
 DICOM ファイルからヘッダを読み取って一覧表を作ります。


PACS Client

PACS Client

 検査を検索して開くためのインターフェイスです。
 このプログラムは .dcmvf と .lnk のファイルを探し出して検査リストを表示します。

WL/WW Editor

 ウィンドウ・レベル/幅(WL/WW)を編集するプログラム

Gamma Editor

 ガンマカーブ編集プログラム An editor for gamma curve settings.

CLUT Editor

CLUT Editor

Color Look-Up Table (CLUT) ファイルを編集するプログラム

Combi Editor

 WL/WW、ガンマカーブ、CLUT の組み合わせを編集するプログラム

Conveyer

 "DICOM Viewer", "DICOM Converter" or "PACS Client" を呼び出す中継プログラム

Command-Line Converter

 DICOM ファイルをコピーしたり画像ファイルに変換するコマンドラインのプログラム。出力パスはパスコマンドで指定可。

共通設定

 このパッケージの複数のプログラムで共通の設定を編集するプログラム

レジストリ設定

 このパッケージに関するレジストリ登録の追加と削除を行うプログラム


目次へ

サポート

 YAKAMI DICOM ツール集 / YAKAMI DICOM Tools に関する情報と最新版のバイナリを以下のページに置いています。

YAKAMI DICOM ツール集 / YAKAMI DICOM Tools:
http://www.kuhp.kyoto-u.ac.jp/~diag_rad/intro/tech/dicom_tools.html

 バグや改善提案などがございましたら、 email まで ご連絡いただけますとありがたいです。 特に、"DICOM Viewer" で開かない DICOM file がございましたら 教えて頂けますとありがたいです。

目次へ


商標など

ライセンス条項

 なお、 YAKAMI DICOM Tools のソースコード(C079) のライセンスについてのお問い合わせは、 京都大学産官学連携本部 知財・ライセンス化部門 までお願いします。

依存関係

免責

 このソフトウェアは、「そのまま」で提供され、知的財産侵害が無いことや 特定目的に適合していることの保証を含め、且つそれに限らず、 一切の明示的及び暗示的な保証をいたしません。  私たちは、このソフトウェアの使用に起因する一切の直接的、間接的、 偶発的、特殊的、典型的、必然的な損害(代替の品物やサービスの調達費用、 利用機会やデータや利益の損失、誤診を含め、且つそれに限らず)に対して、 たとえ、いかなる原因でも、いかなる法的責任が問われようとも、 契約や法的強制や不法行為(過失等を含む)があろうとなかろうと、 その様な損害の可能性が指摘されていようとも、一切の責任を負いません。

目次へ


"YAKAMI DICOM Tools" についての/を用いた研究の論文・発表など

査読付き論文 / Peer Reviewed Scientific Papers

学会発表 / Presentations

商用誌

目次へ


更新履歴

課題

Lossless JPEG 形式への対応 → ver. 1.1.3.0 で対応しました。
 FreeImage open source image library を使って JPEG 2000 などで画像データが圧縮された DICOM ファイルの読み取りに 成功しました。
 しかし、 FreeImage で使われている JPEG のコードが Lossless JPEG に 対応していないものなので、残念ながら Lossless JPEG に対応できません。 フリーでの LossLess JPEG への対応を試みているものの、選択肢は少なく、 残念ながらまだできていません。情報をかなり調べてみましたが、 私の状況と似た方もいらっしゃるようで、 複数個所で似た質問を見かけましたが、いずれも未解決です。
 選択肢を挙げてみます。
GDCM:Lossless JPEG を使った DICOM ファイルも 問題なく読み込めました。ただ、DICOM 処理部分も使用することになり、 採用するならば、100% .NET で出来ている DICOM 処理の自作ライブラリと、 それを使って実現された種々の機能やその他有利な点をどうするか といった問題の解決が必要になります。
ljpeg62.0.1:残念ながらまだ VisualStudio での コンパイルに成功していません。付属している Visual C++ 用のファイルが古く、 残念ながら VisualStudio 2005/2008 では読み込めません。
IJG Win32 - JPEG co-decoding library with Lossless JPEG Extentions:コンパイルは できたのですが、 FreeImage との連携はできていません。 FreeImage に含まれている IJG 由来のコードとは バージョンが違い、 VisualStudio でこれを project として FreeImage の Solution に組み込んで利用するにはかなりの改造が必要なようで、 現在のところできていません。また、このコードを hack して C# のコードから 利用するとなると、自分で Wrapper を作らなければならず、できておりません。

Multiframe format への対応 → ver. 1.0.8.8 で対応しました。
 自作の DICOM 処理ライブラリは、 NEMA のページに 置いてある規格を読んで作ったので、 構造の認識自体はできていますが、ひとつの DICOM ファイルに複数の画像が含まれている場合の Viewer での Interface をどうするかという問題は残っています。 余裕が出来たら行いたいと思います。
MPR への対応
 今後の対応を検討しています。余裕が出来たら行いたいと思います。
DICOM server との通信
 今後余裕があれば取り組みたいと思っております。私は NEMA のページに置いてある DICOM の資料を見て プログラムを実装して参りましたが、通信部分はまだ習得しておりません。
 GDCM の使用なども検討しております。

目次へ


雑感

フレーム飛びについて

 Windows 環境で GDI を用いた通常の描画を速い速度で行うとコマ落ちが発生してしまいます。 プログラムの描画とディスプレーの書き換えが非同期だからです。 CPU 上で動作しているプロセスの実行時間は不定ですから、これを同期するには、 ビデオカード上で生成している、ディスプレーに送る信号の画面更新のタイミングに合わせた 外部からの割り込みが必要です。 それを利用するには、プログラムの側では DirectX や OpenGL などを用いる必要があります。 .NET の環境から容易に DirectX を利用するには、 Managed DirectX が便利ですが、 残念ながら開発は中止されたようで、 64bit 環境には対応していません。 ただ、 DirectX は Windows Aero を経由して使うという方法もあります。 YAKAMI DICOM Tools では、DirectX 版では前者、非 DirectX 版では後者を採用しています。 後者を実装する際には、とあるソフトの開発記録というサイトの Windows 7 におけるULWの挙動 (3)というページを参考にさせていただきました。 フレーム飛びの問題は、医療に用いる上では見落としなど重大な問題に繋がりかねませんので、 論文学会発表として発表させていただきました。 重要な内容を分かりやすく書いて公開してくださっていた方々に感謝します。

.NET のフォームの「メモリリーク」について

 一般に、C# などの Garbage Collection 機構を持つ言語では、 「どこからも参照されなくなったら、破棄されて Gargbage Collection の対象となる」 と言われて、常識とされています。しかし、少し考えてみるだけで、 これには例外があることが分かります。それは Form オブジェクトです。
 プログラム起動時に Main() 関数の Application.Run() で呼び出される Form (=MainForm) 以外に、 起動後に別のフォーム (=SubForm) を生成して表示したとします。 すると、 SubForm への参照を MainForm が保持しなくなっても、 SubForm を破棄するわけにはいきません。なぜならそれは表示され、使用されているからです。

public class MainForm : Form
{

    private void openButton_Click(object sender, EventArgs e)
    {
        SubForm frm = new SubForm();
        frm.Show();
    }
}

 Application.OpenForms が参照しているではないかと思われる方も いらっしゃるかもしれませんが、それが参照するか否かをプログラマが 直接制御することは出来ません。つまり、他のオブジェクトの場合と違い、 null を代入するなどして Form への参照をプログラマが明示的になくすことはできず、 使われなくなったかどうかが .NET Framework により別途判断されているわけです。 しかし、使わなくなったかどうかを的確に判断するは難しい問題だと思います。 なぜなら、見えなくなっても、再度表示させることが出来なくなっても、 それゆえ利用者から操作されることが全く無くても、 例えば処理に時間のかかるプロセスが稼働中であったり、 Timer などの内発的なイベントを受けて 何らかの仕事をしていたりすることはあり得るからです。 ですので、プログラムを書く側としては、明示的に Dispose() を呼んだら 確実に破棄して貰えることを期待したくなるのですが、残念ながらそうはなっていませんでした。 たとえ Form.Dispose() を呼んでも、Timer が動作していたらメモリを解放してくれません。 これはかなり注意の必要な仕様なのではないかと思います。 これが原因と思われる未解決の案件もかなりありそうです。 一言に Timer と言っても、 System.Threading.Timer クラス、 System.Timers.Timer クラス、 System.Windows.Forms.Timer クラスなどと多数あって必要に応じて使い分けられていますので、 これもこの問題を分かりにくくしているのかもしれません。
参考
http://bbs.wankuma.com/index.cgi?mode=al2&namber=11716&KLOG=26
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46554&forum=7
http://www.atmarkit.co.jp/fdotnet/index/bbs/dir98.html

.NET での最大化・最小化ボタン(機能)の override

 いつもお世話になっているDOBON.NETフォームを移動できないようにする を参考にして海外のサイトで情報を集め、ウィンドウの最大化・最小化のコマンドを override してみました。コードは下記の通りです。最大化・最小化ボタンだけではなくて、 タイトルバーのダブルクリックやコントロールボックスのメニューで最大化・最小化を行っても 同じ結果が得られます。カスタムでタイトルバーを作ってボタンを配置すると どうしても統一感を崩しがちですので、 Windows が標準で用意するものをそのまま 使うことが出来ると何かと便利なことも多いと思います。参考になれば幸いです。

        private const int WM_SYSCOMMAND = 0x0112;
        private const int SC_MINIMIZE = 0xF020;
        private const int SC_MAXIMIZE = 0xF030;

        [System.Security.Permissions.SecurityPermission(
            System.Security.Permissions.SecurityAction.LinkDemand,
            Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_SYSCOMMAND)
            {
                switch (m.WParam.ToInt32() & 0xFFF0)
                {
                    case SC_MAXIMIZE:
			/* Do Something */
                        return;
                    case SC_MINIMIZE:
			/* Do Something */
                        return;
                }
            }
            base.WndProc(ref m);
        }

参照

目次へ


YAKAMI DICOM Tools. Copyright (C) Masahiro YAKAMI 2014. All rights reserved.
ページ作成日:2007/10/12、最終更新日:2014/01/21


「ソフトウェア」に戻る
「医工連携グループ」に戻る


サイトマップ