2009-05-26 51 views
5

現在のプロジェクトでは、行列で提供される情報を使って数学を行うだけでなく、医療情報/レンダリングを表示するためにITK/VTK関数を使用する必要があります。基本的に私はmatlabルーチンとVTK/ITKの両方を50/50の方法で使う必要があります。問題は、私は両方を使用する必要があるため、私はこの方法を使用するかを事前に決定したい、ということである:ITK/VTKをMATLABまたはMATLABにVTK/ITK環境にインポートしますか?

  1. インポートITKとVTK LIBS MATLABに:あなたがあなた自身のVTKを構築する必要があり、このため 開始として。次に、thisの例では、全体的なアイデアはあなたのVTKコードを.mexファイルに書き込むことです。これらは のファイルで、MATLABの関数としてCコードをプログラムすることができます。

  2. matlab関数をITK/VTK環境でインポートする:これは行列計算を行う言語(おそらくPython)を使用します。ナンシーを使うことができました。これはPythonのmatlabのような計算モジュールで、vtkのデータをnumpyのデータに変換し、matplotlibを使ってプロットを作成することができます。

賛否/短所ITK/VTKは、MATLABの計算を行うのは簡単MathWorks社のMATLAB
+にインポートし、
+ MathWorks社のMATLABをプロットすると、行列
+を操作するための最も強力なツールの一つですが(前にMATLABを使用していました

)主観 - MATLABがインストールされている必要はあり
は - MATLABを実行すると、あなたのPC負担

賛否/短所がITK/VTK環境
+ MathWorks社のMATLABを持ってする必要はありませんにインポートMATLABは、PC用菌株の
+以下をインストールし、医療データセットは、あなたのPCから多くを必要とするので、これはいいです。
+ ITK/VTK環境は既にこのように設定されています(この方法では現在使用していますが、matlab/matrices .matでは使用できません)

- このようにmatlabの計算を行うのは難しい話です。ビット混乱。
- Pythonでの経験が少ない(matlab 0と組み合わせて)

So ...?結論
実際に私は2つの環境のいずれかで働いている人たちを探していますが、そのような人がいくつかいると思うので、最終的な選択をする前に何を探すべきか聞いてみたいと思っています。それは私がそれを必要としている方法で働かせるために多くの時間を要するので、両方を試してみるのは時間の無駄でしょう(期限もあります)。

余分なノート
- 私はVTK/ITKのLIBSとの組み合わせで、MATLABは、Simulinkを試してみましたが、私はそれを好きではありません。
- この問題の解決策は私がここで得ることのできる最良のものですが、これと同じベースにある選択肢を作る経験がある人にも満足しています。そのような選択をするときに探すべきキーポイントは何ですか?私は長所と短所の中でキーポイントを欠いていますか?

答えて

2

VTKにはPythonバインディング(one description)が付属しています。私はITKもやっていると思います。すでにMATLABでコードの多くを持っていない場合、私はあなたがはるかに簡単に時間をシームレスにPythonのnumpyの、matplotlibのでVTK/ITKを統合する必要があるだろう推測している、など

EDIT:

私の意見では、重要ではないMEX機能は書くべき痛みです。トレードオフは、多くの場合、各タスクに新しいMEX関数を記述することや、多くのインタフェースコードを書く余分な時間を要することがあります。

あなたが何をしているかに応じて、scipy(matplotlib、numpyなどのpythonパッケージのバンドル)は、Matlabが何をするのかをしばしば行います。微妙な違いとさまざまなトレードオフがあります。自動放送は非常に便利です。一度それを取得すると便利です。 MathWorksは最近BSXFUNを追加しましたが、numpyで自動化されています。疎な行列を使って多くの作業をしている場合や、より高度な線形代数関数をたくさん呼び出す場合は、必要なものがまだ存在するかどうかnumpyのドキュメントを確認してください。

これまでの環境によって、私はPythonのアプローチを数週間試してみることをお勧めします。プロット能力と数学関数があなたのニーズに十分であるかどうかを見てください。ドキュメンテーションはMatlabのように成熟していないので、最初は少し壁に向かって頭を叩くことを期待しています。

+0

私はすでに私がPythonプログラムモジュールとITK/VTKをインポートした作業環境を持っています。私にとっての問題は、あなたが最後に推測したことでした。本当に簡単で、なぜそうですか? – bastijn

1

それは、この問題に結論するが、テストの両方のバージョンを取得するために私にいくつかの時間がかかった:

私はnumpyの/ scipyのダウンロードとmatplotlibのと組み合わせてのpythonを使用することを選択しました。なぜ私がこれを使うのを選んだのか主な理由は1つだけです。あなたはMATLABでITKとVTKをインポートすると、あなたはであなたのCコードをプログラムするメックス機能を使用する必要がこれらのMEXファイルは、次のように日常的にあります。

alt text http://www.bastijn.nl/zooi/routine.png

さて、ルーチンがに来るときメックスファイルがあるポイント、それはこのmexファイルに制御を渡し、ファンクションのように起動します。mexファイルはブラックボックスのようです。 Mexファイルがそれをやった後、それは制御をMATLABに戻し、ルーチンは続行します。しかし、あなたは、任意のMATLAB操作を行うことはできませんMexファイルが解雇されているか、このmexfileの変数にアクセスしています。それで、itk/vtkコードを実行することは不可能です。mexファイルで使用されている変数のいくつかを変更しても動作しないことに注意してください。何が動作するのかを高速にテストします。 mex関数全体をもう一度起動する必要があります。

すべての小さな変更に対して完全なmexファイル(C関数)を再実行する必要があるため、これは大きな欠点です。この大規模な狭窄を修正するのは忙しいですが、まだ準備ができていないので、私は今必要です。私はPythonツアーに参加することに決めました。

2

これは役立つかもしれません:mlabwrapはMatlabフォームPythonを呼び出すかなり洗練された方法です。 http://mlabwrap.sourceforge.net/

+0

うわー、遅い返信のおかげで:)。これは有望に見えます。 – bastijn

1

Bastjin、あなたは正しい選択をしました:Pythonのルール!

は、いくつかのより多くの情報:あなたが言及したよう、それは悪い選択肢である、 http://github.com/thewtex/matlab-itk-import しかし:オプション番号1の場合

は、私がこれを書きました。

オプション番号2のリンクがいくつかあります。 Mayavi2のmlabには、VTKとnumpyを切り替える機能があります。

WrapITKを使用すると、ITKパイプラインをPythonで記述することができます.Numpyを使用して、PyBufferの外部プロジェクトを見つけて前後することができます。

1

ちょっと古い投稿ですが、私はただmatVTK(http://www.cir.meduniwien.ac.at/matvtk/)について言及したいと思います。これにより、Matlabですべての計算を行い、vtkライブラリでデータをプロットすることができます。

関連する問題