5

現在のプロジェクトでは、マトリックスで提供される情報に対して数学を使用して実行するだけでなく、医療情報/レンダリングを表示するために ITK/VTK 関数を使用する必要があります。基本的に、matlab ルーチンと VTK/ITK の両方を (私が推測するに) 50/50 の方法で使用する必要があります。問題は、両方を使用する必要があるため、どちらの方法を使用するかを事前に決定したいということです。

  1. ITK および VTK ライブラリを matlab にインポートし ます。このためには、最初に独自の VTK を構築する必要があります。次に、この例では、VTK コードを .mex ファイルに記述します。これらは、matlab の関数として c コードをプログラムできるファイルです。

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

長所 / 短所 matlab にインポートされた ITK/VTK
+ matlab の計算とプロットが簡単
+ matlab は行列を操作するための最も強力なツールの 1 つ
+ 以前に matlab を使用したことがある (主観的)

- matlab をインストールする必要がある
- matlab を実行すると PC に負担がかかる

長所 / 短所 ITK/VTK 環境にインポートされた
matlab + matlab をインストールする必要がない
+ PC への負担が少ない。医療データセットは PC から多くのデータを必要とするため、これは素晴らしいことです。
+ この場合、ITK/VTK 環境は既にセットアップされています (現在この方法で使用していますが、matlab/matrics .mat を使用したことはありません)

- この方法で matlab の計算を行うのが難しいという話を聞いたことがあります。ちょっと面倒。
- Python の経験が少ない (matlab 0 との組み合わせで)

そう...?結論
実際、私は 2 つの環境のいずれかで働いている人を探していますが、その数は非常に少ないと思うので、最終的な選択を行う前に何を探すべきかについての提案を聞くのが大好きです。必要な方法で機能させるには多くの時間がかかるため、両方を試すのは時間の無駄です(締め切りもあります)。

追加メモ
- VTK/ITK ライブラリと組み合わせて Simulink for matlab を試しましたが、気に入りません。
- もちろん、問題の解決策は私がここで得ることができる最善のものですが、これと同じ基本的な選択をした経験を持つ人々にも満足しています. そのような選択を行う際に探すべきキーポイントは何ですか? 長所と短所のキーポイントを見逃していますか?

4

5 に答える 5

2

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

于 2009-08-20T00:22:45.137 に答える
2

VTK には Python バインディングが付属しています ( 1 つの説明)。ITKもそうだと思います。Matlab にまだ多くのコードがない場合は、VTK/ITK を python の numpy、matplotlib などとシームレスに統合する方がずっと簡単だと思います。

編集:

私の意見では、重要な MEX 関数は書くのが面倒です。多くの場合、トレードオフは、タスクごとに新しい MEX 関数を作成するか、多くのインターフェイス コードを作成するために余分な時間がかかることです。

何をしているかにもよりますが、scipy (matplotlib、numpy などを含む python パッケージのバンドル) は、Matlab が行うことの多くを行います。微妙な違いとさまざまなトレードオフがあります。自動ブロードキャストは、コツをつかめば非常に便利です。MathWorks は最近 BSXFUN を追加しましたが、これは numpy で自動化されています。疎行列で多くの作業を行っている場合、またはより高度な線形代数関数を多数呼び出している場合は、numpy ドキュメントをチェックして、必要なものがまだ存在するかどうかを確認してください。

これまでに環境で行ったことに応じて、Python のアプローチを数週間試してみることをお勧めします。そのプロット機能と数学関数がニーズに十分かどうかを確認してください。ドキュメンテーションは Matlab のものほど成熟していないため、最初は頭を壁にぶつけることを期待してください。

于 2009-05-28T01:40:18.773 に答える
1

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

于 2011-02-27T11:24:10.980 に答える
1

両方のバージョンをテストするのに少し時間がかかりましたが、この問題について結論を出すには:

python と numpy/scipy および matplotlib を組み合わせて使用​​することにしました。なぜこれを使うことにしたかというと、主な理由はただ一つ。Matlab で itk と vtk をインポートするときは、Mex 関数を使用して C コードをプログラムする必要があります。これらの mex ファイルは、次のようにルーチン内にあります。

代替テキスト http://www.bastijn.nl/zooi/routine.png

ここで、ルーチンが mex ファイルの場所に到達すると、この mex ファイルに制御を渡し、関数のように起動します。mex ファイルはブラック ボックスのようなものです。Mex ファイルが処理を完了すると、制御が matlab に戻され、ルーチンが続行されます。ただし、Mex ファイルが起動されている間、または matlab からこの mexfile の変数にアクセスしている間は、matlab 操作を行うことはできません。したがって、いくつかの itk/vtk コードを実行することは不可能です。それが機能しないことに気付き、mex ファイルで使用されている変数の一部を変更します (そこで作成されますが、ブラック ボックスが結果のみを返すため、変数はそこで停止します)。何が機能するかをスピードテストします。mex 関数全体を再度起動する必要があります。

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

于 2009-06-10T07:45:15.873 に答える
1

Bastjin、あなたの選択は正しかった: Python ルール!

いくつかの詳細情報:

オプション番号1について、私はこれを書きました: http://github.com/thewtex/matlab-itk-import しかし、あなたが言及したように、それは劣ったオプションです。

オプション番号 2 のリンクを次に示します。 Mayavi2 の mlab には、VTK と numpy を切り替える優れた機能があります。

WrapITK を使用すると、Python で ITK パイプラインを記述でき、そこにある PyBuffer 外部プロジェクトを使用して Numpy とやり取りできます。

于 2010-03-10T15:36:27.723 に答える