Librerie Ansi C ottimizzate per DSP


8

Sono nuovo di DSP? Dov'è una buona risorsa per gli algoritmi DSP open source?

MATLAB è bravo a fare protos ma una volta che passiamo alla codifica C, ci vuole tempo e finiamo per fare troppi errori. Immagino che ci debbano essere buoni repository di codici C per varie implementazioni di filtri, ecc. Eventuali puntatori sarebbero buoni.


1
Hai sicuramente bisogno di mettere un po 'di attenzione e di elaborazione nella tua domanda. Sei davvero preoccupato per la velocità di esecuzione o creazione e software indipendente? qual è l'ambito (applicazione) e il target? Stai cercando di confrontare Matlab vs C vs xyz? o hai davvero deciso in C e hai bisogno di risorse lì? Any pointers are good- è generalmente un segno di mancanza di ricerche precedenti da parte vostra.
Dipan Mehta,

Risposte:


4

Parte 1: Riguardo al confronto:

Non esiste un'ottima risposta generale a quella che è un'alternativa più rapida a Matlab. Tutto dipende dalla piattaforma che usi.

@Hilmar asnwer che indica funzionalità come SIMD - che sono possibili in C. Ma richiederebbe il supporto dell'assemblaggio lanaguage insieme a C.

Ecco un confronto più ampio:

  1. Se stai lavorando su un computer generico (come x86 o PPC), suppongo che non ci sia niente di meglio (e più veloce) di C.

  2. Se stai lavorando su hardware DSP specializzato (o piattaforma incorporata come ARM) rispetto all'assembly nativo sarà molto più avanti e C potrebbe non corrispondere a questo. (Sebbene C potrebbe essere un giusto equilibrio tra creazione di software flessibile e velocità di esecuzione.

  3. Se stai confrontando C con C ++, a differenza della percezione generale - C ++ può essere reso altrettanto ottimale nella maggior parte dei contesti con alcune delle migliori funzionalità di programmazione.

  4. Per altri strumenti utili: puoi consultare altri strumenti di scripting come TCL o Lua. Questi sono decisamente migliori di quelli di livello inferiore ma potrebbero compromettere la velocità.

Parte 2: i riferimenti

Immagino che ci debbano essere buoni repository di codici C per varie implementazioni di filtri ecc.

  1. OpenCV - probabilmente il migliore per le applicazioni di visione artificiale.

  2. ImLab 2.3 - è un'applicazione grafica open source gratuita per l'elaborazione scientifica delle immagini che funziona su Windows, Linux e molti altri sistemi UNIX. Supporta più finestre, tipi di dati inclusi numeri interi a 32 bit, numeri reali a 32 bit e numeri complessi. È implementato in C ++ e anche in C per fornire un modo molto semplice per aggiungere nuove funzioni. Ha molte operazioni di immagine e supporta diversi formati di file.

  3. ImageLib : è una libreria di classi C ++ che fornisce elaborazione delle immagini e servizi correlati. L'insieme principale di classi offre una varietà di tipi di immagini e vettori, con moduli aggiuntivi che supportano la quantizzazione scalare e vettoriale, trasformazioni wavelet, trasformazioni DCT e semplici operazioni di istogramma.

  4. CImage - Libreria di elaborazione immagini modello C ++

  5. Camellia Library è una libreria open source di elaborazione delle immagini e visione artificiale. Scritto in semplice C, è multipiattaforma (Unix / Linux, Windows) e robusto. Include già molte funzioni per l'elaborazione delle immagini (filtraggio, matematica morfologica, etichettatura, deformazione, disegno, progetto / retroprogramma, conversione del colore, caricamento / salvataggio delle immagini, ecc.), La maggior parte delle quali altamente ottimizzate per la velocità. È anche documentato con doxygen e vengono forniti esempi di utilizzo.

  6. VXL : Librerie C ++ per la ricerca e l'implementazione di Computer Vision

  7. GNU Scientific Library (GSL) è una libreria numerica per programmatori C e C ++

  8. Intel® Math Kernel Library (Intel® MKL) è una libreria matematica informatica di routine matematiche altamente ottimizzate e con thread estesi per applicazioni che richiedono le massime prestazioni. Le funzioni matematiche di base includono BLAS, LAPACK, ScaLAPACK1, solutori sparsi, trasformazioni veloci di Fourier, matematica vettoriale e altro.

  9. È possibile fare riferimento al libro: Ricette numeriche in C - e il codice di esempio.

trova molto di più da qui: http://www.cs.cmu.edu/~cil/v-source.html


4

Il problema è che ANSI C non è un linguaggio terribilmente buono per DSP in tempo reale. Molte funzioni che un vero chip DSP non può essere affrontato in ANSI C. Queste includono generatori di indirizzi, indirizzamento bit-reverse, indirizzamento circolare, SIMD, segmenti di memoria, bus multipli, tipi di dati frazionari, moltiplicazione frazionaria, determinati calcoli a virgola fissa, zero overhead loop ecc. Quindi la maggior parte dei compilatori per DSP ha un ampio set di estensioni del linguaggio (#pragma, assemblatore inline, nuove parole chiave, ecc.). Tuttavia, questi sono decisamente non ANSI e non portatili.

La scrittura di un semplice filtro FIR a virgola fissa in ANSI C può essere 10 volte meno efficiente dell'utilizzo delle estensioni o del codice assembly appropriati.


0

Puoi controllare mettere il prodotto coder matlab. Ciò ti consente di generare il codice C direttamente dal tuo codice matlab senza doversi preoccupare dell'introduzione di errori umani.

http://www.mathworks.co.uk/products/matlab-coder/?s_cid=HP_MI_matlabcoder

Tuttavia, supporta solo un sottoinsieme della lingua e richiede una licenza separata, ma potrebbe essere adatto alle tue esigenze.

Il seguente collegamento è utile per trovare il sottoinsieme supportato di Funzioni

http://www.mathworks.co.uk/help/toolbox/eml/ug/bq1h2z7-11.html


0

Ceemple è un ambiente di elaborazione tecnica JIT C ++ rapido, che raggruppa diverse librerie C / C ++ ottimizzate per l'elaborazione tecnica, in modo da poter eseguire sia la prototipazione rapida che la distribuzione all'interno di Ceemple. Disponibile (gratuito) da http://www.ceemple.com .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.