Interpolation



  • Hi
    ich möchte bmp Bilder mit Splines (linear, quadratisch, kubisch) Vergrössern. kann aber leider die mathematik nicht so recht in ein programm umsetzen. Hat vielleicht jemand schon einen fertigen code oder weiss wo man sowas finden könnte.
    ach ja ich progammiere mit dem Borland C++ Builder



  • Interpolation? Sowie es bei Mipmaps gemacht wird?

    Ist das jetzt eine generelle Frage oder benutzt irgendeine API wie
    DirectX oder OpenGL.



  • 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.


Anmelden zum Antworten