Problem



  • Hallo wieder an allen,
    ich habe folgendes Problem,ich habe einen Code geschrieben der zwar funktioniert aber mit dem Ergebnis bin ich nicht so zufrieden,da der Algorithmus nicht alle Raende richtig durchlaueft.D.h ich bekomme das richtige Bild raus aber die obere und untere Raenden sind nicht durch gearbeitet(sie sind weiss,ich meine 20mmv oben und von unten)Ich denke mal es liegt an die for Schleifen aber diese Grenzwerte die ich benutzte muessten normalerweise auch so sein(Von Aufgabe)Was koennte ich andaern oder machen so dass es das ganze Bild umfasst?Der COde ist unten
    Danke
    kilomat

    void AlphaMean(struct Image *In,int P,struct Image *Out)
    {
    int x,y,i,j,sum,z;
    int n,AR[121],a;
    n=7;

    for(y=n/2; y<In->Rows-n/2; y++)
    for(x=n/2; x<In->Cols-n/2; x++)
    {
    z=0;
    for(j=-n/2; j<=n/2; j++)
    for(i=-n/2; i<=n/2; i++)
    {
    AR[z]=*(In->Data+x+i+(long)(y+j)In->Cols);
    z++;
    }
    for(j=1; j<=n
    n-1; j++)
    {

    a=AR[j];
    i=j-1;
    while( i>=0 && AR[i]>a )
    {
    AR[i+1]=AR[i];
    i=i-1;
    }
    AR[i+1]=a;
    }
    sum=0;
    z=0;
    for(j=P; j<=n*n-1-P; j++)
    {

    sum=sum+AR[j];
    z++;
    }

    (Out->Data+x+(long)yIn->Cols)=(unsigned char)((float)sum/(float)z+.5);
    }
    }



  • vielleicht ein rundungsfehler (wegen n=7)?



  • Das N=7 ist so gegeben in der Aufgabe ,je weniger N desto weniger wird die Luecke aber es geht immer Richtung original Bild


Log in to reply