www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Frequenzunabhängiger Filter


Autor: NeedHelp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht versteh ich das Problem nicht richtig, aber warum nicht über 
die Messwerte drüber iterieren und alle rauswerfen, die physikalisch 
nicht in Frage kommen?

Autor: Philip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: fred maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Philip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Du kannst einfach die größten und kleinsten Messwerte verwerfen."

Genau das macht doch das Median Filter....

Autor: NeedHelp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt kein Filter dem man sagen kann "filtere alle Störungen heraus". 
Du musst dir erst mal ein paar Gedanken darüber machen wie du das 
Nutzsignal und das Störsignal charakterisieren kannst, und welche 
Parameter des Nutzsignals bekannt sind und welche gemessen werden 
sollen.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: fred maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Philip

Der Medianfilter macht dies nur, falls die Filterlänge lang genug ist.

Außerdem werden unter Umständen noch mehr Werte entfernt.

Autor: fred maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Philip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit: FFT und peak bestimmen, wenn man nur an der Frequenz 
interessiert ist

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, jetzt ham wir aber so viele Ideen dass es doch klappen sollte :-)

Autor: jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.