私はMATLABを使用しており、MATLABでの信号処理とプロットに基本的な使用経験がありますが、OpenCVを使用した画像処理で作業しているため、MATLABよりもC / C ++の方が快適です... C / C ++で信号処理を行うためのDSPライブラリまたはプラットフォーム(OpenCVは画像処理用)はありますか?
私はMATLABを使用しており、MATLABでの信号処理とプロットに基本的な使用経験がありますが、OpenCVを使用した画像処理で作業しているため、MATLABよりもC / C ++の方が快適です... C / C ++で信号処理を行うためのDSPライブラリまたはプラットフォーム(OpenCVは画像処理用)はありますか?
回答:
Octaveは、マルチプラットフォームのオープンソースの数学および行列ツールキットです。これは、MATLABと非常によく似たコマンドラインインタープリターを備えていますが、使用可能なC ++ APIもあります。画像処理とは対照的に信号処理について言及しているので、私は音声処理を意味していると思います。そのため、オクターブの「信号」および「音声」パッケージ(たとえばwavreadを提供する)を調べる必要があるかもしれません。ただし、APIは主にオクターブCLIの内部使用向けに設計されており、安定していないと見なされている(つまり、バインディングが変更される可能性がある)ことに注意してください。また、ライブラリは主にリンクされることを意図していないため、ドキュメントは控えめに言っても不十分です。
または、GNU Scientific Libraryもあります。これは主に信号処理を目的としたものではなく、複素数、行列、fftなどを提供します。Windowsでは、Cygwinを使用して自分でコンパイルする必要があります。
IntelのIntegrated Performance Primitives(IPP)C ++ライブラリには、信号処理コンポーネントと画像処理コンポーネントの両方があります。
私はそれを使用していませんが、matlabのような機能でarmadillo(http://arma.sourceforge.net/)について良いことを聞いています。他にもいくつか似ていますが、アルマジロは最適化され、積極的に開発されているようです。
octave、matlab、またはpython / numpy / scipy(「pylab」と呼ばれることもあります)の魅力の1つは、タブ補完機能を備えたインタラクティブなインタープリターとともにシンプルな構文を使用することです。これにより、開発をかなりスピードアップできます。
python / numpyを使用すると、dllをpythonラッパーでラップし、インタラクティブインタープリター内から使用することができます。これはmatlabでも実行できると思いますが、これがオクターブで実行できるかどうかはわかりません。ただし、これはpython / numpyでは少し複雑になる可能性があることに注意してください。ただし、パフォーマンスが重要な場合は、以前にコストに見合うメリットがあることがわかりました。