近年のマルチスライスCTの300列を超える多列化の波と各種イメージングモダリティの多様化に伴って、臨床現場における医用画像の発生量は年々増加している傾向があります。
高速かつ高画質な三次元画像ワークステーションの開発ベンダーは、早くから大容量メモリを搭載したボリュームレンダリングボードや64ビットオペレーティングシステム(64ビットOS)に対応した製品の開発を進め、数年前からすでにリリースしています。
一方、64ビットOS対応のソフトウエアを使って自前のパソコン(PC)で画像処理をするとなると、lmageJの64ビットOS対応バージョンもすでに配布されているため、64ビットOSのPCを持っている人は、lmageJを大容量メモリ上で使用することが可能です。
今回は、lmageJの64ビットOS環境における活用方法について解説します。
64ビットOSと画像処理
32ビットは、連続した32個(桁)のビット(4オクテット)であり、バイナリで最大4,294,967,296(4G)までの数を表現できます。これに対して、64ビットは、連続した64個(桁)のビット(8オクテット)であり、バイナリで最大18,446,744,073,709,551,616(16E)までの数を表現できます。
64ビットというと、いろいろな意味があります。以下、Wikipediaのまとめを参考にしました。
- 「64ビットアーキテクチャ」とは、整数型、メモリアドレス、その他のデータサイズなどが、最大64ビット幅のアーキテクチャ。
- 「64ビットCPU」(プロセッサ、演算装置)とは、64ビットサイズのレジスタ、アドレスバス、データバスを持つCPU(プロセッサ、演算装置)。
- 「64ビットオペレーティングシステム」とは、64ビットのCPUを前提に設計されたオペレーティングシステム。
- 「64ビットアプリケーション」とは、64ビットのCPUおよび64ビットのオペレーティングシステムを前提に設計されたアプリケーションソフトウェア。
- 「64ビットコンピュータ」とは、64ビットのプロセッサ (CPU) を標準的に搭載したコンピュータの世代。
CPUのレジスタは、中央演算処理装置(CPU)やグラフィックス演算処理装置(GPU)の内部に持つCPUの命令を高速にアクセスするための記憶装置ですが、汎用のCPUの場合、一般的には整数レジスタだけがメモリ内のデータアドレスに読み書きできる仕組みになっています。
32ビットレジスタの場合、理論上、2の32乗、すなわち約4GiB(ギビバイト)の上限でRAM(Randam Access Memory)にアクセスできることになります。
(補足)
- 1GB = 1000MB = 10^9Byte
- 1GiB = 1024MiB = 2^30Byte
現在の32ビットコンピュータは、上記のような構造上の理由で最大搭載メモリ4GBまでと記載されています。これを単純に64ビットレジスタのPCで計算すると、2の64乗で100憶GiBを超えるほどの理論上のメモリが拡張できることになります。実際には市販の64ビットコンピュータを例にとると、アップル社の「Mac Pro」などはクアッドコアIntel Xenon系プロセッサ2基を用いたCPUで、最大メモリ容量32GBなどが使用されています。メモリが大容量であれば、データ量も大容量を一挙に処理できるため、32ビットコンピュータのメモリ制限を超えるような数千枚のCT画像を一挙に処理しなければならない場合では、64ビットコンピュータが必要不可欠ということになります。
現在もまだまだ32ビットから64ビットマシンへの移行期ではありますが、一時期、128ビットのCPUが話題になりました。これはPlayStation2というゲーム機に実装されたCPUであるエモーション・エンジンが128ビット仕様だったためです。これはどういうことかというと、PS2のコアCPUにスーパースカラ 64ビット整数演算ユニットが2基ついており、理論上最大128ビット処理ができるというものでした。しかし、実際には、128ビットを使うような命令はまだなく、64ビットとして利用されていたという説もあります。
一般的なPCに話を戻すと、まだ命令系統に128ビットを使う必要性も少ないことなどから、64ビットのCPUで十分というところで落ち着いているようです。
32ビットからの移行は、4GBの物理メモリの制限が影響が大きかったために、この課題の対処として64ビットCPUを普及させるに至っています。
ImageJにおける64ビットOS環境について
ImageJは、ダウンロード時に64ビット対応か32ビット対応かを選択でき、マシンに合わせて利用できるようになっています。
もし一度に数Tバイトなどの大きい容量を扱う場合には、このメモリをPCに実装されているメモリの半分くらいを目安に上限値を上げて設定すれば、処理が固まることもなくサクサク動かすことができます。
ImageJ操作時の使用メモリの確認方法はPlugins>Utilities>Monitor Memory...で確認できます。
(起動時のメモリ使用量:最大設定メモリの何パーセント使っているかも表示(40%))
(700枚の画像をスタック表示したときのメモリ使用量、さくっと数秒で表示できる)
今回はImageJの64ビットOS環境について概説しました。
快適な解析環境構築ができるといいですね。
次回は少し振り返って、ImageJのバージョンアップについて触れていきます!
参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・7) 2009, p84-85」
0 件のコメント:
コメントを投稿