Zum Inhalt springen

Glättung ungleich verteilter Messwerte


Gast runtimeterror

Empfohlene Beiträge

Gast runtimeterror

Hi zusammen,

ich habe ein 2D-Feld in welchem sich an zufälligen Positionen Messwerte befinden. Jetzt habe ich festgestellt, dass die Messwerte stark verrauscht sind und wollte dies durch eine Glättung korrigieren.

Ich habe im Moment aber keine Idee, wie man das auf einfache Weise bewerkstelligen kann.

Der einfachste Ansatz war jeden Messpunkt durch den Durchschnitt seiner Umgebung zu ersetzen (z.B. mit Gauss-Gewichtung). Das funktioniert aber nur bei gleichverteilten Messpunkten richtig. Also müsste ich Messpunkte mit hoher Dichte weniger stark gewichten als solche mit geringer Dichte.

Bevor ich mir jetzt was Eigenes versuche zu basteln würde ich gerne wissen, ob es ein fertiges Verfahren gibt, was diese Anforderungen erfüllt. Eigentich ist das ja kein allzu ungewöhnliches Problem ...

Vielen Dank schonmal!

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Es kommt drauf an, wie die Daten strukturiert sind. Man kann eine Polynominterpolation machen oder man die Daten anhand einer Funktion fitten, wobei man eben dann die Ausreißer durch eine Fehlerfunktion korrigiert. Zusätzlich wäre es wichtig zu wissen, welche Glattheitsanforderungen (z.B. L2-Räume) gefordert sind. Ebenso ist es wichtig zu wissen wie die Daten gesamplet wurden (äquidistant oder nicht). Je nach Daten und Rauschen kann man auch einen Filter (z.B. Hoch- / Tief- / Kammfilter ) die Daten filtern.

Generell gilt, dass Du wissen musst, wie das Rauschen entstanden ist, folgt es einem Muster oder nicht bzw. wozu die Daten später verwendet werden bzw- was an weiteren Informationen zu den Daten gegeben ist

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Danke für die Antwort.

Das Problem hat sich mittlerweile ein wenig verschoben, ist aber noch nicht vom Tisch.

Das mit dem Fitten habe ich bereits versucht, die von mir gewählte Funktion ließ sich aber nicht ausreichend anpassen. Eine Polynominterpolation hatte ich schonmal versucht, aber nicht richtig hinbekommen (zu langsame und zu schlechte Konvergenz). Ich hatte seinerzeit vermutet, dass sich der/das Polynom wegen der verrauschten Messwerte nicht gut fitten lässt und wollte diese daher vorher tiefpassfiltern - vielleicht ist das auch blödsinnig - mir fehlt da die Erfahrung.

Glattheitsanforderung ... ich denke die 2. Ableitung reicht, die 3. Ableitung wäre optimal.

Die Daten wurden nicht äquidistant gesamplet - sonst wär's ja kein Problem mehr ;)

Das Rauschen folgt keinem mir bekannten Muster. Die Messwerte selbst sind das Ergebnis eines Algorithmus zur Bewegungserkennung, der bei einzelnen Messwerten schonmal ziemlich daneben liegen kann - diese gilt es zu eliminieren.

Aus dem Bauch heraus hätte ich jetzt einfach eine Gauss-Glocke über das Feld geschoben und jeden Messwert duch das gewichtete Mittel ersetzt - aber beim zweiten Blick ist mir aufgefallen, dass das nur bei äquidistanten Messwerten funktioniert.

Ich habe jetzt eine Lösung implementiert, die grundsätzlich zu funktionieren scheint und brauchbare Ergebnisse liefert: zusätzlich zum obigen Algorithmus wird jeder Messwert umgekehrt proportional zur Messwertdichte seiner Umgebung gewichtet. Ich denke, dass das seinen Zweck erfüllt, aber eine "übliche" Lösung wäre mir lieber.

Danke und Gruß,

Kai

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit dem Fitten habe ich bereits versucht, die von mir gewählte Funktion ließ sich aber nicht ausreichend anpassen. Eine Polynominterpolation hatte ich schonmal versucht, aber nicht richtig hinbekommen (zu langsame und zu schlechte Konvergenz).

Das muss definitiv an der Implementation bei Dir liegen, Polynominterpolation ist extrem effizient, wenn man es richtig macht.

Glattheitsanforderung ... ich denke die 2. Ableitung reicht, die 3. Ableitung wäre optimal.

dann brauchst Du mindestens Sobolev-Raum oder sogar Lp-Raum

Das Rauschen folgt keinem mir bekannten Muster.

Es geht nicht darum, ob Du ein Muster erkennst, sondern es geht darum, dass in realen Daten immer ein Rauschen vorhanden ist. Man kann anhand der technischen Erfassung der Daten auf das Rauschen schließen.

Aus dem Bauch heraus hätte ich jetzt einfach eine Gauss-Glocke über das Feld geschoben und jeden Messwert duch das gewichtete Mittel ersetzt - aber beim zweiten Blick ist mir aufgefallen, dass das nur bei äquidistanten Messwerten funktioniert.

Nein, nicht zwingend, Du musst letztendlich die Gaußfunktion anpassen.

Ich habe jetzt eine Lösung implementiert, die grundsätzlich zu funktionieren scheint und brauchbare Ergebnisse liefert: zusätzlich zum obigen Algorithmus wird jeder Messwert umgekehrt proportional zur Messwertdichte seiner Umgebung gewichtet. Ich denke, dass das seinen Zweck erfüllt, aber eine "übliche" Lösung wäre mir lieber.

Du hast die Frage, was gegeben ist nicht wirklich beantwortet. Aufgrund einer Bewegungsgleichung kannst Du die DGL bestimmen und mit Hilfe einer FEM o.ä. lösen lassen, wenn die DGL unbekannte Parameter enthält, die durch die Messwerte bestimmbar sind, dann kannst Du durch ein Fehlerminimierungsverfahren die DGL Parameter an Deine Messdaten anpassen. Eine FEM liefert eine Lösung mit hinreichenden Glätteanforderungen.

Du wirst ohne Kenntnisse, wie die Daten strukturiert sind, immer den Fall haben, dass Dein Verfahren schlechte Ergebnisse liefern wird, weil es für Dich nicht entscheidbar ist, wann ein Messwert ein statistischer Ausreißer ist und wann er ein ein korrekt erhobener Messwert ist.

Das Verfahren was Du jetzt hast wird im Fall von sehr wenigen Messwerten starke Ausreißer erlauben, d.h. Du wirst an den Kanten extreme Verzerrung der Gewichtung haben, sprich wenn die Dichte sich sehr abrupt ändert, dann "mittelst" Du letztendlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Jetzt hast du mich abgehängt :)

Ich versuche bei Gelegenheit mal mit konkreten Beispielen und Werten auszuwarten - heute nicht mehr.

Wofür steht DGL?

Zum Hintergrund:

Ich habe die Fotos zweier Nachthimmel, die durch die Erdrotation gegeneinander verschoben sind. In beiden Bildern habe ich jeweils rund 300 Sternpositionen identifiziert (Fehlerquote etwa 1%-5%). Anschließend wurde die Zuordnung der Sterne in Bild A zu den Sternen in Bild B errechnet (Fehlerquote etwa 1%). Aus diesen Zuordnungen wurde für jeden Stern ein Bewegungsvektor errechnet. Meinetwegen können wir von normalverteiltem statischen Rauschen ausgehen - das dürfte dicht genug an der Wahrheit sein.

Ich habe jetzt jedem Stern eine Art gewichteten "Wirkungsbereich" zugeordnet, was schon ziemlich zuverlässig Ausreißer identifiziert und (das ist das eigentliche Ziel der Übung) zum Interpolieren der Bewegungsdaten verwendet werden kann.

Die Bahnen der Sterne sind nicht sonderlich komplex. Ich einem früheren Versuch hatte ich einen Polynom 4. Grades als Ausgleichsfunktion verwendet, was nicht ausreichend gut konvergierte (simulierte Abkühlung). Ich denke, ich werde das nochmal versuchen.

Kann du mir nochmal kurz erklären, was du noch an Infos brauchst?

Danke für die Hilfe soweit!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wofür steht DGL?

Differentialgleichung

um Hintergrund: [...]

Ich kenne den anderen Thread, da hatte ich ja Dir ja auch schon mal was geschrieben : http://www.fachinformatiker.de/algorithmik/155422-physikalisches-modell-gummiebene.html

Die Bahnen der Sterne sind nicht sonderlich komplex. Ich einem früheren Versuch hatte ich einen Polynom 4. Grades als Ausgleichsfunktion verwendet, was nicht ausreichend gut konvergierte (simulierte Abkühlung). Ich denke, ich werde das nochmal versuchen.

Eine SA geht nur dann, sofern Du die Funktion kennst, das wird wohl hier nicht der Fall sein, denn Du suchst ja eine Funktion f, die den Punkt s (Stern) auf einen Punkt t abbildet, d.h. ja zwischen zwei gemessenen Datenpunkten eine Abbildung beschreibt. Du willst also hier eine Abbildungsfunktion bestimmen. Ein Polynom wird definitiv nicht funktionieren, denn Planetenbahnen sind elliptisch, d.h. der Beobachter projeziert die in 3D sichtbare Bahn auf eine 2D Fläche (Photo), eine elliptische Bahn enthält trigonometrische

Funktionen, die sich nicht durch ein Polynom approximieren lassen, d.h. das wird meist schlecht funktionieren.

SA wiederum benötigt irgendeine Funktion als Basis, die in das Verfahren gegeben wird, SA macht letztendlich auch nur eine Suche nach einem Minimum (und das eben heuritisch), d.h. Du brauchst als Basis eine Funktion, auf der Du suchen kannst, diese kennst Du aber hier nicht.

Planetenbahnen lassen sich eben als DGLs beschreiben (eher als DGL-System), da ja jeder Planet mit anderen in Wechselwirkung besteht (Massenbeziehung). Diese DGL kannst Du recht allgemein formulieren, d.h. Du beschreibst eine DGL eines Planeten in Abhängigkeit seiner Nachbarn, damit kannst Du erst einmal abstrakt dessen Bahn berechnen und eben auf Deinem Bild in 2D projezieren (ich empfehle die Berechnung in 3D und dann darauf aufsetzend die Projektion nach 2D). Diese DGL kannst Du mit Hilfe der FEM / ODE-Solver lösen und Dir somit die disketisierte Bahn erzeugen. Du wirst aber wahrscheinlich gar nicht präzise alle Informationen für die Bahnberechnung haben, d.h. Du wirst einige Unbekannte haben, diese Unbekannten kannst Du dann aber anhand Deiner Messdaten z.B. mit SA fitten, d.h. Du löst numerisch die DGL für die Bahnberechnung und setzt zufällig die unbekannten Parameter. Nach dem Lösen vergleichst Du das Ergebnis der Bahn mit Deinen realen Messdaten und versuchst den Fehler zwischen Messdaten und numerischer Lösung durch Veränderung der unbekannten Parameter zu minimieren.

Du hängst Dich sehr an Deine gemessenen Daten, der Ansatz ist hier eher suboptimal, weil Du versuchst eine Funktion zu raten. Gehe von der Physik aus, Planetenbewegungen unterliegen Gesetzen, diese kann man durch eine DGL beschreiben, Du musst dann "nur noch" die Parameter, die sich z.B. durch Messungenauigkeiten ergeben, der DGL bestimmen und dies geht mit Hilfe eines Minimierungsverfahrens. Sprich Du löst die DGL n-fach (für einen Planeten) und optimierst die Parameter der DGL (lässt sich sehr gute parallelisieren und DGL Solver können via Cuda / OpenCL arbeiten, d.h. sehr effizient).

Geh bei der Beschreibung des Problems nicht von den Daten aus, denn Deine Daten werden niemals hinreichend gut sein, sondern geh von dem physikalischen Modell aus und fitte / optimiere das Modell anhand der Daten, das wird definitiv bessere Ergebnisse liefern

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Ich glaube nicht, dass man so schwere Geschütze auffahren muss.

Wofür soll ich die Planetenbahnen berechnen?

Die Sternbahnen auf den Fotos exakt zu beschreiben ist illusorisch: Ich habe bereits ein Programm geschrieben, was unter Angabe der Ausrichtung, Brennweite, Objektivwahl, Belichtungszeit und anderer Parameter perfekte Sternbahnen berechnet (und zeichnet). Aber das reicht nicht: Temperaturschwankungen in der Atmosphäre verursachen unberechenbare Lichtbrechung, der sog. "Spiegelschlag" bei Spiegelreflexkameras kann der sog. Spiegelschlag zwischen den einzelnen Bildern Verschiebungen verursachen, die chromatische Aberration und ungewünschte Linsenverzeichnung verzerren das Bild weiter, etc. pp.

Das einzige, was ich verlässlich bekomme sind die Bildsensordaten, meist noch die Belichtungszeit und wenn ich Glück habe noch die Brennweite.

Ich muss auch nicht die Bahnen selbst bestimmen, sondern deren erste Ableitung an vorgegebenen Stellen im Bild. Das mit dem Polynom war möglicherweise zu stark vereinfacht formuliert und daher irreführend: Meine zu fittende Funktion war ein zweidimensionales Polynom vierten Grades, dessen 16 Koeffizienten zweidimensionale Vektoren waren (ich weiß nicht, wie man das korrekt benennt). Eingabe war die Bildposition, Ausgabe war der Bewegungsvektor an dieser Stelle. Bereits mit einem Polynom 1. Grades (nur affine Abbildung) sollte sich eine Abbildung auf einer elliptischen Bahn darstellen lassen.

Ich wollte mich nochmal in NURBS einlesen - ggf. lässt sich damit was machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wofür soll ich die Planetenbahnen berechnen? [...]

Aber das reicht nicht: Temperaturschwankungen in der Atmosphäre verursachen unberechenbare Lichtbrechung, der sog. "Spiegelschlag" bei Spiegelreflexkameras kann der sog. Spiegelschlag zwischen den einzelnen Bildern Verschiebungen verursachen, die chromatische Aberration und ungewünschte Linsenverzeichnung verzerren das Bild weiter, etc. pp.

Ich wiederhole mich, Du gehst von Deinen gemessenen Daten aus. Wenn ich Dir zwei Datensätze gebe, einmal einen numerisch berechneten, der die physikalischen Eigenschaften abbildet und auf diesen füge ich ein Rauschen hinzu und ich gebe Dir einen original empirisch gemessenen Datensatz, dann kannst Du nicht entscheiden, welcher Datensatz welcher ist.

Ich muss auch nicht die Bahnen selbst bestimmen, sondern deren erste Ableitung an vorgegebenen Stellen im Bild.

Die Ableitung eines Bildes lässt sich direkt bestimmen, es ist die Differenz zweier Punkte. Wo ist das Problem?

Eingabe war die Bildposition, Ausgabe war der Bewegungsvektor an dieser Stelle.

Wie kannst Du aus 2 diskreten 2D Werten einen Bewegungsvektor bestimmen, das geht mathematisch nicht, denn eine Bewegung ist nach Definition die Lösung der Bahngleichung ( Bewegungsgleichung ), 2 Pixel sind keine Bahn / Trajektion. Du bekommst aus Deinem Bild nicht mehr als einen Farbwert an einer Position. Ein Bewegungsvektor hat eine Richtung und eine Länge (Beschleunigung).

Bereits mit einem Polynom 1. Grades (nur affine Abbildung) sollte sich eine Abbildung auf einer elliptischen Bahn darstellen lassen.

Ich gehe davon aus, dass Du auf Elliptische Kurve . Du solltest eine Elliptische Kurve nicht mit einer "geometrischen Kurve" verwechseln. Die Elliptische Kurve ist eine algebraische Struktur, Du suchst aber eine Ellipse (siehe dazu auch Geometrie )

Du wirst mit einem Polynom keine Planetenbahn oder selbst einzelne diskrete Stellen der Bahn hinreichend genau bestimmen können. Du schreibst oben, dass Du die erste Ableitung der Bahn benötigst, Du hast aber aktuell keine Bahn und nach Deiner Schilderung brauchst Du sie auch nicht, wie willst Du dann die Ableitung bestimmen? Wenn Du die Ableitung zwischen diskreten Punkten bestimmen willst, dann ist es nur die Differenz, wenn Du die Ableitung der Bahn brauchst, dann brauchst Du die Bahnfunktion. Deine Aussage ist somit nicht korrekt.

Ich wollte mich nochmal in NURBS einlesen - ggf. lässt sich damit was machen.

NURBS = Non-rational B-Splines sind auch nicht's anderes als stückweise zusammengesetzte Polynome, bei mehrdimensionalen Strukturen wird eben über mehrere Splines einfach ein Tensorprodukt gebildet. Was sollen Dir NURBS für Deine Problemlösung bringen, es sind letztendlich auch nur Polynome, damit bleibt das Problem bestehen.

In Anlehnung an Dein anderes Post ist mir nicht klar, was überhaupt der Sinn von dieser Aufgabenstellung ist. Wenn Du nach Sternbildern in den Bildern suchen willst, dann trainiere sie z.B. mit einem neuronalen Netz und speichere das Netz. Nun kannst Du neu gemacht Bilder nehmen und das Netz kann Dir sagen, welche Sternbilder in dem Bild vorhanden sind. Extrahiere die Sternbilder in hinreichend guter Qualität und trainiere das Netz. Ein NN liefert bei entsprechend gutem Training auch bei verrauschten Daten noch gute Ergebnisse.

Wenn Du die Bahnbewegung herleiten willst, dann ist es im Grunde unerheblich ob Du Messdaten hast oder nicht, denn die Bahn kannst Du numerisch via DGL berechnen. Wenn Du nun diese gegen ein Bild prüfen willst, dann projeziere die berechnete Bahn in Abhängigkeit der Position des Beobachters in eine 2D Ebene. Diese berechneten Daten kannst Du dann z.B. via Netz in Deinen Bildern zuordnen. Über die Bahnfunktion kannst Du aber ebenso berechnen, wo sich ein Stern hinbewegen wird.

Warum klammerst Du Dich so extrem an Deine Messdaten? Du versuchst ein "Modell" aus Deinen Daten zu generieren, wobei Du nur einen minimalen Ausschnitt des Datenraums betrachtest, d.h. Dein Modell kann gar nicht generalisieren, weil Dir zig Informationen fehlen. Warum gehst Du nicht von dem Modell aus und fittest das Modell aufgrund der Daten, das ist ein deutlich einfacherer Weg, weil das Modell das Problem vollständig beschreibt und dann nur mit empirischen Daten gefüttert werden muss. Wenn Du nur wenige Datensätze hast und diese noch einen hohen Rauschanteil haben, wirst Du daraus nicht mehr Informationen generieren können. Wenn Du aber das Modell kennst, dann kannst Du anhand des Modells aber das Rauschen sehr schnell erkennen und entfernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Irgendwie drehen wir uns im Kreis. Mittlerweile sind wir so weit vom eigentlichen Thema abgekommen, dass es schon um den Inhalt in meinem anderen Thread geht.

Es geht mir letztendlich nicht um die Suche nach Sternbahnen (oder gar Planetenbahnen), es geht auch nicht um die Suche nach Sternbildern oder andere Mustererkennung. Sonst hätte ich das im Eingangsposting geschrieben.

Es geht mir letztendlich darum eine Abbildungsfunktion zu finden, die das erste Bild auf das zweite so abbildet, dass alle Sterne im ersten Bild auf den zugehörigen Sternen im zweiten Bild zum liegen kommen.

Du klammerst dich extrem an den Versuch ein perfektes Modell zu finden. Wenn jemand zwischen den beiden Bildern gegen das Stativ tritt oder sich die Luftschichtung ändert, dann verschiebt und verformt sich das Bild auf unbekannte Weise. Das lässt sich einfach nicht mit endlichem Aufwand bestimmen! Aus diesem Grunde reicht mir eine Näherung mit z.B. einem Polynom (oder etwas, was lokal arbeitet).

Und in diesem Thread ging es mit primär um die Frage, wie ich einen Tiefpassfilter für ungleich verteilte Messwerte realisieren kann. Meinetwegen auch erstmal eindimensional. Wenn ich äquidistante Messwerte habe kann ich das einfach z.B. mit einem Gausschen Weichzeichner machen, mit einem gleitenden Mittel oder mit jedem beliebigen anderen Standardverfahren ohne irgendwelche Kenntnisse über die Art und Weise der Erhebung der Messdaten zu haben oder zuvor physikalische Modelle zu erstellen.

Wenn die Werte ungleich verteilt sind funktioniert das aber nicht mehr so einfach und ich wollte wissen, ob es auch da ein Standardverfahren gibt. Ich kann mir einfach nicht vorstellen, dass man auch nur ansatzweise so viele Werkzeuge benötigt, wie du bislang aufgezählt hast.

Als Beispiel: Man nimmt folgende äquidistante Wertereihe: 1, 2, 3, 4, 5, 6, 7, 8, 9, ...

Fast jeder Weichzeichnungsfilter würde diese Reihe auf sich selbst abbilden. Egal woher die Messwerte stammen und welches physikalische Modell sich dahinter verbirgt.

Folgende ungleich verteilte Messreihe: 1, 2, 3, _, _, _, 7, _, _, _, 11, _, _, _, 15, ...

würde den dichter besetzten Stellen (1, 2, 3) mehr Gewicht verleihen als den dünner besetzten. Dennoch stellt diese Messreihe weiterhin einen linearen Anstieg dar und lässt in meinen Augen keine andere Interpretation zu. (Alles selbstverständlich unter der Annahme, dass die Abtastfrequenz deutlich höher ist als die zugrundeliegende Information).

Wie kann man einen Weichzeichner/Tiefpass implementieren, der beispielsweise diese Messreihe korrekt auf sich selbst abbildet (und indirekt damit auch die Lücken füllen kann)? Ich vermute, dass ich die Werte anhand ihrer Dichte gewichten muss - so habe ich es testweise implementiert und recht vielversprechende Ergebnisse bekommen. Aber ich würde es gerne nochmal mit etwas weniger Bauchgefühl implementieren.

Bei aller Liebe zur Theorie: es muss auch realisierbar sein. Wenn ich meine Musik auf einen Hoch- und einen Tieftöner verteilen will, muss ich auch nicht das ganze Orchester physikalisch modellieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du klammerst dich extrem an den Versuch ein perfektes Modell zu finden. Wenn jemand zwischen den beiden Bildern gegen das Stativ tritt oder sich die Luftschichtung ändert, dann verschiebt und verformt sich das Bild auf unbekannte Weise. Das lässt sich einfach nicht mit endlichem Aufwand bestimmen! Aus diesem Grunde reicht mir eine Näherung mit z.B. einem Polynom (oder etwas, was lokal arbeitet).

In diesem Fall reicht ein Polynom nicht aus, denn das "gegen das Stativ treten" ist, letztendlich eine zufällig Veränderung, die Du gar nicht beschreiben kannst, da Du sie nicht kennst. Ein Polynom wird dieser Beschreibung sicher nicht gerecht, denn gerade so etwas ist nicht polynomiell, evtl würde man so etwas wie Schwingung annehmen, aber das ist sicherlich nicht generalisierbar.

Als Beispiel: Man nimmt folgende äquidistante Wertereihe: 1, 2, 3, 4, 5, 6, 7, 8, 9, ...

Fast jeder Weichzeichnungsfilter würde diese Reihe auf sich selbst abbilden. Egal woher die Messwerte stammen und welches physikalische Modell sich dahinter verbirgt.

Folgende ungleich verteilte Messreihe: 1, 2, 3, _, _, _, 7, _, _, _, 11, _, _, _, 15, ...

würde den dichter besetzten Stellen (1, 2, 3) mehr Gewicht verleihen als den dünner besetzten. Dennoch stellt diese Messreihe weiterhin einen linearen Anstieg dar und lässt in meinen Augen keine andere Interpretation zu.

Du kannst anhand der Eingabedaten Deine Verteilungsfunktion im Grunde frei nach Belieben anpassen, Du musst ja auch nicht zwingend was kontinuierliches nehmen, es geht ja auch z.B. etwas unstetiges (Treppenfunktionen) etc. Das liegt ja letztendlich in Deinem Ermessen. Du kannst auch nicht bekannte Daten einfach entfernen und dann eben daraus wieder äquidistant gewichten.

Ich bin der Meinung, dass das was Du da vor hast, nicht gut funktioniert.

Wie kann man einen Weichzeichner/Tiefpass implementieren, der beispielsweise diese Messreihe korrekt auf sich selbst abbildet (und indirekt damit auch die Lücken füllen kann)?

Was soll das nutzen, ein "Filter" der die Daten auf sich selbst abbildet ist letztendlich eine Identitätsabbildung Identische Abbildung

Aber das ist doch nicht der Sinn eines Filters. Vor allem muss Dir die Frequenz, nach der Du Filter willst bekannt sein, woher nimmst Du diese?

Bei aller Liebe zur Theorie: es muss auch realisierbar sein. Wenn ich meine Musik auf einen Hoch- und einen Tieftöner verteilen will, muss ich auch nicht das ganze Orchester physikalisch modellieren.

schau Dir z.B. mal Unabhängigkeitsanalyse an, das ist so etwas was Du suchst. Die Prämisse, die man trifft ist, dass man eine Anzahl Signale hat und diese werden linear gemischt (das Problem auf einer Cocktailparty, mehrere Leute reden und Du hast in einer Tonaufnahme das Stimmengewirr oder Du würdest mehrere Photos mit dem gleichen Film machen, so dass sich die Bilder addieren / übereinander legen).

Wichtig hierbei ist, dass ich davon ausgehe, dass die Daten "linear" gemischt wurden. Nun möchten wir am liebsten wieder jedes Signal einzeln haben, d.h. wir müssen "irgendwie" das gemischte Signal auftrennen, d.h. wir brauche die inverse Mischabbildung.

Nun geht man mit einem Optimierungsverfahren an diese Fragestellung heran, d.h. man sagt, wenn die Signal linear gemischt wurden und ich sie optimal trennen könnte, dann würde ich nur noch Rauschen haben und genau dieses optimiert man nun, d.h. ich versuche eine Matrix (nämlich die Inverse zu meiner Mischfunktion) zu bestimmen, die dazu führt, dass ich nur noch Rauschen übrig habe. "Rauschen" kann ich über die Entropie messen, d.h. ich kann letztendlich numerisch optimieren wie "gut" meine Trennung ist, denn wenn sie gut ist, dann hab ich Gaußrauschen, d.h. keine Information mehr.

Du willst doch letztendlich auch nichts anderes machen, Du willst aus eine Abbildungfunktion finden, nur bei Dir ist die Problematik, dass Du eben überhaupt keine Informationen hast, wie das Signal aus Bild 1 sich zum Bild 2 verändert, d.h. ich würde daran anknüpfen, dass ich versuche bekannte Strukturen in den Bildern erst mit einer möglichst hohen Sicherheit zu finden (z.B. gleiche Sternkonstellationen) oder eben gleiche Planeten. Dies kann ich z.B. durch Mustererkennung erreichen oder ich berechne die Planetenbahn und schau ob im zweiten Bild mit einem gewissen Epsilon der Planet gefunden wird.

Die nächste Frage ist, ob man hier eine globale Abbildungsfunktion finden kann oder ob man lieber die Bilder in Teilstücke zerlegt und lieber mehrere Abbildungsfunktionen erzeugt und ggf diese später zusammen fasst.

Wenn ich nun weiss wo aus Bild 1 ein Stern (bzw. ein Bereich) in Bild 2 zu finden ist, dann kann ich überlegen wie ich nun eine Funktion finden kann, die eben Bild 1 in 2 bzw invertiert 2 in 1 überführen kann. Kannst Du nun eine globale Funktion bestimmen, dann wäre dies Deine gesuchte Abbildungsfunktion. Ich würde aber hier definitiv wohl eher lokal arbeiten und dann ggf stückweise die globale Funktion erzeugen.

So wie ich Dein Problem verstehe, willst Du doch nicht glätten, denn das geht mit einem Gauß- oder Rangordnungsfilter, sondern Du willst wissen "wie" sich Deine Daten verändert haben, Deine Fragestellung ist dann doch letztendlich eine andere. Rauschen sollte mit so einem Filter kein großes Problem sein, aber der Tritt gegen das Stativ oder z.B. Rauch aus einer Zigarette schon, der vor die Linse geblasen wird. Wenn Du die Abbildungsfunktionen zwischen zwei Bildern bestimmen kannst, dann wirst Du aus einer Reihe von mehreren Bildern auch die "technischen Besonderheiten" bestimmen können. Denn wenn z.B. die Linse eine Eigenschaft hat, dann müssten Deine Abbildungsfunktionen Ähnlichkeiten aufweisen, d.h. Du wirst mit der Zeit die Eigenheiten der Technik erkennen können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Ich geb's auf.

Ich habe das Problem schon auf ein konkretes Beispiel runtergebrochen und benötige dafür eine konkrete Lösung.

Du kannst anhand der Eingabedaten Deine Verteilungsfunktion im Grunde frei nach Belieben anpassen, Du musst ja auch nicht zwingend was kontinuierliches nehmen, es geht ja auch z.B. etwas unstetiges (Treppenfunktionen) etc. Das liegt ja letztendlich in Deinem Ermessen.

Meine Frage war ja eben nach einer solchen Verteilungsfunktion (FIR-Filterkern) und die Vermutung, dass das bei schwankender Datendichte eben nicht so einfach geht! Dein Vorschlag mit der Identitätsabbildung kann weder die Lücken füllen noch handelt es sich dabei wie gefordert um einen Tiefpass! Außerdem war das wie geschrieben nur ein Beispiel, mit dem sich leicht prüfen lässt, ob ein Filter das beschriebene Problem löst.

Für die Trennfrequenz des Filters kann man einfach z.B. ein Viertel der Bilddiagonale als Wellenlänge wählen - die Informationen sind extrem niederfrequent und die Messfehler sind hochfrequent/lokal eng begrenzt (in der Größenordnung der mittleren Sterndistanz)

Du kannst auch nicht bekannte Daten einfach entfernen und dann eben daraus wieder äquidistant gewichten.

Das geht im zweidimensionalen nicht mehr.

So wie ich Dein Problem verstehe, willst Du doch nicht glätten,

Doch, das möchte ich!

denn das geht mit einem Gauß- oder Rangordnungsfilter,

Nein, das geht eben nicht! Versuch das mal mit der Beispielreihe von oben. Bei einem linearen Anstieg müsste ein Gaussfilter (wie jeder FIR-Filter mit symmetrischem Kernel) dasselbe Ergebnis wie ein Identitätsfilter liefern. Das funktioniert aber nur mit äquidistanten Messwerten! Bei der anderen Reihe wirst du damit scheitern!

Deine Fragestellung ist dann doch letztendlich eine andere.

Nein, sie ist immer noch dieselbe wie im Titel!

Die ganzen Querverweise und Tipps sind zwar nett, beziehen sich aber größtenteils nicht auf das von mir beschriebene Problem, sondern sondern darauf, wie du dir vorstellst ein Problem zu lösen, was sich mir gar nicht stellt.

Dennoch vielen Dank für die Mühe, die du dir gemacht hast!

Schöne Grüße,

Kai

ps: ich führe das Thema in einem stärker spezialisierten Forum fort: Glättung/Interpolation ungleich verteiter Messwerte - Mikrocontroller.net

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, das geht eben nicht! Versuch das mal mit der Beispielreihe von oben. Bei einem linearen Anstieg müsste ein Gaussfilter (wie jeder FIR-Filter mit symmetrischem Kernel) dasselbe Ergebnis wie ein Identitätsfilter liefern. Das funktioniert aber nur mit äquidistanten Messwerten! Bei der anderen Reihe wirst du damit scheitern!

Meine Antworten stehen in keinem Widerspruch zu Deiner Aussage, denn Du sprichst über eine Faltung Faltung (Mathematik) und dort im speziellen über den Glättungskern.

Du hast das Problem, dass Dein Polynom durch die Lücken nicht vollständig ist, d.h. unstetig und damit nicht differenzierbar. Der Verweis auf die FEM liefert für die Differenzierbarkeit und die Integrierbarkeit von solchen Strukturen eine approximative Lösung. Weiterhin ist bei Dir die Trägereigenschaft nicht erfüllt, denn Dein Polynom existiert auch außerhalb Deines diskreten Wertebereiches, auch für dieses Problem liefert die FEM einen Ansatz.

Die FEM liefert in ihrer Funktionsweise durchaus einen Lösungsansatz den Du auf Dein Problem übertragen könntest. Dazu hatte ich einen Hinweis im #2 & #4 gegeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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