プラグイン -さて本題-

HorliX では、Horos のプラグイン(plugin)が走る。

ただし、以前にテストしたのは、Horos の中の人がコンパイルしたものをそのまま組み込んだにすぎない。

リポジトリからローカルにソースを落としてコンパイル。

Xcode の設定が面倒でしたが、しっかりコンパイルはできました。

Horos に手を出した理由の一つは、これまで特殊用途で作ってきた医療画像関連のソフトにある程度汎用性を持たせたかったからで、これで目標に一歩近づいたように思う。

 

ついでにプラグインの配布元を手持ちのサーバ上に設置。
こうなると案内画面も自前で改変できる。

画面が微妙に変わっているの、わかりますかね?

 

以前に予告した通り github のフォルダ構成も大幅変更。

ブランチをもう一つ追加し、余計なファイルを取り払って、こちらで独自仕様を追求することにした。従来のブランチは、今まで通りフォーク元の horos とつかず離れずにしておく(予定)。

 

また、Xcode を 9.4 に変えた。9.2 → 9.3 の変化は大きかったが、今回のは、はっきりいって違いがわからない。

Xcode上から大量の修正箇所をごそっとコミット・プッシュするのは、けっこう気持ちいい。

 

【2018】HorliX/Horos/OsiriX【上半期】

OS X は、HighSierra の次の OS から32ビットサポートを中止することが決定している。

HorliX/Horos/OsiriX もそれなりに影響を受けると思う。

 

OsiriX…既に32ビット版の OsiriX Lite は提供されていない。もうお試し版を提供する必要はないってことでしょうか。いいなあ。

 

Horos…巷で言われているようにHorosは全てが64ビットで走っているわけではない。さすがに次代のOSがリリースされるまでには64ビット対応を推し進めると思うが、あんまりうまくいってない印象。contributor の一人としても心配

 

HorliX…64ビットには完全対応。ダイコムプリントなどの機能も実装したい。また、フォルダ構成も変更の予定。せっかく用意した独自ライブラリなんかもホロス由来の Unzip をやってしまうせいで何度か上書きされてしまった。ライブラリは完全に本体から独立させ、リポジトリには含めない。こうした構成の方が開発者にとっては都合が良い(はず)。

 

HorliX/Horos 動作テスト プチβテスト 

HorliX/Horos は、開発環境ではそれなりに動くようになってきたので、他の Mac で動くかどうか試してみた。とはいっても手持ちの Mac ですぐに使えそうなのは、一昔前の MBP ( Mac Book Pro) のみ。

これでがんばってみる。

 

一般の Mac での動作確認

コードに署名をしたものは、やはりというべきか開けなかったが、無印は問題なく動いた。

ややパワー不足かと思っていたが、「ノートにしては大画面」+「GPU 使用」のおかげでかなり鮮明な画像を描いてくれた。

 

アイコンなどカスタマイズ

また、某教育機関向けのカスタマイズ作業にもとりかかった。アイコンを変えただけだがけっこうかわいくなった。→G-HorliX と命名。

まだ、公開許諾が取れてないので、ぼかしいれなきゃならないのが残念。

公開許諾が取れましたので、それに関する記事を書きました。

解剖ちゃんホーリックス

ネットワーク対応 PACS編

これで、同一ネット内に2台の HorliX/Horos がつながったので、PACS 的に DICOM 画像を受け渡しできるか試してみた。(PACS 関係は詳しくないので間違いがあればご指摘ください)

MacBookPro に HorliX

MacBook に G-HorliX

が走っている。AEタイトルや IP アドレスなどを適当に設定。

G-HorliX でツールバー上の「Send」アイコンを押下するとこのようなダイアログが出現する。

以前に落としていたダイコム画像を MacBookPro の HorliX に Send する。

一生懸命送ってます。

HorliX 側でも受領中。361枚のシリーズものなので数分かかる。感心したのは受領する度に通知が表示されたこと。

開いてみる。

ちゃんと送れてましたね。

 

ネットワーク対応 SSL通信

続いて、これを SSL 通信でおこなってみたい。というのもデバッグしているとき、本家 Horos のコードのままだとバグがでているのに気がついたから。わかる範囲で修正してエラーメッセージはでなくなったが、正しく動作しているか確認したいのだ。

と思ったのですが、いきなり自己証明書で PACS 的な使い方をするとわけがわからなくなりそうなので、まずはウェブサーバー機能で試す。

SSLテストは、OpenSSL のコマンドを叩かないといけないのでいつも避けてたのだが、OS X はキーチェーンアクセスというものを使ってサーバー証明書がグラフィカルに作れるらしい。まずはそこから。

キーチェーンを起動して、証明書アシスタント >> 証明書を作成

 

指示に従って項目を選択。

大事なのは、最終的に「SSLサーバ証明書」をつくること。なお、名称は G-HorliX SSL とした。

これは、いわゆるオレオレ証明書というものです。実稼働させるときは、VeriSign 社などから署名してもらうとよいでしょう。

 

この作業が終わったら、HorliX に戻り 環境設定(preference)>> Web サーバ で設定画面を出し、https 通信を選ぶ。

再起動後、ウィンドウズ機ブラウザからまず

http://(HorliX IP アドレス):3333

を呼び出す。当然、つながらない。次に

https://(HorliX IP アドレス):3333

を呼び出す。今度はつながる。

このときの通信のやり取りをキャプチャソフトで解析すると

となってました。無事、SSL で暗号化されてましたね。

なお、通常の http 通信で同様の解析をすると

こんな感じで傍受できちゃいます。(当たり前ですが)平文ですので、一目見ただけでもやり取りしている DICOM 情報は、TOSHIBA の CT で撮像されたものだとわかりますね。

なお、本家ホロスはクライアントブラウザから URL を呼び出すとサーバは、キーチェーンを利用できない(作製した SSL 証明書を呼び出せない)らしく

というような画面で止まります。予想した通りの挙動。

本家では使えない SSL を使えるようになったり、なんか本家を超え始めた予感。

 

CDからのエクスポート

github issue に↓というヘルプがあった。

 

Can’t seem to load images from CD/DVD.
When DVD is popped in, the pop up window asking what to do with the files comes up, but when “copy” is clicked, the disk ejects without copying the files.

If I try to load them from the “Import” button top left, or from the File >> Import…>>Import Files menu, the copying happens at 1 image / 5 minutes (yes 5 minutes).

Can anyone help?

Mac OS Sierra 10.12.5

え? そんな落とし穴が、と思って HorliX でも CD から画像を読み込ませたが、300枚ほどを1分かからずに読み込みました。

 

HorliX/Horos 動作テスト タグ編集

Horos/OsiriX には色々便利な機能があるけど、もっとも有り難いのはタグ編集機能でしょう。

他のフリーソフトでもタグ編集はできないことはないですが、ほとんどのソフトで動作が不安定です。

なぜ、こんなことがおこるのか不思議に思った人は、ダイコムタグ編集周りのライブラリを調べると良いかもしれないです。

なお、HorliX では、ライブラリの最新版を載っけてます。私がよく使うんで。

今回は、タグ編集機能を使って A T さんを再度 Akihabara Taro さんに直します。

タグ編集機能はデフォルトではオフになっているので、そうなっている場合は、メニューバー >> HorliX >> 環境設定 で設定画面を表示させ 一般 ( general ) を選択。

メタタグ編集をオンにします。

タグ編集自体は簡単。

DBインスペクタより、編集したいスタディを選び、

Meta-Tag アイコンを押下。

タグ編集パネルが現れるので、編集したいタグの行を選択。

この状態で Edit アイコンを押下。するとセルが編集可能になるので適宜書き換え。

編集が終了したら、Apply アイコンを押下。

編集された行は赤く表示されます。これで問題なければこのウィンドウは閉じて構いません。

DBインスペクタに戻ると

無事、A T さんは Akihabara Taro さんに書き換わってますね。

お疲れ様でした。

 

HorliX/Horos 動作テスト 匿名化

DICOMファイルの匿名化は、研究目的などで比較的よく使われる機能だ。

その動作確認。

まず、匿名化したいスタディを選択。今回は Akihabara Taro 君。素敵な名前なのに…。

選択された状態で画面左上、ツールバーにある Anonymize アイコンを押下。

するとこんなウィンドウが出現するので、適宜情報を修正。

今回は Akihabara Taro を A T に変更。

Replace ボタンを押下。すると

DB インスペクタ上の表示ではしっかりと変更が反映されてますね。

 

なかなか調子いいですね。

 

HorliX/Horos 動作テスト プラグイン周り

Horos/OsiriX で各種プラグインをインストールすることで、機能を拡張することができる。

HorliX でもこの仕組みがうまく働くかどうかチェック。

メニューバーから、プラグイン >> プラグインマネージャー と進む。デフォルトでは何もインストールされていない。

ここでは、JPEG 画像をDICOMデータとして取り込む JpegToDicom を選ぶ。

「Download & install」ボタンを押下。

有効にするには HorliX を再起動する必要がある。

再起動後、プラグインメニュ >> Database をチェックするとを JPEG to DICOM が選べるようになっている。

案内に従って適当な Jpeg 画像を読み込ませる。今回は HorliX のアイコン画像。

 

患者名も HorliX で登録。

すると…。

しっかりDICOM情報として取り込まれてますね。

 

これで Jpeg ファイルを HorliX/Horos に取り込むことができるようになりました。

 

 

HorliX Ver 0.0.1

ホロス( Horos ) のコードを少々手直しすれば、Xcode 9.3 でもビルドは可能です。

まだ gihthub にあげる段階ではないのですが、少々解説します。

Horos on Xcode 9.3

なぜ、ホロスのコードが Xcode 9.3 でビルドできないのかといえば、同包されているライブラリのうちいくつかが 32bit でしかコンパイルされていないためです。

たいていのライブラリはソースを 64bit でコンパイルし直せば、問題ありません(この作業はほぼ終了)。

問題は、ソースがもはや存在しないライブラリです。

ここは私もちょっとひっかかったのですが、そういったライブラリのうち内容が推測できるものに関しては機能を新たに実装し直してビルドを通すことにしました。

こうするとビルドは通るのですが、その代わり元のライブラリはもう使えません。

結局、DICOM Viewer を部分的に作り直しているようなものですね。

このせいでファイル構成などはかなりすっきりしてきたと思うのですが、その代償として機能の一部が犠牲になりました。

代表的なところだとダイコムプリントでしょうか。

関連ソースを読むとネットワーク上のダイコム対応プリンタというものに独自のデータ形式で印刷データを渡しているのですが、前述のように機能が実装してあるソースがありません。がんばれば、実装も可能なんでしょうが、データ形式もよくわからないし、そもそもダイコム対応プリンタなるものが普及しているようには思えない。なので、この機能はオミットしました。

いや、どうしてもダイコムプリンターを使いたいという人がいれば、実装をがんばってみてください。みんな幸せになれますから。

HorliX

また、64bit 化を推し進めるうちにプロジェクト自体が本家 Horos から、微妙に離れてきたようなので(もう、コードも機能も違ってきている)、以前使っていた HorosJ というネーミングは今後止めます。

いちおう、HorliX (ホーリックス)と名付けましたので、今後はこの名称でお願いいたします。

Horos + OsiriX 

なので、Horlix ですね。

 

 こちらの名馬の名にもちらっとひっかけてたりもしますが。

 

DICOM ファイル入手先

HorliX/Horos のサンプル画像として紹介していた akihabara taro 君のページがリンク切れになったようなので、海外サイトなどを物色。

DICOM Library

が目についた。

Web DICOM Viewer はなかなか使えそう。アップロードしたときの匿名化は自動でやってくれた方がいいかな。

試しに腹部 CT のデータを落として、HorliX に読み込ませた。

スライス厚が 0.6mm 程度なので動画書き出しすると面白いかなと思ってやってみました。

どんなもんでしょ?

これ読んでるだけでは伝わらないでしょうが、 HorliX はライブラリを適宜 64bit に置き換えているので、書き出し速度は本家 Horos に比べかなり速くなっています。

 

 

DICOM Viewer に segmentation 機能追加検討

CT 値(ハウンスフィールド値)が求まると面白いことができるようになる。

その一つは、画像上である程度まで組織を分離(segmentation という)できるようになることだ。

例えば、前回の画像で

CT 値 組織
-109 ~ -10 皮下組織
-9 ~ 24 表皮組織
25 ~ 229 筋組織
230 ~ 骨組織

と閾値処理すると↓のような感じになる。

大雑把にはいい線はいっているのだが、細かいところではダメダメである。

骨組織は文句なし、筋組織はまずまずといったところだが、致命的にダメなのは神経組織がまったく分離できないこと。

これは神経組織のCT値が 30~40 であり、筋組織と値が被ってしまうことによる。

かなり以前に行きがかり上この課題に取り組んだことがあるが、そのときはアルゴリズムを工夫することで、半自動的にセグメントできるようになった。

最近の研究結果はどんなもんだろうかと先ほどざっと調べたが、あまり決定的な仕事はなされていないようだ。

やはりあったかと思ったのは、deep learning の手法を用いて云々というもの。流行りなので手を出したい気持ちはわかるのだが、今ひとつピンとこない。この課題の延長線上には、当然、「計算機による画像診断」というかなり重要なテーマが控えているのだが、その際には、どうしても「診断根拠」というものが必要になってくる。現時点での deep learning 的手法は、判断の根拠といった部分の機構が上手く説明できていないような気がする。

もちろん、探索的に用いるのなら有効だろうが。(確か Alpha Go も新手の生成のときにしか deep learning を使っていないはずだ)

ともあれ、目的も成果もわかりやすいこの分野、みなさんもトライしてみてはいかがでしょう?