Ich bin mit MATLAB vertraut und habe einige grundlegende Kenntnisse über Signalverarbeitung und Plotten in MATLAB ... aber ich bin mit C / C ++ besser vertraut als mit MATLAB, weil ich mit OpenCV in der Bildverarbeitung gearbeitet habe ... Ich war nur neugierig: Ist Gibt es eine DSP-Bibliothek oder -Plattform (da OpenCV für die Bildverarbeitung vorgesehen ist) für die Signalverarbeitung in C / C ++?
image-processing
signal-analysis
dsp-core
rotierendes Bild
quelle
quelle
Antworten:
Octave ist ein plattformübergreifendes Open-Source-Toolkit für Mathematik und Matrix. Es verfügt über einen Befehlszeileninterpreter, der MATLAB sehr ähnlich sein soll, es steht jedoch auch eine C ++ - API zur Verfügung. Da Sie sich im Gegensatz zur Bildverarbeitung auf die Signalverarbeitung beziehen, meine ich Audioverarbeitung. Daher müssen Sie möglicherweise die Pakete "Signal" und "Audio" in Oktave (die z. B. Wavread bereitstellen) untersuchen. Beachten Sie jedoch, dass die API in erster Linie für den internen Gebrauch in der Oktav-CLI konzipiert ist und als nicht stabil angesehen wird (dh die Bindungen können sich ändern). Da die Bibliothek nicht in erster Linie mit dieser verknüpft werden soll, ist die Dokumentation gelinde gesagt schlecht.
Alternativ gibt es auch die GNU Scientific Library , die nicht primär auf die Signalverarbeitung ausgerichtet ist, sondern komplexe Zahlen, Matrizen, fft usw. bereitstellt. Unter Windows müssten Sie dies selbst mit Cygwin kompilieren.
quelle
Haben Sie Gnuradio ausgecheckt ? Sie haben ähnliche Blöcke wie bei der Signalverarbeitung. Als ich es vor ein paar Jahren gewohnt war, gab es eine große Anzahl von Blöcken, die bereits verfügbar waren, und weitere in Arbeit, alle in C ++ geschrieben. Die Blöcke wurden mit Python zusammengeklebt, eine vollständige C ++ - Implementierung war jedoch in Arbeit.
quelle
Die C ++ - Bibliothek von Intel Integrated Performance Primitives (IPP) enthält sowohl Signalverarbeitungs- als auch Bildverarbeitungskomponenten.
quelle
Ich habe es nicht verwendet, aber gute Dinge über Gürteltier ( http://arma.sourceforge.net/ ) für matlab-ähnliche Funktionen gehört. Es gibt einige andere, die es mögen, aber es scheint, dass Gürteltier optimiert und aktiv entwickelt wird.
Ein Teil der Attraktivität von Octave, Matlab oder Python / Numpy / Scipy (manchmal als "Pylab" bezeichnet) ist die einfache Syntax zusammen mit einem interaktiven Interpreter mit Tab-Vervollständigungen. Dies kann die Entwicklung erheblich beschleunigen.
Mit Python / Numpy ist es möglich, eine DLL mit einem Python-Wrapper zu verpacken und im interaktiven Interpreter zu verwenden. Ich glaube, dass dies auch mit Matlab möglich ist, aber ich bin mir nicht sicher, ob dies in Oktave möglich ist. Seien Sie jedoch gewarnt, dass dies in Python / Numpy etwas kompliziert sein kann, obwohl ich festgestellt habe, dass die Vorteile die Kosten in der Vergangenheit wert sind, wenn die Leistung kritisch ist.
quelle
Armadillo leistet hervorragende Arbeit für die lineare Algebra in C ++ (ziemlich schnell über Ausdrucksvorlagen) und kann sicherlich auch für die Signalverarbeitung verwendet werden. Neben der Unterstützung von Matrizen mit verschiedenen Elementtypen werden Tensoren 3. Ordnung (Würfel) unterstützt, die bei der Bildverarbeitung nützlich sind.
Es gibt auch eine verwandte C ++ - Bibliothek namens IT ++ , die nicht so schnell wie Armadillo ist, aber mehr vorgefertigte Klassen enthält, die auf Signalverarbeitung und Kommunikation ausgerichtet sind.
quelle
JUCE ist eine schöne C ++ - Audio-Plattformbibliothek. Sie können VSTs ganz einfach darin erstellen, wenn Sie schnell einen E / A-Puffer auf Ihrer Soundkarte abspielen möchten, an dem Sie arbeiten können. Außerdem können Sie es anschließend als plattformübergreifende VST verwenden, wenn Sie möchten.
quelle