Desidero implementare alcuni algoritmi di elaborazione delle immagini che devono essere eseguiti su un beagleboard. Questi algoritmi usano ampiamente le convoluzioni. Sto cercando di trovare una buona implementazione C per la convoluzione 2D (probabilmente usando la trasformazione di Fourier veloce). Voglio anche che l'algoritmo sia in grado di funzionare sul DSP di beagleboard, perché ho sentito che il DSP è ottimizzato per questo tipo di operazioni (con le sue istruzioni di accumulo multiplo).Convoluzione 2D veloce per DSP
Non ho esperienza nel campo, quindi penso che non sarebbe una buona idea implementare la convoluzione da solo (probabilmente non lo farò come qualcuno che capisca tutta la matematica che c'è dietro). Credo che esistano da qualche parte una buona implementazione di convoluzione per DSP, ma non sono riuscito a trovarla?
Qualcuno potrebbe aiutare?
MODIFICA: Risulta che il kernel è piuttosto piccolo. Le sue dimensioni sono 2X2 o 3X3. Quindi penso che non sto cercando un'implementazione basata su FFT. Stavo cercando la convoluzione sul web per vedere la sua definizione in modo da poterla implementare in modo diretto (non so davvero cosa sia la convoluzione). Tutto quello che ho trovato è qualcosa con integrali moltiplicati e non ho idea di come farlo con le matrici. Qualcuno potrebbe darmi un pezzo di codice (o pseudo codice) per il caso del kernel 2X2?
http://en.wikipedia.org/wiki/Convolution#Discrete_convolution –
@Peter : Grazie, ma stanno parlando del caso 1D, non c'è nulla riguardo alla convoluzione 2D. – snakile
Le convoluzioni 2D (nell'elaborazione dell'immagine) sono spesso separabili, quindi possono essere eseguite come 2 convessioni 1-d in sequenza. Ciò rende il requisito di elaborazione molto più piccolo. Puoi dare esempi dei tipi di kernel che vuoi usare? –