Forum: PC-Programmierung Deformierung-Algorithmus gesucht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin R. (martinrichterbo)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Polygon, dass ich über ein Foto legen will (siehe linke 
Seite im Anhang). Im zweiten Schritt will ich das Polygon "verzerren", 
d.h. die Positionen der Eckpunkte des Polygons verändern, so dass ein 
neues Polygon entsteht (siehe rechte Seite im Anahng). Ich suche nun 
einen Algorithmus, mit der man das darunter liegende Foto "mit 
verzerren" oder "interpolieren" kann. Idealerweise sollen keine 
Informationen verloren gehen, sondern nur verschoben werden.


Mir ist klar, dass das eine nicht besonders genau Aufgabenstellung ist, 
aber ich hoffe, dass jemand ein bisschen was von diesem Thema versteht.

: Verschoben durch Moderator
von Michael B. (laberkopp)


Bewertung
1 lesenswert
nicht lesenswert

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nach einigen Sekunden Nachdenken, scheint mir, dass es mehrere 
Definition von Verzerrungen, gegeben durch die Verschiebung der 
Eckpunkte eines Polygons geben kann. Siehst Du das auch so?
Das simpelste wäre umschreibende Rechtecke zu nehmen und dazwischen eine 
affine Transformation auszuführen.

Jedenfalls würde ich für die Implementierung sowas wie OpenCV in 
Betracht ziehen.

Hier gibt es einige Doku (für die Vorgängerversion von OpenCV) zu den 
geometrischen Transformationen: 
http://opencv.jp/opencv-2svn_org/py/imgproc_geometric_image_transformations.html

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nach weiterem Nachdenken fallen mir nur Interpretationen Deiner 
Beschreibung ein, die zu einem verwaschenen, unscharfen Bild führen 
würden. Das mag unvermeidbar sein; ich kann es im Moment nicht sagen.

Vielleicht würde es helfen, wenn Du erklärst, wozu das Ganze gut sein 
soll.
Warum ein Polygon im Ausgangsbild? Warum ein (verändertes 
ursprüngliches) Polygon um die Verzerrung zu definieren?

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> scheint mir, dass es mehrere
> Definition von Verzerrungen, gegeben durch die Verschiebung der
> Eckpunkte eines Polygons geben kann

Nehmen wir mal das obere Eck, das wird ein Stück nach oben gezogen. Klar 
ist: Der Eckpunkt bekommt die neue Position, und die Punkte auf den 
Verbindungsgeraden zu den benachbarten Eckpunkten sind zu interpolieren.

Aber: wie weit in das Bild hinein soll sich die Deformation erstrecken? 
20 %? oder bis zur Mitte? Oder bis zur anderen Seite? Das erscheint mir 
schon ziemlich willkürlich, und noch viel willkürlicher wird es sein, 
wie die Deformation durch versetzte Ecken zu einer Gesamttransformation 
kombiniert wird.

Vielleicht führt eine Simulation zum Ziel, die davon ausgeht, dass das 
Bild aus Gummi besteht in der ursprünglichen Form, der an den neuen 
Eckpunkten aufgespannt wird. Also man schneidet sich eine Gummifolie wie 
die Ursprungsform und pinnt die mit Stecknadeln an den neuen Eckpunkten 
fest. Aber erstens ist das auch ziemlich aufwendig und zweitens ist 
überhaupt nicht gesagt dass das Ergebnis dem TO gefällt.

Georg

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Vielleicht führt eine Simulation zum Ziel, die davon ausgeht, dass das
> Bild aus Gummi besteht in der ursprünglichen Form, der an den neuen
> Eckpunkten aufgespannt wird.

Gute Idee. Das gibts nämlich fertich als 3D Modeling Programm - 
beispielsweise Blender.

Man macht zuerst das Ausgangs-Polygon und eine 1:1 Abbildung auf die 
Texturkoordinaten (UV-Mapping).

Dann zieht man die (3D) Koordinaten des Poligons einfach in ihre neue 
Position. Die Textur wird dadurch passend verzerrt.

Gimp kennt sowas als "Käfig Transformation" auf Deutsch.

von c.m. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
wahrscheinlich kommt hier der gute alte bresenham algorithmus ins spiel…
oder man lässt die texturverzerrung irgendein "opengl-geraffel" machen.

von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
Die erste Gratissoftware zur Fotoverzerrung, die ich kenne war "Anmanie"
hier ein paar Demobilder, Mona Lisa mit Knollennase u.ä.:
http://www.digitalkamera.de/Software/Anmanie/1355.aspx
von 2002

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.