R: Czlug: Tempi di esecuzione
Pier
pier.damato@gmail.com
Ven 28 Lug 2006 14:59:29 CEST
fortunato lodari wrote:
>Ciao!
>
>
>
>>Sto facendo un'analisi dei diversi algoritmi che operano su
>>immagini
>>
>>
>[...omissis...]
>
>Prima di rispondere mi piacerebbe vedere il codice della funzione
>averageFilter3x3
>
>Saluti
>
> [fox]
>
>
>
>
Eccolo
ERR_CODE averageFilter3x3
(
unsigned char *imageIn, // (i) immagine da filtrare
int rows, // (i) righe
dell'immagine
int cols, // (i) colonne
dell'immagine
unsigned char **imageOut, // (o) immagine filtrata
long long *time // (o) time impiegato
)
{
int x,y; // indici di ciclo
float average; // media
unsigned int c1; // somma colonna y-1
unsigned int c2; // somma colonna y
unsigned int c3; // somma colonna y+1
// Parte da pixel(1,1)
for(x=1;x<rows-1;x=x+1)
{
// somma colonna 0
c1=(unsigned int)(imageIn[((x-1)*cols)]);
//pixel(x-1,0)
c1=c1+(unsigned int)(imageIn[(x*cols)]);
//pixel(x ,0)
c1=c1+(unsigned int)(imageIn[((x+1)*cols)]); //pixel(x+1,0)
// somma colonna 1
c2=(unsigned int)(imageIn[((x-1)*cols)+1]);
//pixel(x-1,1)
c2=c2+(unsigned int)(imageIn[(x*cols)+1]); //pixel(x ,1)
c2=c2+(unsigned int)(imageIn[((x+1)*cols)+1]); //pixel(x+1,1)
for(y=1;y<cols-1;y++)
{
// somma della colonna y+1
c3=(unsigned int)(imageIn[((x-1)*cols)+y+1]);
c3=c3+(unsigned int)(imageIn[(x*cols)+y+1]);
c3=c3+(unsigned int)(imageIn[((x+1)*cols)+y+1]);
// calcolo della media
average=(c1+c2+c3)/9;
// scrive la nuova immagine
(*imageOut)[x*cols+y]=(unsigned char)average;
c1=c2;
c2=c3;
}
}
return SUCCESS;
}
Aspetto illuminanti spiegazioni... :)
Maggiori informazioni sulla lista
Czlug