Einzelnen Beitrag anzeigen

Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#22

Re: Verlustfreies Zoomen von Bildern (Interpolieren)

  Alt 20. Okt 2003, 11:22
Hiho,

jau, also in diesem Beispiel blicke ich auch nicht ganz durch.
Und Stanlay, wo ich gerade aufm Pott saß ist mir das selbe Problem in den Kopf gekommen. Ich denke, sobald man vergrößerungsmäßig in Bereiche über 2faches Original kommt, muss man ein wenig umdenken. Wenn man zum Beispiel ein Bild hat das fünfmal so groß ist wie das Original... dann wäre jeder fünfte Pixel ein original-Pixel, und die jeweils anderen 4 Pixel (jetzt mal in einer 5er- Reihe) müssten interpoliert werden.
Genau darin sehe ich das Problem. Wie interpoliert man einen Pixel, wenn man dessen Nachbarn auch interpolieren muss, und erst von deren Nachbarn die Originale zu finden sind? Ich denke dass sich das zwar machen lässt, aber nicht mit der selben Methode die man verwenden würde wenn jeder zu interpolierende Pixel zwei original-Nachbarn hätte.
In der Verteilung der zu interpolierenden Pixel sehe ich dabei ein kleineres Problem. Diese fiesen Kommastellen kann man umgehen, indem man sich nicht fragt wo die zu interpolierenden Pixel hin sollen, sondern wo die original-Pixel hin sollen. Bei einem Vergrößerungsfaktor über 2 sollte man also nicht die neue Breite durch die Anzahl der neuen Pixel teilen, sondern die neue Breite durch die Anzahl der originalen Pixel teilen. Dann könnte man die Zeilen mit ner Schleife durchgehen die sich jeden Pixel anguckt und dann je nach dem ob es ein originaler oder ein neuer ist weitermacht.
Das Problem wo ich denkmäßig nicht weiterkomme ist halt wie man vier nebeneinanderliegende Pixel interpoliert.
Wobei... man könnte sich damit aushelfen, dass man das Bild nicht auf einen Schlag auf die gewünschte Größe vergrößert. Man teilt die geplante neue Größe durch zwei, wobei dann u.U. ne Kommazahl rauskommt. Interpolierung bei zweifacher Vergrößerung ist ja kein Problem. Daher nehmen merken wir und die Kommastellen hinter dem Ergebnis von x=neueGröße/2 und schneiden sie erstmal ab. Und dann gehen wir in eine Schleife, die uns das Bild x-Mal verdoppelt und interpoliert, wobei wir bei jeder neuen Vergrößerung die vorher interpolierte Vergrößerung als Original für den nächsten Vorgang nehmen. Danach vergrößern wir das Bild um 1,"nachkommastellen von x" und interpolieren jeden y. Pixel, wobei y der Kehrwert aus den Nachkommastellen ist. Glaub ich.

Ist jetzt nur son Denkkonstrukt, aber vielleicht gehts ja so...

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat