Zum Inhalt springen

Physikalisches Modell einer "Gummiebene"


Empfohlene Beiträge

Gast runtimeterror
Geschrieben

Hi zusammen,

ein aktuelles Projekt hat ein merkwürdig anmutendes Teilproblem zu Tage geführt:

Man stelle sich eine Matte (DIN A4, 1 mm dick) aus Gummi vor. Nun steche ich an verschiedenen Punkten Reißzwecken rein. Wenn ich nun diese Reißzwecken verschiebe, so spannt oder staucht sich die Gummimatte (auch beim Stauchen soll die Matte Widerstand leisten, ohne sich zu falten - wir haben ja nur 2 Dimensionen).

Ich möchte am Ende wissen welche Kräfte auf welche Reißzwecke wirken.

Hierfür suche ich eine Möglichkeit diese Gummimatte physikalisch zu beschreiben. Typischer Weise versucht man ja das Objekt als Netzwerk aus Federn zu beschreiben (https://en.wikipedia.org/wiki/Spring_system oder https://en.wikipedia.org/wiki/Soft_body_dynamics#Spring.2Fmass_models).

Wenn man jedoch einfach eine rechteckige Anordnung nimmt (kariertes Rechenpapier), so würde das System bei einer Scherung (https://de.wikipedia.org/wiki/Scherung_%28Geometrie%29) keinerlei Widerstand leisten.

Ich hatte überlegt die Anordnung zu triangulieren und alle Kanten als Federn auszuführen, weiß aber nicht, wie ich die Federstärken so berechnen soll, dass sich das ganze halbwegs natürlich verhält.

Hintergrund:

Es geht um ein Starstacking-Projekt, bei dem mehrere Aufnahmen so übereinandergelegt werden sollen, dass die Sterne deckungsgleich sind. Die physikalische Modellierung benötige ich für den Optimierungsprozess (https://en.wikipedia.org/wiki/Energy_minimization) und das Filtern fehlerhaft erkannter Sternbewegungen (Ausreißer) - an diesen ziehen nach der Optimierung viel zu hohe Kräfte.

s.a. https://en.wikipedia.org/wiki/Stretched_grid_method

Freue mich über alle Denkanstöße,

Kai

  • 3 Wochen später...
Geschrieben

Mir ist beim Drüberlesen der Thread noch eine Idee gekommen. Als Denkanstoß hätte ich Selbstorganisierende Karte diese arbeitet auf einem 2D Gitter, was anhand der Daten entsprechend im Raum optimiert wird. Für das Gitter verwendet man z.B. auch Hexagonale Strukturen etc, sprich die Wahl des Gittermodells ist abhängig von den Vektorraum, der verwendet wird.

Sprich wenn die Daten Deiner Bilder zum Training des Netzes verwenden lassen, dann kannst Du nach dem Training aus der Struktur des Netztes ermitteln. Ich würde hier evtl nicht von einem eigentlichen Bild ausgehen, sondern aus dem Bild "charakteristische Datensamples" erzeugen, mit denen ich das Netz trainiere.

Geschrieben

ich nehme mal an das die ränder der matte festeingespannt sind

nimm einfach an zwischen allen teilchen und dem rand sind federn gespannt (ist also keine rechteck-system, weil die federn immer zum nächsten teilchen zeigen. zum Rand zeigen "beliebig viele" federn). rechnerisch ist der rand da echt der größte mist, weil den musst du halt auf eine endliche zahl an federn beschränken, sonst rechnest du dich dumm und duselig, aber wenn du die zahl beschränkst, dann nicht auf zu wenige, sonst wird das ergebnis zu ungenau...

einfacher wäre es vielt das ganze als kraftfeld (Multipol) zu betrachten (annahme: rand und reißzwecken seien negtaiv geladen). wobei eine kombination von multipolfeld und einfach sicher leicht gewagt ist^^

hängt halt auch ein bissel davon ab wieviel ahnung du von höherer mathe (oder theoretischer physik) hast

Gast runtimeterror
Geschrieben

Ich bin mir immer noch nicht sicher, ob ich das mit den selbstorganisierenden Karten richtig verstanden habe.

Die für das Bild charakteristischen Datensamples kann ich schon relativ gut extrahieren (Die Position einzelner Sterne in einem Bild). Die Zuordnung der Sterne im nächsten Bild kann jedoch nicht perfekt sein. Ich habe bei der Zuordnung im Moment einen Fehler von rund 1 % - was je nach Bildmaterial aber mit Sicherheit auch wesentlich schlechter ausfallen wird.

Nachdem ich das Gitter trainiert habe muss ich die fehlerhaften Trainingsdaten wieder entfernen (und nachtrainieren). Die fehlerhaften Stellen sollten durch hohe Spannungen im Gitter auffallen. Das Problem was ich habe ist ja, dass ich durch die Wahl des Gitters eine Anisotropie einführe. Das wollte ich nach Möglichkeit vermeiden.

Zudem bin ich von dem Modell mit der "Gummiebene" mittlerweile abgekommen, da es keine Extrapolation zulässt.

Auf jeden Fall vielen Dank für deine Einbringung!

Geschrieben (bearbeitet)

So wie ich Dein Problem verstehe hast Du doch 2 Bilder, also ein Bild zum Zeitpunkt t und eins zum Zeitpunkt t+1 und die sollen möglichst aufeinander passen.

Meine Überlegung wäre jetzt, dass man eben eine SOM nimmt und ein Gitter trainiert, wenn man das mit dem gleichen Bild macht, sollten ähnliche Gitter heraus kommen (Achtung, das ist ein heuristisches Verfahren). Ich trainiere aber ja mit den zwei Bilder, Zeitpunkt t und t+1, d.h. ich bekomme nach dem Training zwei unterschiedliche Gitter heraus und nun könnte man versuchen die Knoten des Gitters zu matchen. Die Knoten des Gitters sollten sich an "charakteristische Merkmale" der Daten binden, also z.B. extrem helle Sterne. Bildlich gesprochen würde man versuchen die Bilder anhand ähnlicher Sternstrukturen zu matchen. Aufgrund der Kanten des Gitters bekommst Du dann auch im Grunde die Verzerrung mitgeteilt.

Ist aber nur eine reine theoretische Überlegung. Ich stelle mir das so vor, dass Du eben zu zwei Zeitpunkten Bilder vom Sternenhimmel hast und z.B. charakteristische Gruppierung finden willst. Da sich durch entsprechende Bewegung der Planeten die Strukturen verändern können, kann man ja nicht auf == (equal) matchen, sondern muss nach einer Struktur suchen, die "ähnlich" ist. Sprich ich würde in den Bildern ähnliche Sternenformationen suchen. Wenn ich nun das eben auf zwei Datensätze mache mit der gleichen Gitterstruktur und -punktenanzahl, dann sollte ich eben zwei Gitter bekommen, die sich an den gleichen Merkmalen im Bild orientieren. In dem Fall würde ich dann im Prinzip Gitter matchen und nicht Bilddaten, da aber das Gitter die Datenraum "optimal" abdeckt, müsste sich daraus dann auch in den Originaldaten die Bewegung rückrechnen lassen z.B. würde der Gitterpunkt (2,3) im ersten Datensatz dann auf den Gitterpunkt (2.4, 3.9) abgebildet. Durch die Gitterstruktur bleibt dann aber auch direkt die Nachbarschaftsbeziehung der Sternbilder erhalten.

Bearbeitet von flashpixx
Gast runtimeterror
Geschrieben
ich nehme mal an das die ränder der matte festeingespannt sind

Die Ränder der Matte sind nicht eingespannt.

nimm einfach an zwischen allen teilchen und dem rand sind federn gespannt

Mein Bauchgefühl sagt mir bei dem Modell aber, dass zwischen zwei dicht benachbarte Reißzwecken keine nennenswerte Spannung zustandekommt, wenn diese nur über den Rand kommunizieren. Außerdem dürfte die Spannung zwischen zwei Reißzwecken in der Horizontalen anders ausfallen als in der Vertikalen, da der Rand nicht quadratisch ist.

Dennoch eine interessante Frage, wie sich das genau verhalten würde.

einfacher wäre es vielt das ganze als kraftfeld (Multipol) zu betrachten

Der Begriff "Multipol" war mir neu. Die mathematische Vereinfachung dahinter kann ich durch Rechenpower kompensieren ;) mir reichen ja diskrete Werte. Ich hatte etwas in der Art schon mal durchgespielt:

Alle Reißzwecken sollten Teilchen sein, deren "Ladung" der gewünschte Bewegungsvektor ist. Das dadurch aufgespannte Vektorfeld wollte ich zur Interpolation nutzen. Dabei bin ich auf zwei Probleme gestoßen:

- Am Ort des Teilchens ist das Potenzial unendlich statt 1 (siehe https://de.wikipedia.org/wiki/Multipolentwicklung#Elektrostatik für r=r')

- Wenn ich die Ebene mittels dreier Reißzweckenteilchen verzerre, so sollte die resultierende Ebene eine affine Abbildung der Originalebene bilden oder zumindest eine Kongruenzabbildung (Drehung, Verschiebung) ermöglichen.

Ich habe keine Formel für eine Potenzialverteilung gefunden, die das geleistet hat.

Ich habe das noch nicht mal für eine Dimension geschafft :(

Die Verbindung zum Rand könnte in diesem Modell sogar entfallen und kann dann sogar zur Extrapolation verwendet werden (Was die begrenzte Gummiebene nicht leisten konnte)

hängt halt auch ein bissel davon ab wieviel ahnung du von höherer mathe (oder theoretischer physik) hast

Immer rein damit! Ich habe was das angeht eine hohe Schmerzgrenze und wehre mich zur Not :)

Gast runtimeterror
Geschrieben

Ah, ich hatte verstanden, dass ich ein Gitter auf die (mir bereits bekannten aber fehlerbehafteten) Bewegungsvektoren trainieren soll und wollte das Gitter dann zur Interpolation verwenden.

Beim Trainieren auf wenige Sterne wäre aber doch ein hohes Risiko, dass zwischen zwei Bildern ein Stern rechts das Bild verlässt und links einer hinzukommt (oder von einem Flugzeug verdeckt oder "erzeugt" wird). Man könnte also auch die wesentlich dunkleren Sterne mit zum Trainieren verwenden, dann wären sie aber nahezu gleichverteilt. Man könnte sich auch auf die Sterne im Mittelfeld konzentrieren (mit einem Gauss-Fenster) - dann würden die ermittelten Daten aber keinen Aufschluss mehr über die Linsenverzerrung bieten. Auch die Drehung um den Polarstern in der Ecke eines Bildes könnte nicht korrekt ermittelt werden.

Es gibt eine Software, die das in etwa so umsetzt - diese kann aber außer einer Verschiebung und Drehung keine weitergehende Verzerrung abbilden; eben weil sie nur einfache Strukturen versucht wiederzuerkennen.

Ich wüsste auch nicht, wie ich die beiden Gitter vergleichen würde oder welchen Vorteil dies gegenüber einer Delaunay-Triangulierung hätte.

Ich habe im Moment folgenden vielversprechenden Ansatz in der Umsetzung:

Ich ermittle zu jedem Stern in einem Bild einen möglichen Partner im Folgebild und berechne daraus einen Bewegungsvektor. Anschließend versuche ich über eine simulierte Abkühlung einen 2D-Polynom zu finden, welcher die Bewegungsvektoren am besten abbildet. Anschließend verwerfe ich alle Trainingsvektoren, welche dem Polynom "zu sehr" widersprechen und lasse nochmal nachtrainieren.

Je höher der Grad des Polynoms ist, desto mehr Verzerrungen kann ich abbilden, aber desto eher werden Ausreißer nicht als solche erkannt. Der Einsatz eines Polynoms garantiert mit die Glattheit des Abbildung und ermögliche eine Extrapolation. Zudem ist das Verfahren recht schnell.

Was mir noch eingefallen ist: zwischen jedem Bild t und t+1 müsste derselbe Polynom rauskommen (außer bei athmosphärischem Flimmern durch Temperaturschwankungen), was man nochmal zur Fehlerreduktion verwenden kann.

Alternativ kann man auch andere Funktionen trainieren:

- Fourierreihen (eigentl. doof, weil nicht periodisch)

- Laplace könnte das besser abdecken - habe ich aber noch kaum Ahnung von :)

Bislang habe ich nur vielversprechende Zahlen als Ergebnis. Mal sehen, ob das Bild das bestätigt.

Danke und Gruß!

Geschrieben (bearbeitet)

Beim Trainieren auf wenige Sterne wäre aber doch ein hohes Risiko, dass zwischen zwei Bildern ein Stern rechts das Bild verlässt und links einer hinzukommt (oder von einem Flugzeug verdeckt oder "erzeugt" wird). Man könnte also auch die wesentlich dunkleren Sterne mit zum Trainieren verwenden, dann wären sie aber nahezu gleichverteilt. Man könnte sich auch auf die Sterne im Mittelfeld konzentrieren (mit einem Gauss-Fenster) - dann würden die ermittelten Daten aber keinen Aufschluss mehr über die Linsenverzerrung bieten. Auch die Drehung um den Polarstern in der Ecke eines Bildes könnte nicht korrekt ermittelt werden.

Ich denke das ist eine Sache was Du da genau zum Training verwendest, es müssen ja nicht zwingend nur die 2D Pixeldaten sein. Theoretisch kannst Du ja einen Vektor beliebig aufbauen, d.h. z.B. Bilddaten und z.B. Filterdaten zu dem gleichen Pixel. Müsste man sich halt überlegen was da relevant ist und Sinn macht. Du müsstest halt "Merkmale" definieren mit denen Du arbeiten kannst

Es gibt eine Software, die das in etwa so umsetzt - diese kann aber außer einer Verschiebung und Drehung keine weitergehende Verzerrung abbilden; eben weil sie nur einfache Strukturen versucht wiederzuerkennen.

Genau deshalb gib mein Gedanke in Merkmalserkennung.

Ich wüsste auch nicht, wie ich die beiden Gitter vergleichen würde oder welchen Vorteil dies gegenüber einer Delaunay-Triangulierung hätte.

Die trainierten Daten (können) ergeben eine Voronoi-Triangulation, so dass Du diese ggf direkt weiter verarbeiten kannst

Je höher der Grad des Polynoms ist, desto mehr Verzerrungen kann ich abbilden, aber desto eher werden Ausreißer nicht als solche erkannt. Der Einsatz eines Polynoms garantiert mit die Glattheit des Abbildung und ermögliche eine Extrapolation. Zudem ist das Verfahren recht schnell.

Das Problem dabei ist, die Eindeutigkeit der Lösung zu garantieren. Bei der SOM ist definiert, dass das Gitter den Datenraum mit einem minimalen Fehler abdeckt. Bei Dir kann es passieren, dass der Bewegungsvektor nicht eindeutig ist.

Was mir noch eingefallen ist: zwischen jedem Bild t und t+1 müsste derselbe Polynom rauskommen (außer bei athmosphärischem Flimmern durch Temperaturschwankungen), was man nochmal zur Fehlerreduktion verwenden kann.

Durch Simulated Annealing wirst Du ein Polynom bestimmen können, aber wenn Du diese Polynome bestimmst, dann wirst Du wenn Du von t nach t+1 gehst ggf eine positive Bewegungsrichtung haben, wenn Du das Polynom von t+1 nach t bestimmst eine negative. D.h. musst hier garantieren (für den Vergleich), dass es invariant ist.

Alternativ kann man auch andere Funktionen trainieren:

- Fourierreihen (eigentl. doof, weil nicht periodisch)

- Laplace könnte das besser abdecken - habe ich aber noch kaum Ahnung von :)

Ich würde wohl eher einen Wavelet nehmen, da das im Bild "lokale Strukturen" sind und nicht wie ne FT global.

Evtl wäre die Überlegung die Daten aus t und t+1 und ggf einer Wavelet-Transformation von t und t+1 als einen Merkmalsvektor zu verwenden. Denn man würde ja annehmen, dass der Vektor den mal in t verwendet in einem Merkmalsraum nur wenig von dem gleichen Vektor t+1 entfernt liegt.

Evtl würde es sogar ausreichen einfach die Distanz zwischen diesen Merkmalsvektoren zu

bestimmen.

Ich würde evtl wirklich mal von der menschlichen Sichtweise drauf schauen und die Frage stellen, wenn ich mir 2 Bilder anschaue, an was ich erkenne, dass zwei Sterne gleich sind und nach dieser Frage ggf Merkmale definieren.

Bearbeitet von flashpixx

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...