2009-06-12 17 views
7

私は外科医が3DでDicom画像を視覚化するための医療ソリューションを構築することを検討しています。また、ソフトウェアは、画像に対して何らかのセグメンテーションおよび操作を実行することを可能にする。医療画像処理のための最良のプログラミング言語

このプロジェクトを支援するには、おそらくVTKパッケージwww.vtk.org/を使用します。

今、私はC#、C++、またはPythonでこのプロジェクトを行う方が簡単で良いかどうか疑問に思っていますか?これらの3つのオプションの選択方法を見つける上で助けに感謝します。

答えて

4

個人的には、私はC++とPythonの人です。これは比較的集中的なプロジェクトのように聞こえるので、おそらくC++になるでしょう。そして、私の最高レベルのデザインはC++で大部分を占めます。柔軟性のあるコードベース)がありますが、私はdjangoのようなアプリケーションロジックは少ないが、関数を調整することができるようなものにPythonを使用する傾向がありますが、ルックアンドフィールは素早く重要です。しかし、私の選択は、それがあなたの選択でなければならないという意味ではありません。考慮すべき点は次のとおりです。

最初に1)親しみやすい。プロダクションコードをコーディングする場合は、あなたが知っているものと一緒に行きたいと思うし、うまくいくか、言語に苦労して納期が間に合わないでしょう。また、プロジェクトを完了しても、学習していることのためにたくさんの厄介なコードを作成する必要があります。私は新しい言語を習得していますが、それに取り組む余裕があります。

2)サードパーティのライブラリ。あなたが言及したもの以外に、あなたはどちらを望みますか?彼らがラッパーを持っていない場合、あなたは自分自身を圧倒されます。あなたのGUIを書こうとするものが一例です。

3)配置:これは想定されるウィンドウ実行可能ファイルであると仮定します。 C#とC++の両方で簡単に行うことができますが、PythonインタプリタなしでPythonプログラムをデプロイする予定がある場合は、py2exeに慣れておく必要があります

2

もしあなたがpythonを手放すことができれば - 言い換えれば、それがpythonで正常に動作することを知っていれば、私は間違いなくC#/ C++よりもそれを選ぶでしょう。

あなたが使用している3Dライブラリは、とにかくCやC++でビルドされていると確信しています。そのため、Pythonのような高水準の言語でインターフェイスすると、減速してはいけません。

+0

なぜ私はPhythonをC#とC++よりもお勧めしたいのですか? – Bekh

+3

Pythonはより高いレベルの言語です。 C#も高水準言語だと主張することはできますが、C++はそうではなく、あなたがそれを使用することに決めたなら、あなたはもっと大きな問題に遭遇します。 – cloudhead

+3

C++はプログラマがそれをコードするほど高いレベルです –

0

私はSound Vetでしばらく働いていました。彼らは、獣医学分野向けのxrayイメージングソフトウェアを提供しています。彼らはC#とwinformsを使用します。

0

私はTodd Gardnerに同意するのは、プログラミング言語を選択するですから、もしあなたが他の2つの言語よりも3つの言語のどれかに慣れているなら、それを選ぶことをお勧めします。

しかし、皆さんもまったく慣れていないのであれば、私は第2のクラウドヘッドのPython勧告をお勧めします。

1

ほとんどの医療3D画像は、通常非常に大きい(GBサイズ)です。あなたはこれらに簡単に対処できる言語を選びたいと思っています。私の知る限り、C#には2GBのメモリ制限があります(私は100%確信していません)。これはいくつかの問題を引き起こす可能性があります。

私はPythonの経験がありませんので、私はそのパスをさらに進めるつもりはありません。しかし、私はC#とC++の両方で医用画像データ(再構成、フィルタリング、正規化、その他の重い計算)に取り組んできました。私たちの場合、C++はスピードのために唯一の選択肢です。しかし、それは画像を見ることになると、これはおそらく問題ではないかもしれません。

私はあなたに最高の運が欲しいです。優れた安定性とクイック3Dビューアは素晴らしいでしょう!

+1

C#/ .NETには2 GBのメモリ制限がありません。連続した1つのメモリチャンク(つまり新しいバイト[x])を割り当てようとすると、2GBに制限されます。これは慎重です。しかし、64ビットシステムでは、アセンブリが32ビットシステムで実行されているときに可能なチャックが2GBを超えない限り、システムが通常許容するメモリを割り当てることができます。大きなイメージをロードするには、イメージ全体に対して1つの大規模な配列を作成するのではなく、スキャンラインごとに1バイトの[]配列を作成します。また、汎用抽象クラスを使用して配列をブロックにすることもできます。 – David

6

Pythonは3D視覚化のために人気が高まっています。たとえば、いくつかのラボで脳画像などに使用されています。だから、それは間違いなくその種の問題に使用可能です。ライブラリ賢明なことに、あなたはvtkやcoのようなものはPythonから使うことができると認識していると思います。もちろん

http://neuroimaging.scipy.org/site/doc/manual/html/faq/why.html

、理論にC++、でそれをやって、 '(...同じアルゴリズム、言語に堪能プログラマー、など)より速くプログラム、他のすべてが等しいものになると与えられます無限の時間 '。しかし、Pythonは確かにC++よりも生産性が高いです。一定の時間内に、PythonよりもC++のほうがはるかに優れたプログラマーでない限り、PythonでC++よりも多くの処理が行われます。また、プログラマーではない科学者と対話する必要がある場合、PythonはC++より読みやすくなります。研究者や科学者が作成したC++は、私の経験では(Fortranよりも悪い)、本当に恐ろしいものです。

私が予測できる最大の問題は、pythonが高速ではない/メモリ効率が十分でないため、アーキテクチャ上の観点から多くの制約が伴うことです。私はそれが画像の場合ではないと考えています(ほとんどの高水準言語のように、Pythonは多くのインタラクションを持つ数十万のオブジェクトが必要なときにスケーラビリティの問題があります。最初から始まったのは今でもIMHOです)。

免責事項:私は科学的なpythonコミュニティにかなり関与しており、私は画像処理の専門家ではないことを言及する必要があります。

+3

+1数値タスクにC++とPythonの両方を使用します。私たちがPythonの問題に遭遇したのは、私たちが1トンの小さなオブジェクトを持っていたときだけでした。 Pythonはあまりにも多くのメモリを使う傾向がありました。また、速度が遅すぎると、小さなオブジェクトのI/Oが遅すぎるためにメモリが不足しているため、ライブラリを呼び出すだけで高速化できません。しかし、1つの大きなオブジェクトがあり、重い作業のためにライブラリを呼び出すことができれば、Pythonは往復時間が非常に短く、私はそれを実行します。 – stephan

0

ほとんどのプロの医療用画像会社は、Accusoft Pegasus PICToolsライブラリを使用しています。 これらは、JPEG2000、Lossless JPEG、JPEG-LSなどのDICOMの損失性および可逆性のすべてのフォーマットに対して、最も高速で最も標準的な圧縮および圧縮解除を提供します。

IF速度が必要ですが、何も比較されません。

Windowsにデプロイする場合、ImageGear .NETまたはImageGear Proは、DICOM dcmファイルを完全にサポートする使いやすい環境を提供します。

また、Windows用のImagXpressを使用することもできます。

2

ITKは、医用画像処理のミツバチです。これはC++です。だから、私はC++ w/ITKをお勧めしたいと思います。

関連する問題