Tutorial: Create a new VCAT5 Plugin.
概要
- VCAT5 plugin は,実行ファイル(executable)と設定ファイルの組から成ります.
- 実行ファイルは,VCAT5 の動作環境(現状では Windows10 64bit)で実行可能なプログラム.
- .exe, .bat, etc.
- VCAT5から渡されたデータを入力とし,処理結果を VCAT5 に返す.
- データの受け渡しは後述の TIFF による,ファイル渡しで行う.
- 動作に必要なパラメータはコマンドライン引数から取得する.
- 設定ファイル
- xml で記述してください.
- データの入出力ファイル,パラメータ等の設定順序と,それらの short desctription を記述.
- このファイルを元に,VCAT5はパラメータ入力ダイアログを生成し,ユーザに提示する.
- 設定xmlファイル記述方法の詳細.
データ入出力
- VCAT5 ではボリュームデータの保存形式として TIFF を採用しています.
- 1時相分の3D画像データを,1つの MultipageTIFF ファイルに保存します.
- TIFFのページ(IFD)をZ断面とします.
- 複数の TIFF ファイルの series によって,4Dデータを保存します.
- 2Dの画像は ZSize=1 の3D画像とみなします.
- TIFFはSamplesPerPixelタグによってカラーチャンネル数を指定しますが,VCAT5が対応するのは1ch(グレースケール),3ch(RGB)のみです.
- 下記サンプルのソースコードをご参照ください。
サンプルプラグインの作成
実際のプラグイン作成手順を説明します.
ソースコード全体はこちらからダウンロードしてください.
ユーザ入力の閾値による単純な2値化を行うプラグインを作成します.
実際の処理を行うプログラムを作成
int main(int argc, char* argv[])
{
// 引数の処理
std::string input_file = argv[1];
std::string output_file = argv[2];
int threshold = atoi(argv[3]);
// 入力ファイルからボクセルデータの読み込み
bool ret;
TifIO tif;
Image3D image;
tif.setFilename(input_file.c_str());
ret = tif.getImage(&image);
// 閾値での2値化処理
for(int z=0;z<image.sz;++z){
for(int y=0;y<image.sy;++y){
for(int x=0;x<image.sx;++x){
if(image.img[z][y][x]>=threshold){
image.img[z][y][x]=UCHAR_MAX;
} else {
image.img[z][y][x]=0;
}
}
}
}
// ファイル出力
tif.setFilename(output_file.c_str());
tif.saveImage(&image);
return EXIT_SUCCESS;
}
単純化の為に,エラー処理等は省略しています.
ファイルの読み込み,ボクセル毎に2値化の処理,ファイル出力を行っています.
VCAT5とプラグインの間の画像データの受け渡しは,TIFFを用いたファイル渡しで行いますので,
TIFFの入出力を行うようにしてください.
コンパイル
プログラムをコンパイルしVCAT5と同じOSで動作するバイナリを作成します.
Visual C++ のコンパイラを利用する場合は
cl /EHsc sample-plugin.cpp TifIO.cpp
でコンパイルできます.
設定ファイルの作成
上で作成したプログラムをVCAT5 pluginとして動作させるための設定ファイルを作成します.
<?xml version="1.0" ?>
<config>
<param name="filter_name" value="sample-plugin.exe" />
<param name="dimension" value="3" />
<elem name="arguments">
<param dtype="path" type="input" provider="system" extension=".tif" />
<param dtype="path" type="output" provider="system" extension=".tif" />
<param name="threshold" dtype="int" value="1" />
</elem>
</config>
filter_name にプログラムのファイル名を,
3D画像を処理するプログラムなので dimension には3を指定します.
arguments には,引数の指定順に,入力ファイル,出力ファイル,閾値を設定します.
VCAT5へのインストール
ここまでで作成した実行プログラムと設定ファイルの組を,VCAT5のインストールフォルダにあるpluginsフォルダ以下の適当なフォルダにコピーします.
実行確認
VCAT5から実際にプラグインを呼び出し,動作確認します.
メニューのprocess以下から作成したプラグインを選択すると,設定ファイルの内容に従ってパラメータ入力のダイアログが生成されます.
このまま実行した場合の入力と出力の例は次のようになります.
Last modified: 2015-Mar-20 01:14:10 +0900 (JST).