Interpolation



  • Interpolation ja ob das bei mipmaps so gemacht wird weiss ich nicht kann aber gut möglich sein bei photshop wirds soweit ich weiss gemachen. Im moment bin ich in ner auspobierphase und mach es noch nicht mit OpenGL möcht aber später dazu übergehen.



  • Wenn du z.B.D3D oder OpenGL nutzt, dann gibt es dafür fertige Funktionen - hardwarebeschleunigt.



  • Hallöchen,

    ich nehme mal stark an das du kein GDI+ hast, da gäbs nämlich eine Funktion
    dafür. Die 3D API haben für gewöhnlich auch alle eine Funktion die einfach
    nur aufgerufen wird ohne sich den Kopf darüber zu zerbrechen was da vorsich
    geht.

    Aber es funktioniert in etwa so (x=Pixel von Originalbild,o=Pixel vom neuen Bild):

    Dein Bild ohne Vergößerung:
    x x x
    x x x
    x x x

    Dein Bild doppelt Vergrößert:
    x o x o x o
    o x o x o x
    x o x o x o
    o x o x o x
    x o x o x o
    o x o x o x

    ... so nun, die x-se haben jetzt noch den Farbwert des Originalbildes, aber
    die o-se? Welche farbe haben diese? Die 0-se bekommen jetzt den Farbwert ihrer
    direkten Nachbarn bzw. einen interpolierten Wert von deren Farbwerten.

    Sprich:
    **
    Gesamtfarbe=0;

    Gesamtfarbe += linker_Pixel.Farbe;
    Gesamtfarbe += rechter_Pixel.Farbe;
    Gesamtfarbe += oberer_Pixel.Farbe;
    Gesamtfarbe += unterer_Pixel.Farbe;

    Gesamtfarbe = Gesamtfarbe / 4; // Anzahl Nachbarn

    neuerPixel = Gesamtfarbe;
    **

    Wenn du es noch nicht verstanden hast dann meld dich nochmal. Aber im
    Prinzip für ein einfaches Interpolieren braucht es gar nichtmal
    soviel Mathe.



  • Ok, jetzt möchte er das Bild aber vielleicht nicht um einen Faktor 2 in beide Richtungen vergrößern, sondern um einen Faktor 3,794. Wie geht das nach deiner Methode?

    BTW: Deine Methode kann so nicht funktionieren. Nummerier die Pixel im Ursprungsbild mal von 1-9 durch und markier die "entsprechenden" Pixel im vergrößerten Bild.


  • Mod

    ich glaube du hast dich versehen

    SaM schrieb:

    Dein Bild doppelt Vergrößert:
    x o x o x o
    o x o x o x
    x o x o x o
    o x o x o x
    x o x o x o
    o x o x o x

    du hast nun 18 orginal x, vorher waren das 9, alleine deswegen müßte man stutzig werden... naja, vielleicht liegt das an deinem einfachem model. ich wüste trozdem gerne wie du auf die verteilung kommst

    normalerweise schaut es interpoliertes bild eher so aus:
    x o x o x
    o o o o o
    x o x o x
    o o o o o
    x o x o x

    weil jeder pixel vom orginalbild in seiner x und y position *2 gerechnet wird und dazwischen wird interpoliert. (am rechten und unteren rand muss man eventuell irgendwie extrapolieren)

    naja, wüste gerne deinen algo mal 🙂

    rapso->greets();



  • Danke SaM des mit den einfachen Interpolationsverfahren ist ja auch kein problem ich brauche aber ein koplizierteres wie eben kubische splines und da braucht man doch einiges an mathematik. möchte verschiedene verfahren auf qualität und geschwindigkeit vergleichen soll. mein einfaches verfahren hab ich nach dem prinzip mit dem zwischenwert berechnen gemacht.



  • @rapso:
    Genau die einfache 😃
    Ne ne, hast recht das Bild ist falsch gemalt

    @Gregor:
    damit vielleicht Farbwert1 + (Farbwert2 - Farbwert1) * p

    Aber doch nicht alles ohne die Hardwarebeschleunigung der Grafikkarte.
    Wen du Geschwindigkeit testen willst dann tu das doch gleich über
    eine 3D-API. Das geht um längen schneller und ist dazu noch vorstellbarer
    als das jemand die Interpolation über den Prozesor laufen läßt. Außerdem
    hast du bei einer 3D-API fertig optimierte Routinen dafür.


  • Mod

    über 3dAPI? die kann aber nicht standartmässig kubisch filtern, vielleicht anisotropisch, aber das dürfte nicht exakt das gleiche sein.
    da müßte man mit pixelshadern rumstochern.

    rapso->todschwitz();



  • OK dann werd ich mich halt doch eher als gedacht mit openGL beschäftigen müssen. am ende muss dass ganze eh über die graphikkarte laufen hab mir nur gedacht zum einstieg wärs so einfacher aber wenns dann fertige Routinen gibt mach ichs halt geich über die graphikkarte.



  • @rapso

    Warum ist deine Dionysos2 Homepage eigentlich halb deutsch und halb englisch?
    Stört ja eigentlich nicht aber sieht schon komisch aus. Scheints ja gut
    voranzukommen mit der Engine. Wird diese eigentlich irgendwo frei erhältlich
    sein?


  • Mod

    war früher nur deutsch, jemand hat mir die page neu gemacht und alles was neu dazukommt ist english, ein paar sachen hab ich auch übersetzt, aber das meißte übernommen ist bleibt noch deutsch bis ein update kommt.

    und ja ich komme gut vorran, das wenige was man anhand der screenshots sehen kann verdeutlicht es, aber das meißte was ich mache kann man nicht direkt erkennen z.B. interne strukturen optimieren, ich code meißt 12h die nacht dran, dazu gehört aber auch viel public-stuff. also mit leuten labern die es vielleicht verwenden möchten, mit grafikern die dafür basteln möchten... btw: ich würde mich auch freuen wenn man in das engine-forum kommt 😃

    license wird ca. sein: free for freeware und ansonsten kostet es.

    rapso->schwitz();



  • Du schwitzt ja ganz schön in letzter Zeit. Offenbar bekommt dir das Wetter nicht. 🙂



  • Hier gibt es ein Engine Forum?
    Wo soll den das sein?


  • Mod

    hier in der firma haben wir eis ausgegeben bekommen, aber ich bin nur voll geworden, kühle ist es irgendwie nicht.. ich freue mich aufs duschen zuhause *antastaturklebt*
    wie kommste vorran? ich hab gesehen dass da jetzt 0.16 zum dl liegt, was ist neu? du solltest mal deine seite updaten, damit man sowas mal nachschlagen kann und eventuell nen kontakt zu dir hat (mail addi oder sowat).

    www.d-engine.de dann auf forum klicken 😃

    rapso->zu_satan_will_wo_es_kuehler_ist_als_hier();



  • Werd ich machen.
    Was neu ist, steht immer in der MessageBox beim ersten Spielstart, bzw. wird der Text dann in ne Datei gespeichert.
    Jetzt kommt aber wahrscheinlich heut noch 0.16a, also wart lieber noch 🙂

    pOptimizer->Work();



  • Es geht erschreckend einfach:

    - bei Google Suchwort eingeben
    (z.B. http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q="kubische+interpolation"&btnG=Google+Suche&meta= )

    - Link anklicken

    - Formeln in die gewünschte Sprache umsetzen

    Bye, TGGC



  • Formeln in die gewünschte Sprache umsetzen

    als wenn das so einfach wäre 👎



  • danke Gungo find auch dass das nicht so einfach ist.



  • Naja normalerweise hast du einfach ne 4x4 matrix, die du mit deinen vier werten in form eines Vektors multiplizierst und folgendene Vektor: [t^3 t^2 t 1], wobei t die position inerhalb der interpolation ist.

    [ . . . .]   [wert1]
    [t^3 t^2 t 1] x [ . . . .] x [wert2]
                    [ . . . .]   [wert3]
                    [ . . . .]   [wert4]
    

    Die kurve Interpoliert dann zwischen wert2 und wert3. So ist es zumindest bei den Hermite-Splines und allen abwandlungen (Cardinal, CatmullROM, ...)

    bei t=0 bist du bei wert2, bei t=1 bei wert3

    Vor einem Jahr oder so konnte man nach "CatmullRom matrix" suchen und man hatte ein paar seinte, auf denen die Matrix stand. jetzt findet man nur seiten über Programme, die diese Matrix intern verwenden. So'n mist.



  • So schwer kann das ja wohl nicht sein, ist doch kaum mehr als abtippen.


Anmelden zum Antworten