Frequenzunabhängiger Filter

Gast #1324195
Hallo,

ich schreibe momentan eine Projektarbeit und habe folgendes Problem:

Mit einem Triangulationslaser wird die Oberfläche eines runden 
Metallteils gemessen. Das Messsignal rauscht allerdings (sehr 
unregelmäßig...hat vielleicht was mit der glänzenden Oberfläche des 
Teils zu tun?) und teilweise werden Werte erzeugt, die physikalisch 
nicht möglich sind.
Meine Aufgabe ist nun einen digitalen Filter zu implementieren, der 
diese "physikalisch-nicht-möglichen" Werte eliminieren soll. Das Problem 
dabei ist, dass das ganze frequenzunabhängig gefiltert werden soll...
Es werden quasi für jedes Teil eine bestimmte Anzahl von Messwerten 
generiert und diese sollen gefiltert werden. Ein moving-average-Filter 
kann ich nicht benutzen, weil die anderen "möglichen" Messwerte nicht 
verfälscht werden sollen.

Hat jemand eine Idee?

Vielen Dank im Voraus!!!
Gruß
Gast
Du kannst einfach die größten und kleinsten Messwerte verwerfen.

Entweder machst du das mit "Brute Force" und nimmst z.B. die größten 15% 
und kleinsten 15% nicht mehr.

Oder du berechnest den Mittelwert  und die Standardabweichung und nimmst 
nur die Werte innerhalb Mittelwert +/- Z x Standardabweichung. Mit z.B. 
Z=3. Das kannst du auch iterativ machen, also wiederholen.

Alternativ kannst du evtl einen Teil der Messwerte bestimmen die 
physikalisch unmöglich sind und das dann mit einem der obigen Verfahren 
kombinieren.
Gast
Danke für die Antworten.
Das Problem ist, dass nicht unbedingt der größte bzw kleinste Wert 
falsch sein muss. Ein Beispiel: Ist das Drehteil verkippt eingespannt 
müssten die Messwerte etwas Sinus/Cosinus-mäßiges ergeben (siehe 
Skizze)...und die in rot gehaltenen Messwerte sind falsch und sollen 
gefiltert werden...

Gruß
Angehängte Dateien:
Vielleicht denke ich ja immer noch zu einfach :-)
Aber bei einem Cosinus sehen die Werte größenordnungsmäßig doch so aus:

Maximale Amplitude -->
positiver Wert, kleiner als der vorherige -->
positiver Wert, kleiner als der vorherige -->
positiver Wert, kleiner als der vorherige -->
positiver Wert, kleiner als der vorherige -->
Null (bei Pi/2) -->
negativer Wert, kleiner als der vorherige -->
negativer Wert, kleiner als der vorherige -->
negativer Wert, kleiner als der vorherige -->
negativer Wert, kleiner als der vorherige -->
Minimum (bei Pi)
negativer Wert, größer als der vorherige -->
negativer Wert, größer als der vorherige -->
negativer Wert, größer als der vorherige -->
negativer Wert, größer als der vorherige -->
Null (bei 1,5*Pi) -->
positiver Wert, größer als der vorherige -->
positiver Wert, größer als der vorherige -->
positiver Wert, größer als der vorherige -->
positiver Wert, größer als der vorherige -->
Maximale Amplitude (bei 2*Pi)

Wenn man weiß, "wo auf dem Cosinus" man gerade ist (anhand der 
Nulldurchgänge und der Minima/Maxima feststellbar), ist es doch ein 
Leichtes den aktuellen Signalwert mit dem vorherigen zu vergleichen und 
zu prüfen, ob der aktuelle Wert plausibel ist.

Man könnte auch die erste Ableitung bilden und wenn diese sich bei drei 
Signalwerten in Folge zweimal ändert (vom Vorzeichen her), passt es eben 
nicht.
Gast
Also ich habe mir etwas überlegt:

Du weißt, dass das Signal ein Sinus mit Offset ist und kennst die 
Frequenz (Drehgeschwindigkeit des Messteils).

Zuerst würde ich aus den Messdaten versuchen den Sinus zu bestimmen, 
genauer die Phase, das Offset und Amplitude z.B. der Methode der 
kleinsten Fehlerquadrate. Im 2. Schritt würde ich alle Datenpunkte die 
"zu weit" weg vom Sinus sind entfernen.

Gegebenenfalls dies iterieren.
Gast
da es ein ditigaler Filter sein soll....versuche es doch einmal mit 
einer Autokorrelationsfunktion, da das Signal ja wohl periodisch zu 
seinen scheint kannst du ganz einfach Abweichung (Artefakte...) an der 
Selbstähnlichkeit bzw. Nicht-Selbstähnlichkeit des Signals erkennen.

ist zwar nicht die einfachste methode..aber wohl die effektivste!


aber der thread hier ist eh tot oder?? :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.