Eu tenho exposição ao MATLAB e tenho alguma exposição básica ao processamento e plotagem de sinais no MATLAB ... mas estou mais confortável com C / C ++ que com MATLAB porque tenho trabalhado no processamento de imagens com OpenCV ... Fiquei curioso: É existe alguma biblioteca ou plataforma DSP (como o OpenCV é para processamento de imagens) para realizar o processamento de sinais em C / C ++?
image-processing
signal-analysis
dsp-core
rotating_image
fonte
fonte
Respostas:
O Octave é um conjunto de ferramentas de matemática e matriz de código aberto de várias plataformas. Ele possui um intérprete de linha de comando com o objetivo de ser muito semelhante ao MATLAB, mas também há uma API C ++ disponível para uso. Como você se refere ao processamento de sinal em contraste com o processamento de imagem, suponho que você queira dizer processamento de áudio; portanto, talvez seja necessário examinar os pacotes "sinal" e "áudio" na oitava (que fornecem, por exemplo, wavread). No entanto, lembre-se de que a API foi projetada principalmente para uso interno na CLI de oitava e é considerada não estável (ou seja, as ligações podem mudar). Além disso, como a biblioteca não se destina a ser vinculada principalmente, a documentação é ruim para dizer o mínimo.
Como alternativa, há também a Biblioteca Científica GNU , que não se destina principalmente ao processamento de sinais, mas fornece números complexos, matrizes, fft e assim por diante. No Windows, você teria que compilar isso usando Cygwin.
fonte
Você já viu o gnuradio ? Eles possuem blocos semelhantes aos usados no processamento de sinais. Quando eu costumava, alguns anos atrás, havia um grande número de blocos que já estavam disponíveis e mais em obras, todos escritos em C ++. Os blocos foram colados usando python, mas uma implementação completa do C ++ estava em andamento.
fonte
A biblioteca C ++ da Intel® Integrated Performance Primitives (IPP) possui componentes de processamento de sinal e de imagem.
fonte
Eu não o usei, mas ouvi coisas boas sobre o tatu ( http://arma.sourceforge.net/ ) para funcionalidades do tipo matlab. Existem alguns outros semelhantes, mas parece que o tatu é otimizado e desenvolvido ativamente.
Parte do apelo de oitava, matlab ou python / numpy / scipy (às vezes chamado de "pylab") é a sintaxe simples, juntamente com um intérprete interativo com conclusão de tabulação. Isso pode acelerar bastante o desenvolvimento.
Com python / numpy, é possível agrupar uma dll com um wrapper python e usá-lo no intérprete interativo. Acredito que isso também pode ser feito com o matlab, mas não tenho certeza se isso pode ser feito na oitava. Esteja avisado, no entanto, de que isso pode ser um pouco complicado em python / numpy, embora eu tenha achado que os benefícios valiam o custo no passado, quando o desempenho é crítico.
fonte
O Armadillo faz um ótimo trabalho para álgebra linear em C ++ (bastante rápido por meio de modelos de expressão) e pode certamente ser usado também para o processamento de sinais. Além de suportar matrizes com vários tipos de elementos, possui suporte para tensores de terceira ordem (cubos), que são úteis no processamento de imagens.
Também existe uma biblioteca C ++ relacionada, conhecida como IT ++ , que não é tão rápida quanto o Tatu, mas possui mais classes pré-criadas, voltadas para o processamento e a comunicação de sinais.
fonte
JUCE é uma boa biblioteca de plataformas de áudio C ++. Você pode criar VSTs com muita facilidade se quiser ter rapidamente um buffer de E / S sendo reproduzido na sua placa de som em que possa trabalhar. Além disso, você pode usá-lo como um VST de plataforma cruzada, se desejar.
fonte