1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include "_convoluer.h"
#define T2DINDEX(i, j, k) ((i)*(k)+(j)) //Macro permettant d'acceder aux element en concept 2D
void cconvoluer(float *inSource, int inLignes, int inColones,
float *inNoyau, int inTailleNoyau, float *outResultat)
{
int x=0;
int y=0;
int parcourSource=((inLignes-1)*(inColones-1))-(inTailleNoyau-1);
int parcourNoyau=((inTailleNoyau-1)*(inTailleNoyau-1));
for(y=0;y<parcourSource;y++) //boucle iterant sur la taille de la source - taille du noyau
{
for(x=0;x<parcourNoyau;x++) //boucle iterant sur la taille du noyau
{
outResultat[y]+=inNoyau[x]*inSource[T2DINDEX(y,x,inColones-1)]; //somme de produits des elements du noyaus avec les element correspendants dans la source
}
}
} |