3D Viewer

2015/07/16
Brain Atlas Hackathon 2015
神経細胞形態抽出を中心とした
Vaa3Dによる画像処理とプラグイン開発
宮本 大輔
IVBPF(無脊椎動物脳プラットフォーム)
東京大学 先端科学技術研究センター
1. 目的
・ 三次元の画像データを処理したい
・ 特に,画像から神経細胞形態を再構築したい
・ できればフリーソフト(かつオープンソース)で...
IVB-PF(無脊椎動物脳プラットフォーム)
カイコガ側副葉領域標準脳
1.2 ImageJ/Fijiの問題点
・ 3D Viewerが弱い!
・ 神経科学に特化しているわけではない
・ 神経細胞の数値的表現形式(SWCなど)に
対応していない
・ Java/Java3D
2.1 Vaa3Dとは?
・2006年〜
・C++ベース
・オープンソース
MITライセンス
・マルチプラットフォーム
Win/Mac/Linux
(Qt4 + OpenGL)
Hanchuan Peng, Ph.D.
(Allen Institute for Brain Science)
http://alleninstitute.org/our-institute/ourteam/profiles/hanchuan-peng/
2.2 Vaa3Dの利点
・ 幅広いデータフォーマットへの対応
・ 5次元データ(xyztc)まで扱うことが可能
・ 神経科学向けの様々な機能
・ 新機能の実装が早い
・ BigNeuronプロジェクトに向けて
様々な細胞形態抽出アルゴリズムが実装
2.3 Vaa3Dの欠点
・ マニュアルが少ない(日本語は皆無)
・ プラグイン開発がC++のみ
・ Qt4.7.1 という特定バージョンに依存
3.1 BigNeuron Hackathon
BigNeuron : 神経細胞の大規模形態抽出プロジェクト
(https://www.linkedin.com/pulse/bigneuron-beijing-hackathon-hanchuan-peng)
2015年3月16〜20日に北京でハッカソンが開催
参加者は25名程度
日本からの参加者は2名
3.2 ハッカソンの進め方
・ 初日:環境構築,やりたいことを述べる
・ 2日目〜4日目:ひたすらプログラミング
・ 5日目:成果発表
グループ分けなどもなく,比較的スパルタな感じ
中国ならではの問題も...
ただし,Vaa3Dの開発者や,
その他の様々な知識・技術を持っているヒトに
直接話を聞きながらプログラミングができる.
4. Vaa3Dデモ
画像の読込みと三面図表示
3D/5D表示
バーチャルフィンガー
神経細胞形態抽出
プラグイン作成
巨大データの動的読込み
細かい説明は割愛しておりますので,
興味のある方は https://code.google.com/p/vaa3d/
または,私の方まで聞きに来てください
4.1 Vaa3Dインストール
http://www.vaa3d.org から,ダウンロードするだけ
今回紹介するテストデータのいくつかもここからDL可
4.2 画像の読込み
File->OpenImage.. または ドラッグ&ドロップ
4.3 3D表示
右下の”See in 3D”ボタンを押すことで
3D Viewが表示される
See in 3D ボタン
4.4 メッシュの作成
Surf/ObjectタブのLoad and Save Surfからメッシュを
作成することができる
1. Surf/Objectタブ
2. Load and Save Surf
→ Create Surf
4.5 オブジェクトマネージャ
Object Managerにより,メッシュの色や
各種情報を変更できる
Object Manager
4.6 5D情報の取り扱い
File → Import で連番Tiffなどを読込み可能
読込んだ後,
3D Viewを立ち上げ
時刻のスライドバーが表示される
使用サンプル:
http://penglab.janelia.org/proj/v3d/TwoColorCelegansWiggling.zip
4.7 SWC形式の読込み
画像の読込みと同様に,File → Open..
または,ドラッグ&ドロップで表示可能
Object Managerから,表示形式も変更できる
(SWC:神経細胞形態のシリンダーによる表現形式の一つ)
5.1 3次元上の点の選択(Virtual Finger)
3D View上で右クリックし,
”2-right-click to define a marker”を選択
別の角度からのクリックにより,3次元空間上の一点を指定
マーカー
5.2 マーカーを用いた形態抽出
Advanced->3D tracing->trace from one landmark to all others
5.3 自動形態抽出
Advanced->3D tracing->auto tracing
5.3 その他の形態抽出
今回紹介した手法の他にも,
様々なグループによる様々な抽出プラグインが実装されている
様々なアルゴリズムを同一環境で比較し
より良い形態抽出を目指す
6.1 プラグイン作成
Plug-in Creator Plug-in により,プラグインの
テンプレートを生成することができる
※プラグインの開発にはQt4開発環境と
Vaa3Dのソースコードからのビルドが必要となります.
https://code.google.com/p/vaa3d/wiki/BuildVaa3D
6.2 プラグイン作成の流れ
1. Plug-in Creatorにより,テンプレートを生成
2. 生成したフォルダに移動し,qmake,makeを行う
3. Vaa3DのPlug-inメニューから,Re-Scan All Plug-insを実行
4. 生成されたファイルを編集
5. make
6. 3〜5を繰り返す
6.3 閾値プラグイン
if (menu_name == tr("menu1")){
v3d_msg("To be implemented.");
v3dhandle curwin = callback.currentImageWindow();
Image4DSimple *image = callback.getImage(curwin);
if (! image){ v3d_msg("no image"); return; }
unsigned char* data1d = image->getRawData();
V3DLONG N = image->getTotalBytes();
bool ok;
int threshold = QInputDialog::getInteger(parent, tr("Threshold"),
tr("Enter threshold:"),
100, 0, 255, 1, &ok);
if (ok){
for (V3DLONG i = 0; i < N; i++){
if (data1d[i] <= threshold){
data1d[i] = 0;
}else{
data1d[i] = 255;
}
}
v3dhandle newwin = callback.newImageWindow();
image->setData(data1d, image->getXDim(), image->getYDim(), image->getZDim(), 1,
image->getDatatype());
callback.setImage(newwin, image);
callback.updateImageWindow(newwin);
}
}
6.3 閾値プラグイン(結果)
7. 3次元画像の動的読込み(TeraFly)
事前にTiffファイルをタイル状に保存しておくことにより,
非常に巨大な3D画像を動的に扱う事ができる
主な資料
http://home.penglab.com/proj/vaa3d/
https://code.google.com/p/vaa3d/
https://en.wikipedia.org/wiki/Vaa3D
Eliceiri et al., “Biological imaging software tools”, Nat. Methods, 2012.
Peng et al., “Virtual finger boosts three-dimensional imaging and microsurgery
as well as terabyte volume image visualization and analysis”, Nat. Comm,
2014.
Peng et al., “Extensible visualization and analysis for multidimensional images
using Vaa3D”, Nat. Protocols, 2014. ←今回は主にこれを参考にした.
Bria et al., “An open-source Vaa3D plugin for real-time 3D visualization of
Terabyte-sized volumetric images”, ISBI-2015, 2015.
Enjoy Your Vaa3D Life !
5. What I have to do next ?