Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Bildfilter

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ] [ 6 ]
010
01.09.2003, 12:17 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich war jetzt zu faul zum testen, aber die Idee dürfte klar werden:

C++:
void filter(int* data, int x, int y)
{
    if (0==x || 0==y) return;

    //
    // Init temp buffer
    //
    int ints_per_line = (x+2);
    int bytes_per_line = ints_per_line*sizeof(int);
    int* buffer = new int[3*ints_per_line];
    memset(buffer, 0, 3*bytes_per_line);
    memcpy(buffer+1, data, sizeof(int)*x);

    //
    // Loop for each line
    //
    for(int i=0; i<y; ++i)
    {
        int y1 = (i+2)%3;
        int y2 = i%3;
        int y3 = (i+1)%3;

        //
        // Aktualisiere tmp. buffer
        //
        if (i+1!=y)
            memcpy(buffer+1+ints_per_line*y3, data+x, sizeof(int)*x);
        else
            memset(buffer+1+ints_per_line*y3, 0, sizeof(int)*x);

        //
        // Transform
        //
        int* s = buffer;
        for(int j=0; j<x; ++j, s++)
            *data++ =   s[y1*ints_per_line]+s[2+y1*ints_per_line]
                        -4*s[1+y2*ints_per_line]
                        +s[y3*ints_per_line]+s[2+y3*ints_per_line];
    }

    delete [] buffer;
}


Möglicherweise tuts ja nach entfernen der obligatorischen Bugs
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
01.09.2003, 12:24 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ach du sch**sse
irgendwie kommt bei dir nicht das raus was ich mir vorgestellt habe.
Mal gucken ob ich finde woran das liegt.
Kann ne weile dauern, wenn ichs denn überhaupt finde

du hast den code bestimmt mit absicht so geschrieben das ich den nciht verstehen kann
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 01.09.2003 um 12:25 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
01.09.2003, 12:43 Uhr
virtual
Sexiest Bit alive
(Operator)


Möglicherweise habe ich einfach vergessen, die Sachen wieder in den Richtigen Wertebereich zu transformieren. Ich habe erst jetzt die Aufgabe richtig gelesen
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
01.09.2003, 14:32 Uhr
Pablo
Supertux
(Operator)


Mist und ich hatte keine Zeit dieses zo loesen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
01.09.2003, 14:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Pablo
das von virtual funzt ja auch noch nicht
Ist also noch nicht gelöst
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
01.09.2003, 16:10 Uhr
Pablo
Supertux
(Operator)


Darf ich fragen, was memcpy und memset machen?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
01.09.2003, 16:13 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du darfst

memcpy kopiert einen kompeletten speicherbereich von einem puffer in den anderen
und memset setzt alle werte eines speicherbereichs auf einen festen werden. (Quasi zum initialisieren, wenn man kein bock hat ne schleife duchlaufen zu lassen)

guck dir lieber nicht soviel das von virtual an und schreibs lieber selber
Davon bekommt man nur kopfschmerzen
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 01.09.2003 um 16:14 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
01.09.2003, 17:18 Uhr
Pablo
Supertux
(Operator)


So, jetzt habe ich aber die Funktion Pixel geschafft.


C++:
int Pixel(int* picture,int x, int y, int xdim, int ydim)
{
  int* arr,i,j=-1,p;
  arr = new int[y];
  for(i=x; i<xdim*ydim; i+=ydim)
    arr[++j] = picture[i];
  p = arr[y];
  delete [] arr;
  return p;
}


Wenn xdim=ydim=5==> kleinster Punkt (0,0). Größter Punkt (4,4).
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 01.09.2003 um 17:18 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
01.09.2003, 17:22 Uhr
Pablo
Supertux
(Operator)


Wenn ich die Datei xxx.bmp lese (mit bmp2raw), wie kann ich xdim und ydim herausfinden?
Sollte die Funktion nicht besser so aussehen?


C++:
int* bmp2raw(char* bmp_filename, int& xdim, int& ydim);


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
01.09.2003, 17:28 Uhr
Pablo
Supertux
(Operator)



Zitat:
Windalf postete
upsi übles fehlerchen ist mir unterlaufen war wohl die uhrzeit
1*Pixel(x-1,y-1) + 0*Pixel(x,y-1) + 1*Pixel(x+1,y-1)
0*Pixel(x-1,y ) - 4*Pixel(x,y ) + 0*Pixel(x+1,y )
1*Pixel(x-1,y+1) + 0*Pixel(x,y-1) + 1*Pixel(x+1,y+1)


Jetzt kann ich aber nicht weiter denken.
Muss man die 3 Zeilen addieren? Ein Pixel ist nur eine Zahl und kein Vektor, oder?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ] [ 6 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: