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