Horos 再び

旧バージョンとしてすっかり放置されていた当ブログであるが、アクセス解析みたらそれなりに来訪者がいるようだ。

なかでも、「ん?」と思ったのが、「horos 日本語化」あたりで訪れてくれる人が多いこと。

ホロス(horos)コミュニティになんかあったのか?とHPのぞきにいったら、けっこう変わってましたね。

なかでも驚いたのは、Horos Academy なるトレーニングコースが設置されたこと。

ホロス、学帽かぶってるよ…。

あと、ユーザー同士の Q&A のコーナーがごっそりなくなっていた。私もけっこう初歩的な質問には答えていたんだけどなあ。慣れない英語で。

全体的に教育・サポートで収益化をはかりたいという方針が前面に出てきたようだ。

how to install みたいな記事も上記アカデミー内にうつされたようで、これだと、初心者にはソースからコンパイルして Mac にインストールすることも難しいだろう。

 

なんだろう。この軽く裏切られた感…。

 

ちょっとインストールトライしてみるか。連休だし。

 

(追記1)…おおっぴらに書いていいかどうかわかりませんが、ダウンロードページは、こちらのようですね。

(追記2)…以前のように Xcode で一発!というわけにはいかないようですね。CMake が導入されてました。

(追記3)…参考までに OsiriX に関して調べましたが、愕然。商用版の OsiriX MD とデモ版の OsiriX lite があって、MD の方は $699 。しかも、買い切りではなく、サブスク1年間でこの価格。これはちょっと高くなりすぎのような…。

ただし、OsiriX のオルタナとして期待されていた Horos ですが、2020 頃より全くリポジトリが更新しておらず、実質的に開発中止となっています。

再開されたとしても近い将来 MacOS で OpenGL が使えなくなるため、OpenGL に依存している Horos は動かなくなります。

オープンソースのマネタイズというのは、難しいものがありますね。

 

(追記4)…Horos を日本語化したものでもこれはかなり注意が必要。

 

レンタルサーバから遠く離れて

このブログを含め各種コンテンツは某社のレンタルサーバ上で動いているのだが、

・PHP7 系列は当分使えそうもないこと

・Java は今後とも動かないこと

が、確定的になり乗り換えを検討することになった。安価で容量もたっぷりあって今まで重宝していたのだが、機能の進化が止まった以上、そうせざるを得ない。まー、またどこかのレンタルサーバで、と思っていたのだが、AWS (Amzon Web Service) も使えるのでは、という話も出てきた。

ネットではこんな情報もあるし。

本当にいけるのかな?

 

SQL Anywhere ベースの医療情報システム解析 準備編

SQL Anywhere ベースの医療情報システムはけっこう使われているようだ。

とりあえず各種ツールをセットアップしないことには始まらないので、まずそのインストール。

まずこのページに飛ぶ。

実際のダウンロードは英語ページから。

インストールするとデスクトップにアイコンができているので、起動するとこんなウィンドウが立ち上がる。

あとは、既存データベースにつながればいいが、さてどうなることやら。

薬局で使われているようです。

 

 

DICOM Viewer に segmentation 機能追加検討

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

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

例えば、前回の画像で

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

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

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

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

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

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

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

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

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

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

なお、Orthanc のメーリングリストでもこの話題が出たので、興味がある方はご一読を

 

猪股弘明(医師:精神保健指定医)
HorliX, OpenDolphin-2.7m: developer
Horos: contributor

C# で簡易 DICOM Viewer

いさんで DCMTK をコンパイルしたものの、 C# からは、当然、直接は使えない。

何か適当なツールがあるだろうくらいに考えていたのだが、ありそうでいて意外にない。GDCM というライブラリを使う手もあるらしいが、これはこれで一手間かかる。

やや困る。

面倒なのでライブラリなしで直接ダイコムファイルを読み込んで解析。(結局、こうなる‥‥)

それっぽくは書き出せたが、確かジーメンスは CT値に何か下駄をはかせていたはずで、コントラストがおかしい。

(追加)‥「下駄をはかす」というのは Rescale Intercept というらしい。(DICOM上の)データセットが必ずしも CT 値とは限らないため、

CT 値 = (生データの値) * Rescale Slope + Rescale Intercept

で、変換する。Tag は (0x28,0x1052)。この式に基づいて変換すると

と撮像・記録したときのコントラストで画像が再現できる。

よくわからなかったのは、Window Center & Width に値が二つ設定されていた点。40/700 と 200/3200 とであった。まあ、(40, 200) の設定でよいのだろうが、これがジーメンス固有のものであるかはちょっとわからない。

 

猪股弘明(精神科:精神保健指定医)
HorliX, OpenDolphin-2.7m : developer
Horos : contributor

技術的中間搾取

以前に windows 環境下でかっこいい DICOM Viewer がないみたいなことを書いた。

では、Mac 環境下の OsiriX や Horos が、満足すべきものかというとそうでもない。機能の豊富さは認めるが、ちょっと凝ったことをしようとすると、ソースの改変が必要になってくる。が、これらのプロジェクトは、ソースの改変をするには、ドキュメンテーションが決定的に不足しているように思える。

ところが、これらのパッケージを支えている ITK や VTK といったライブラリは、とんでもないくらいにドキュメンテーションが充実している。使われている英語も平易だ。

なぜだろう?(笑)

これは、以前に電子カルテを取り扱ったときにも同様の感想を抱いた。Java 自体が C++ に比べれば習得しやすい言語だし、hibernate や jersy といったライブラリも開発元サイトにいくとドキュメントが充実していることがわかる。

上流にある技術のキモは真に新規性がありかつわかりやすいのだが、そこから派生していくにしたがってどんどんわかりにくくなっていく。

いつものことといってしまえばそれまでなのだろうが、高度経済成長期ならいざしらず 21 世紀のオープンソースプロジェクトでこんなことしててもしょうがないんじゃないの?とは思う。

Win10 で OpenGL

windows 10 & Visual Studio 2015 環境下で OpenGL を扱おうと思ったが、けっこうハマりポイントがあるようなので、忘れないうちにメモ。

ここから、ソースを持ってくる。最新版は 3.0.0 だが、CMake を使う必要があるらしい。面倒なので 2.8.1 にした。

Lhaplus などで解凍。

解凍すると /VisualStudio/2012/freeglut.sln があるはず。これを Visual Studio 2015 から強引に選ぶ。勝手に変換してくれる。

Releaseモードにして,freeglutのビルド。

lib ディレクトリに freeglut.dll と freeglut.lib ができているはずなので、それぞれ C:\Windows\SysWOW64 と C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib にコピー。

include\GL ディレクトリには、freeglut.h, freeglut_ext.h, freeglut_std.h, glut.h ができているので、とりあえず C:\Program Files (x86)\ Microsoft Visual Studio 14.0\VC\include にコピー。(C:\Program Files (x86)\Windows Kits\10 の方にコピーしてもいいように思うが、試していない)

これで準備終了。

コーディング時には

#include <glut.h>

などとして利用。試しにこちらのサンプルプログラムを走らせてみた。

なかなか軽快。


なお、sysWOW64 というディレクトリに触れたが、これに似たようなディレクトリに System32 というものがある。上では詳しくは書かなかったが

System32 は64ビット用のライブラリ

sysWOW64 は32ビット用のライブラリ

をそれぞれ格納しておくフォルダです。sysWOW64 の 64 にひきづられてここに64ビットコンパイルのライブラリを入れてしまうとたぶん動きません。

32ビットから64ビットへの移行期、マイクロソフトはこうやって対処したんですね。一方、Mac OSX ではユニバーサルバイナリという洗練された仕組みを提供。こういうところにも両者の設計思想の違いが出てますね。

 

Xcode8 でビルドされたファイルの出力先を変更する

デフォルトだと

/Users/(ユーザー名)/Library/Developer/Xcode/DerivedData/プロジェクト名+謎の文字列

だが、ピンとこないので以下のように変更。

Xcode8 自体の環境設定→ Locations → Derived Data を Ralative または Custom に

これでビルドされたファイルがプロジェクトフォルダまたは指定したフォルダにつくられる。

 

Horos plugin は使えるか?

horos シリーズ。

OsiriX の利点の一つとして「plugin を組み込むことで機能の拡張がはかれる」というのがある。例えば、 jpeg 画像ファイルを読みこみ DICOM ファイルとして保存させておくということができたりする。

なので Horos でもできないか確認。

plugin を Horos 用にコンパイル。ここは問題ないようだ。拡張子を .horosplugin とするのが作法か。

次に、適当な jpeg ファイルをつくり plugin 機能を使って Horos に読み込ませる。

で、タグを編集して、CT っぽくして3次元化。

あとは、普通に 3D レンダリング。ついでに動画書き出し。


 

割と機械的な作業の連続ですが、一応できたということで。

至高の win機登場か?

出先でも PC に触れなくてはいけない仕事柄、みなさん、モバイルPCの選択は慎重。
CPUパワーがある程度あって、画面もフルHD以上(ブラウザ広げながらプログラミングするにはフルHDでも厳しい)、かつ携帯性にも優れていて…と選択基準も現実的。
Win 機だと Dell の XPS13 の人気が高いようです。
メイン機はみなさん趣味が分かれます。

そこに HP から Spectre x360 発売のお知らせ。
私なんかはデザイン性に惹かれる方なんですが、みなさんは「SSD 1T あるのはいいねー、もう容量気にしなくて済む。パッケージした人はよくわかってる」、「金属ユニボディは正義! XPS13 のカーボンファイバー部は指紋が気になる。ただ、ヒンジ部の耐久性が…云々」とどこまでも現実的(笑)。

空いた時間に YouTube の『 HP spectre x360 vs MacBook 12』みたいな比較動画でチェックしているようです。(でも、あちらの方はこういうの本当に好きですねえ)

私は、「雰囲気が Mac っぽいので好き!」それだけです…。

 

AXIA

(追記)両機の実際の使用レポートは

Dell XPS 13 の弱点・HP Spectre x360 の魅力

をどうぞ。

(追記2)私は上で書いたようにマカーでしたが、確かにサポートはちょっといただけないなと思うことがありました。林檎愛でついつい贔屓目で見てた。
あまりないとは思いますが、apple のデバイスで初期不良があった場合、一般消費者としてどう対応したらいいか?ということに関し、代表が
iPad アプリが落ちる場合、あれこれ試行錯誤するより返品できるなら返品した方が吉
という記事を書いています。
「交換」や「返品」まで言及した記事は少ないように思うので、同様の状況でお困りの方はぜひ読んでみてください。