Re - ImageJで学ぶ!: 第47回 ImageJとWeb技術で学ぶ!

2015年11月5日木曜日

第47回 ImageJとWeb技術で学ぶ!

lmageJはオープンソースコミュニティが育て上げた医用・バイオ画像の処理・解析ツールとして抜群の認知度と人気を有しています。その背景には、インターネットの普及とそれに伴うWeb上での技術の進化が関連しているようです。

近年では、クラウドコンピューティングやシンクライアント、リッチクライアントなどの言葉が至るところで飛び交っていますが、これが情報を整理し、スマート化していく流れの1つの方向を象徴しているようです。

今回は現在のWeb技術についてlmageJと関連づけながら説明をしていきます。

インターネットを利用した画像処理


インターネットの人口普及率は日本ですでに80%を超え、小学生からお年寄りまでが扱うツールとなっています。インターネットはコンピュータネットワークのうち、インターネットワークの中の1つで、地球上の多数の政府、学界、公共、私用のネットワークを相互接続したインターネットワークに接続されたコンピュータ間で、あらかじめ規定された決まりごと(プロトコール)を介して、相互通信をする大規模ネットワークシステムです。やりとりされるデータは、主にOSI参照モデルのTCP/IPと称されるプロトコールによって、ユーザーやサーバ間で伝送・翻訳されます。

さて、インターネット上での画像処理については、扱うデータのフォーマットが比較的軽い圧縮されたJPEGやGIFなどが現在の主流です。しかしながら、医用画像やバイオイメージングのデータはマトリックスや濃淡ビットの高い特別なフォーマットで扱うために、簡単にインターネットやWebのブラウザに埋め込んで、そのデータ解析を行うことができなかった背景があります。

特に、動画像、三次元および四次元画像は、間接的に高次の高速ワークステーションで加工した後に、FlashやQuickTime VRに変換してブラウザ上で表示するなど、あくまで「閲覧および参照」のための利用でした。

しかしながら、ここ数年でスーパーコンピュータクラスのサーバシステムが堅牢かつ安価で構築できるようになったことにより、ネットワークシステムは分散サーバシステムとシンクライアントの組み合わせで発表されるようになっています。

シンクライアント(thin client)は、一般的な説明として、アプリケーションプログラム(ソフトウェア)や機密性のある重要なデータなどを手元に蓄積しないディスクレスのクライアントのことを言います。シンクライアントコンピュータには、必要最低限な機能だけを搭載し(thin:痩せているという意味)、アプリケーションはサーバにアクセスして実行します。

図に一般的なシンクライアントシステムを示します。


(シンクライアントとサーバ:参考記事より引用)


医用画像システムの業界では、大量のCT画像を超高速なサーバシステムでボリュームレンダリングし、それをシンクライアントに返すような仕組みが紹介されています。シンクライアントの実行形式は、サーバベース型、ブレードPC型、仮想PC型およびネットワークブート型などがあります。

高速ネットワークシステムが可能となった今日では、サーバ上に作成した仮想ディスクイメージをクライアントPCが立ち上がったときにマウントしてブートする方式のネットワークブート型がクライアント側でCPUとメモリは使用するものの、サーバ側に大容量のハードディスクを持てるため、注目されています。


ImageJ周辺のWeb技術の環境


これまで、ImageJ上で操作できるさまざまな機能を紹介してきました。多彩な画像ファイルの入出力、画像処理、画像解析、ユーザーオリジナルな拡張コードプログラムの記入方法、DICOM通信、DICOMビューワ、各種三次元画像処理、動画像処理、データベースとの連携などなど、ほぼユーザが使いたいであろう機能はすべて網羅して紹介してきたつもりですが、それらはすべてスタンドアローンでコンピュータを使う場合を想定したものでした。

当然ながら、ImageJで最新のWeb技術も利用可能です。ImageJはJavaを用いているため、アプレットとしても利用することが可能です。

ImageJのアプレットバージョンであるImageJAのサイトはこちら。(http://fiji.sc/ImageJA

このImageJAのjarファイルまで任意のWebサーバーのhtmlにAppletタグでパスを設定すれば、通信が許可されているクライアントからブラウザー越しにImageJを操作することができます。
WebサーバにAppletとして埋め込んでいる例を、ImageJのApplet例ページから紹介します。http://rsbweb.nih.gov/ij/applets.html


(FireFoxで表示:Javaが有効になっているブラウザで表示してください)

次に、“JNLP(Java Network Launching Protocol API)”という特別なファイルをサーバ側に作成することによって、クライアントにそのファイル内容を送信して、クライアントからアプレットを実行できるようにする方法を示します。JNLPも前述の方法同様に、JNLPファイル内で指定されたアドレスのアプリケーションを実行しますが、ブラウザー埋め込み型ではないので、直接ブラウザーを介さないことが前述の方法との違いになります。

JNLPによるアプリケーションの起動は、Java仮想マシン内のサンドボックス上で起動しています。原理的には、アプリケーションのプログラム自体もダウンロードしているのですが、Java(JRE)の中で保持されるだけで、ユーザーからは見えません。よくあるCドライブのProgram Filesに保存するようなイメージでダウンロードしているわけではありません。煩雑なインストール設定は不要です。この辺りが、リッチクライアントと呼ばれる所以です。

よって、この方法では、.jnlp拡張子ファイルをクライアントにダウンロードして、そのファイルを起動することで、アプリケーションを起動します。

JNLPファイルは、Javaアプリケーションが含まれるjarファイルや、起動に必要な条件、起動パラメータなどが設定できるようになっています。JNLPを使った例として、ImageJのJava Web Startバージョン「ImageJ.jnlp」が公開されているので、紹介します。


ImageJ.jnlpの中身


ImageJA同様、Java Web StartをHTMLコードで指定することもできます
なお、JNLPで指定するJarファイルは、署名がされている必要があります。Jarファイルの署名は、Javaのkeytoolを使います。この方法も、前述のImageJApplet紹介Webページに解説がありますので、ご興味のある方は参考にされてください。

今回は、ネットワークシステムー般やWebに関連する技術の概要を述べました。この先、クラウドコンピューティングなどで注目される技術が、セキュリティ部分を含めて改善されていけば、ますますユーザが利用する端末はスリム化されていくでしょう。(まだまだ課題も多いようですが。)

次回も続けて、Web周辺のネットワーク技術を解説します。

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・4) 2009, p88-90」

0 件のコメント:

コメントを投稿