Tengo exposición a MATLAB y tengo una exposición básica al procesamiento y trazado de señales en MATLAB ... pero me siento más cómodo con C / C ++ que MATLAB porque he estado trabajando en procesamiento de imágenes con OpenCV ... Tenía curiosidad: es ¿Hay alguna biblioteca o plataforma DSP (como OpenCV es para el procesamiento de imágenes) para hacer el procesamiento de señales en C / C ++?
image-processing
signal-analysis
dsp-core
rotación_imagen
fuente
fuente
Respuestas:
Octave es un kit de herramientas de matriz y matemáticas de código abierto multiplataforma. Tiene un intérprete de línea de comandos destinado a ser muy similar a MATLAB, pero también hay una API de C ++ disponible para su uso. Dado que se refiere al procesamiento de la señal en contraste con el procesamiento de la imagen, supongo que se refiere al procesamiento de audio, por lo que es posible que deba examinar los paquetes de "señal" y "audio" en octava (que proporcionan, por ejemplo, wavread). Sin embargo, tenga en cuenta que la API está diseñada principalmente para uso interno en la CLI de octava y que se considera no estable (es decir, los enlaces pueden cambiar). Además, dado que la biblioteca no está destinada principalmente a vincularse, la documentación es pobre, por decir lo menos.
Alternativamente, también existe la Biblioteca Científica GNU , que no está dirigida principalmente al procesamiento de señales, pero proporciona números complejos, matrices, fft, etc. En Windows, tendría que compilarlo usted mismo usando Cygwin.
fuente
¿Has echado un vistazo a gnuradio ? Tienen bloques similares a los que se usan en el procesamiento de señales. Cuando solía hacerlo hace unos años, había una gran cantidad de bloques que ya estaban disponibles y más en proceso, todos escritos en C ++. Los bloques se pegaron usando Python, pero una implementación completa de C ++ estaba en proceso.
fuente
La biblioteca C ++ Integrated Performance Primitives (IPP) de Intel tiene componentes de procesamiento de señales y procesamiento de imágenes.
fuente
No lo he usado, pero he escuchado cosas buenas sobre armadillo ( http://arma.sourceforge.net/ ) para una funcionalidad similar a matlab. Hay algunos otros como este, pero parece que el armadillo está optimizado y desarrollado activamente.
Parte del atractivo de octava, matlab o python / numpy / scipy (a veces llamado "pylab") es la sintaxis simple junto con un intérprete interactivo con compleciones de tabulación. Esto puede acelerar el desarrollo bastante.
Con python / numpy, es posible ajustar un dll con un contenedor de python y usarlo desde el intérprete interactivo. Creo que esto también se puede hacer con matlab, pero no estoy seguro de si esto se puede hacer en octava. Sin embargo, tenga en cuenta que esto puede ser un poco complicado en python / numpy, aunque he encontrado que los beneficios valen la pena en el pasado cuando el rendimiento es crítico.
fuente
Armadillo hace un gran trabajo para el álgebra lineal en C ++ (bastante rápido a través de plantillas de expresión), y ciertamente también se puede usar para el procesamiento de señales. Además de admitir matrices con varios tipos de elementos, tiene soporte para tensores (cubos) de tercer orden, que son útiles en el procesamiento de imágenes.
También hay una biblioteca de C ++ relacionada conocida como IT ++ , que no es tan rápida como Armadillo, pero tiene más clases preconstruidas orientadas al procesamiento de señales y la comunicación.
fuente
JUCE es una buena biblioteca de plataforma de audio C ++. Puede hacer VST con bastante facilidad si desea tener rápidamente un búfer de E / S reproduciéndose en su tarjeta de sonido en el que pueda trabajar. Además, puede usarlo como VST multiplataforma si lo desea.
fuente