Horos 3.0 をソースからコンパイルする - High Sierra 編 –

HighSierra + Xcode 9.3 の組み合わせだと  HorliX/Horos のビルドはうまくいかないのだけど、HighSierra + Xcode 9.2 の場合は、ビルドはできるようです。

 

今まで試してなかったウェブサーバー機能も試す。

クライアントからブラウザ経由で無事アクセスできました。

画像は日本画像医療システム工業会さんからお借りしてきました。

 

HighSierra 対応、(部分的)日本語化とけっこうイイ線までいってんのかと思いましたが、肝心かなめの Horos 自身の 2D ビューアがなぜか立ち上がらない

しばらく、このバグ取りですかね。

 

 

Horos 3.0 をソースからコンパイルする - Sierra 以前のOS編 –

そういうわけでHoros をソースからコンパイルしてみることにした。OsiriX があっちの世界にいってしまったので、仕方ない。

といっても当方の Mac 環境は MacBook (13インチ)なのでがんがん使うわけにもいかないだろう。コンパイルしてちょっと使ってみる程度を目標にする。

なお、OS は 10.12 、Xcode は 9.2 。

準備(ここが大事)

CMake と pkg-config が必要になってくるので、あらかじめインストールしておく。homebrew がはいっているならば、

brew install pkg-config
brew install cmake

で問題ないと思う。

こっから先は単純作業。

 

ソースコードの取得

ホロスプロジェクトの github リポジトリからソースコードを取得する。

git clone "https://github.com/horosproject/horos.git" ~/horos3

数分で取得は終了すると思う。




コンパイル

先ほどつくった horos3 内にある horos.xcodeproj をダブルクリック。

自動的に Xcode が立ち上がるはずだ。

メニューバー >> Product >> Schema

で、まずコンパイル対象に Unzip Binaries を選ぶ。これでまず Build 。

これはあっという間に終わる。

次に、お待ちかね、Horos のコンパイル。

先ほどと同様の手順で今度は Horos を選ぶ。

で、 Build 。

この後、Xcode は、黙々とコンパイルしてくれる。ITK (というライブラリ)をコンパイルするのにかなり時間喰っている様子。途中、NSForm は deprecated ですよとかアラートが出るが(たぶん)気にしなくてよい。

MacBook だと 30 分程度でコンパイルは完了する。とりあえず Run させてみましょう。

無事立ち上がる。

試しに適当なダイコムファイルを喰わせてみる。

大丈夫、読み込めました。

以前に作成した3Dモデルは

いけてます。

お疲れさまでした。

なお、現在(2018/05)、github に上がってるバージョンは 3.0.1 です。

 

日本語化

Ver 3.0.1 から部分的にですが、Horos が日本語化されました。

上記のコンパイルがうまくいけば、特別な操作なしに日本語化された状態で立ち上がると思います。

てか、私が日本語化したところを本家が取り込んだんですけどね。

Horos 本家

Horos 日本語版 HorliX

時間がなかったのでサブメニューが日英混在という…。

ここはこう訳してほしいというのがあれば、コメント欄にでも書き込んでおいてください。手がすいたときに反映させます。

 

 

まとめ & 反省点

Horos はソースコードからコンパイルできる。

日本語化もできる。→ もともと日本語化されています。

Xcode のクセがいまいちつかめていない。

 

High Sierra でコンパイルするときの問題点

おそらくそのままではエラーが出てビルドできない。

同包されているライブラリのいくつかが32ビットコンパイルだからだ。

まずはXMLパーサーの Apache Xerces (アパッチ・ザーシーズ)から手をつける。

 

→長くなりそうなので稿を改めます。

 

Horos 再び

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

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

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

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

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

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

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

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

 

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

 

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

 

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

(追記2)…依然のように Xcode で一発!というわけにはいかないようですね。CMake が導入されてました。CMake 使ってるということは、Windows への移植も視野にいれてんのかなと思いました。

(追記3)…参考までに OsiriX に関して調べましたが、愕然。商用版の OsiriX MD とデモ版の OsiriX lite があって、MD の方は $699 。これはちょっと高くなりすぎのような…。

 

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

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

・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 を使っていないはずだ)

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

 

C# で簡易 DICOM Viewer

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

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

やや困る。

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

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

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

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

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

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

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

 

DCMTK を WIN10 にインストールしてみた(3)

試しにコマンドラインツール dcm2xml.exe を新規のプロジェクトとしてコンパイルしてみた。

最近の VC++ プロジェクトはテンプレートがいろいろあって違いがよくわからないのだが、CLR プロジェクトとした。

適当な DICOM ファイルをもってきて、走らせてみると‥‥

おお、ちゃんとヘッダー情報を XML 形式で書き出してくれている。

今回はジーメンスの DICOM ファイルで試しましたが、ライブラリの dicom.dic がなり充実しているので、これでピクセル値を読み込めれば割と簡単に汎用な DICOM Viewer ができそうですね。

 

DCMTK を WIN10 にインストールしてみた(2)

インストール自体はさほど難しくない。

(1)まず、DCTMKのサイトからソースを取ってくる。今回は Ver 3.6.0。(なお、最新版は 3.6.1 。かなりの頻度でマイナーフィックスが行われている)

(2)解凍した後、CMAKE で生成される .sln や .vcxproj を保存するディレクトリを予めつくっておく。

(3)CMAKE を起動し、CMakeLists.txt のあるディレクトリと(2)でつくったディレクトリを指定。


Confiure を押下すると CMAKE が設定を読み込んでくれる。

Generate を押すと .sln や .vcxproj ファイルを生成してくれる。

(4)Visual Studio を起動し(管理者権限で起動しておいた方がたぶん楽)、DCMTK.sln を読み込む。ALL_BUILD をビルド。INSTALL をビルド。

で、インストール自体は終了。

***.lib や ***.h ができているはずなので、あとは、必要に応じて組み込む。

 

DCMTK を WIN10 にインストールしてみた(1)

医療関係の方々と話をしていると「電子カルテや PACS からデータを取得して、自分なりに加工してみたい」という要望があるようだ。

自分が関わった電子的なデータの山から、疫学的な考察を引き出したり、定量的な画像解析的アプローチを試みたりしたいというのは、よくわかる話だ。「ビッグデータから機械学習の手法を用いて斬新すぎる結果を出してみました」みたいなニュースよりよほど信用があるように思える。

ところが、「そこにあるデータの山から必要とする情報をデジタル的に取ってきて、自分なりに加工する」というのが意外に難しかったりする。

電子カルテからテキストを抜いてくる話は以前にちらりと書いたので、今回は画像の話。

定量的な解析をしたい場合、画像上の任意のピクセルの本当の値(CT であれば CT 値など)を取得する必要があるが、この機能を提供する安価なソフトはほとんどない。

ちょっと前なら 「OsiriX 環境でプラグインを書いて‥‥」という選択になったのかもしれないが、現在では商用版の OsiriX は 10 万近くするし、何よりもプラグイン機能の仕様が明らかになっていないので手を出してみるのに躊躇する。

MATLAB でもできそうな気がするが、MATLAB の一般版は20万近くするという話だし何よりもまわりくどい。

まわりくどい、そうまわりくどい。例えば、OsiriX や Horos は、DICOM のメタ情報の処理に DCMTK というライブラリを用いているが、これは C++ で書かれたオープンソースプロジェクトでしかも CMAKE でインストール環境を提供しているので、プラットフォームによらず直接利用できる。

というわけで DCTMK を Windows10 + Visual Studio で利用できる環境を構築してみる。