10

2Dサーフェス上を移動するオブジェクトのリアルタイム追跡で構成される、最終年のエンジニアリングプロジェクトを間もなく開始します。オブジェクトは、特徴抽出を使用して私のアルゴリズムによって登録されます。

私は、MATLABを使用するか、Python Numpy(Numerical Python)を使用するかを決定するためにいくつかの調査を行おうとしています。私が考慮しているいくつかの要因:

1.)経験

私は両方で妥当な経験がありますが、おそらくNumpyを使用した画像処理の経験が豊富です。ただし、MATLABは非常に直感的で、簡単に理解できることが常にわかっています。

2.)リアルタイム能力

私の選択が外部カメラからのビデオデータのリアルタイム取得をサポートできることは非常に重要です。その方法を示すMATLABのこのリンクを見つけました。おそらくOpenCVライブラリを使用して、Pythonでも同じことが可能だと確信していますか?

3.)パフォーマンス

使用したことはありませんが、MATLABは独立した計算を複数のコアに簡単に分割できると聞いています。これは非常に便利だと思いますが、Numpyでも同じことが同じように簡単かどうかはわかりません。

4.)価格

MATLABにはコストがかかることは知っていますが、私は大学で働いているので、自分自身にコストをかけずに完全なMATLABにアクセスできるので、価格は要因ではありません。

似たようなことをした人からの意見や、あなたの経験を教えていただければ幸いです。ありがとう!

4

4 に答える 4

7

Pythonをお勧めします。

私はMATLAB->pythonから博士号の約1/2の方法で切り替えましたが、後悔していません。最も単純な場合、Pythonははるかに優れた言語であり、実際のオブジェクトなどがあります。

コードの一部をc/c ++で実行する予定の場合は、Pythonをお勧めします。mexインターフェースは機能しますが、ビルドが複雑/大きくなると、それは苦痛になり始め、効果的にデバッグする方法を整理することはできませんでした。また、mex + matlabのメモリ管理と相互作用する大きなブロックの割り当てに大きな問題がありました(その問題を修正できなかったことが、私を切り替えさせた理由です)。

補足/自己宣伝として、私はc ++(swigラッパー付き)のCrocker-Grierと純粋なpythonを持っています。

于 2012-06-21T12:21:42.833 に答える
7

Python(NumPy、SciPy、MatPlotLibを使用)は新しいMatlabです。したがって、MatlabよりもPythonを強くお勧めします。

私は1年以上前に変更を加えましたが、結果に非常に満足しています。

これはPythonとMatlabの短い賛否両論のリストです

Pythonの長所:

  • オブジェクト指向
  • 大規模で「本物の」プログラムを簡単に作成できます
  • オープンソース(完全に無料で使用できます)
  • 高速(重い計算アルゴリズムのほとんどには、Cライブラリに接続するためのPythonラッパーがあります(例:NumPy、SciPy、SciKits、libSVM、libLINEAR))。
  • 快適な環境、高度に構成可能(iPython、VIM用のPythonモジュールなど)
  • Pythonユーザーの急成長中のコミュニティ。たくさんのドキュメントと喜んで手伝ってくれる人々

Pythonの短所:

  • インストールするのが面倒かもしれません(特にOS Xの一部のモジュール)
  • プロットの操作は、Matlabの場合ほど良くなく、簡単ではありません。特に3Dプロットやアニメーションはそうです。
  • それはまだスクリプト言語なので、(高速)プロトタイピングにのみ使用してください
  • Pythonはマルチコアプログラミング用に設計されていません

Matlabの長所:

  • インストールが非常に簡単
  • 強力なツールボックス(例:SignalProcessing、Systems Biology)
  • 統一されたドキュメント、およびライセンスを購入する限りのパーソナライズされたサポート
  • プロットアニメーションとインタラクティブグラフィックスを簡単に作成できます(実験の実行に非常に役立ちます)

Matlabの短所:

  • 無料ではありません(そして高価です)
  • 非常に醜いように見えるJava+X11に基づいています(わかりました、私はここで完全に偏っていることを受け入れます)
  • 大規模で拡張可能なプログラムを作成するのは難しい
  • 多くのMatlabユーザーがPythonに切り替えています:)
于 2012-06-21T18:04:58.893 に答える
5
  1. 両方の言語の経験がある場合、それは実際には決定基準ではありません。

  2. Matlabは、特にほとんどのコンピュータービジョンアルゴリズムが非常にコストがかかるため、リアルタイム設定に対処するのに問題があります。これは、使用するアルゴリズムの多くが効率的に実装されているOpenCVなどの実証済みのライブラリを使用する利点です。Matlabは、コードをMexファイルにコンパイルする可能性を提供しますが、それは多くの作業です。

  3. Matlabには並列forループparforがあり、マルチコア処理が簡単になります(または少なくとも簡単になります)。しかし、問題は、リアルタイムの速度を得るのにそれで十分かどうかです。

  4. コメント無し。

  5. Matlabの主な利点は、優れたドキュメントにより、実行中のプログラムを非常に迅速に取得できることです。しかし、Matlabを重視しない限り、コードの再利用性は悪いことがわかりました。

最終的な決定は、アルゴリズムをリアルタイムで実行する必要があるかどうかである必要があると思います。これは、Matlabでは疑わしいことですが、それは、使用する予定のメソッドによって異なります。

于 2012-06-21T08:25:13.087 に答える
4

他の人はたくさんの素晴らしいコメントをしました(私は以前に別の回答https://stackoverflow.com/a/5065585/392949でこのトピックについて意見を述べました)が、Pythonには本当に優れたものがたくさんあることを指摘したいと思います並列コンピューティング/分割のためのツールは、複数のコアにまたがって機能します。これは短く、決して包括的なリストではありません。

また、Cythonは、外部のCライブラリとのインターフェイスやC拡張機能の記述が必要な場合に、Matlabが提供するものと比較して、非常に優れたツールであり、優れたnumpyサポートが組み込まれています。

ここに他のオプションの束のリストがあります: http ://wiki.python.org/moin/ParallelProcessing

于 2012-06-22T00:57:41.217 に答える