Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

03.09.2015, 20:05

Bild Verzerrungseffekte verhalten sich unlogisch

Das Thema hatte ich jetzt schon öfter hier besprochen und jetzt auch umgesetzt, wenn auch mit AForge.NET statt selbst OpenGL Code zu schreiben.

Nun aber zu meiner Frage: Gibt es verschiedene Methoden Bilder zu verzerren, bzw. hat jemand eine Erklärung, für diese komischen Verzerrungseffekte:


Links jeweils das Texturierte Bild, rechts habe ich die einzelnen Eckpunkte der Bilder eingezeichnet.

Die Verzerrungen sind aber komisch, der Kamin knickt zum Beispiel ab an der Grenze zwischen den beiden Bildern.
Und die linke untere Ecke bewegt sich, wenn ich die linke obere Ecke des ersten Bildabschnittes verschiebe auch mit.

Mein Vorgehen bisher: Das Bild in die einzelnen Elemente zerlegen, die mit AForge.NET verschieben und dann zu einem Bild kombinieren.
Die linke Gitteransicht zeigt für die Bildeckpunkte an und verbindet diese mit Linien. Beim dritten Beispiel wurden nur zwei Punkte bewegt, der dritte Punkt (also der links-unten des ersten Bildelements) wurde von AForge.NET falsch berechnet, oder gibt es eine Erklärung dafür? Außer den zwei Punkten habe ich die anderen jeweils nicht bewegt.

2

03.09.2015, 20:54

Kenne mich nicht wirklich aus in der Materie, aber die Bilder sehehn so aus wie du es Beschreibst.

Das Bild in die einzelnen Elemente zerlegen, die mit AForge.NET verschieben und dann zu einem Bild kombinieren.


Einzelne Element die Verschoben werden, das hört sich aber nicht nach Verzerrung an(und sieht auch nicht so aus).
Die Einzelnen Teile sehen Verzerrt aus, aber an den "Schnittkannten" scheint nichts Verzerrt nur "geschnitten".
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

03.09.2015, 21:17

Kann es sein, dass du die falsche Transformation benutzt? Es scheint ja zwei zu geben: QuadrilateralTransformation und BackwardQuadrilateralTransformation.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

4

03.09.2015, 21:39

@Koschi


Hab das wohl etwas falsch beschrieben. Ich habe ein Ausgangsbild, zerteile das in 3x3 Elemente, jedes Element hat vier Eckpunkte, die können in meinem Programm verschoben werden. Bei Bildelementen die neben anderen liegen, werden immer die Ecken von allen angrenzenden Bildern gleichzeitig verschoben, so dass keine Lücken in der Mitte entstehen. Der Schornstein im Beispiel müsst also verbogen sein, aber das ist er nicht, stattdessen sieht man die Schnittkante zwischen beiden Bildern das ist ja das komische.

Wenn ich die gleiche Verformung mit diesem Algorithmus mache, tritt der Beschriebene Effekt nicht auf und alles ist gleichmäßig verzerrt. Leider ist der Algorithmus sehr langsam, AForge.NET ist deutlich schneller. Aber arbeitet irgendwie anders.

@David
QuadrilateralTransformationBilinear, damit kann man nur Bilder entzerren, wie auf den Beispiel Bildern der Webseite. Ich brauche genau die Verzerren Funktion.

Habt ihr sonst noch Ideen?
Kann es sein, das AForge.NET die Verzerrung irgendwie perspektivisch berechnet und deswegen andere Ergebnisse rauskommen?


Edit:
Um es also noch mal deutlich zu machen, AForge.NET verzieht alle neun Bilder einzeln, die dann jeweils zu dem Gesamtbild hinzugefügt werden. Pro Bild werden immer vier Punkte angegeben.

5

03.09.2015, 22:29

Das sieht so aus, als würde jedes einzelne Panel nicht relativ zum gesamten Bildmittelpunkt sondern zum einzelnen Panelmittelpunkt verzerrt werden.

MfG
Check

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

6

03.09.2015, 22:59

Es gibt nur ein Panel, dass das Bitmap anzeigt, welches alle Bildelemente enthält.

1. Bild wird in 9 Bilder zerlegt (3x3 Bildelemente)
2. Quad-Distort AForge.NET Methode, Vordergrund Element1, Hintergrund leeres Bitmap
3. Quad-Distort AForge.NET Methode, Vordergrund Element2, Hintergrund Bitmap aus 2.
4. Quad-Distort AForge.NET Methode, Vordergrund Element3, Hintergrund Bitmap aus 3.
...
Dann wird das letzte generierte Bitmap, dass nun alle Bildelemente enthält in das Panel geladen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

03.09.2015, 23:09

Kannst du mal ein anderes Bild verzerren? Und zwar eins, das ein Schachbrettmuster zeigt, oder einzelne Rahmen, die genau so groß sind wie deine Teilbereiche. Dann kann man besser sehen, was da passiert.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

8

04.09.2015, 11:59

So, hier mal einige Bilder:

Gitterlinien Bild:


Hier die Bildelemente, in die das Gitter vorher zerteilt wurde:


Schachbrettmuster (leider haben die Kästchen die falsche Größe und werden durch die Bildelemente zerschnitten):


Und mit Rahmen:

Da sieht man auch gut, wie sich einige Bildelemente mit verzogen haben, obwohl bei jedem Testbild immer nur ein Punkt verschoben wurde.

Was ich auf Stackoverlflow gefunden habe:
Kann es sein, dass ich eine affine (nicht persepektivisch korrekte) Verformung benötige und AForge.NET es perspektivisch korrekt verzieht? Oder ist es umgekehrt?
http://stackoverflow.com/questions/53429…rmations-in-net

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

04.09.2015, 12:04

Sieht jedenfalls aus als wäre eine perspektivische Komponente drin und das ist natürlich Käse, speziell wenn sie auf jedem Quad anders ist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

10

04.09.2015, 12:17

Und kennst du eine .Net library, die Affine Distortion unterstützt?

Graphicsmill hab ich gefunden, aber die ist mit 759$ pro Lizenz vieeeeeel zu teuer.

Werbeanzeige