Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenzunabhängiger Filter


von NeedHelp (Gast)


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ß

von Mark B. (markbrandis)


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?

von Philip (Gast)


Lesenswert?


von fred maier (Gast)


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.

von Philip (Gast)


Lesenswert?

"Du kannst einfach die größten und kleinsten Messwerte verwerfen."

Genau das macht doch das Median Filter....

von NeedHelp (Gast)


Angehängte Dateien:

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ß

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Mark B. (markbrandis)


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.

von fred maier (Gast)


Lesenswert?

@Philip

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

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

von fred maier (Gast)


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.

von Philip (Gast)


Lesenswert?

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

von Mark B. (markbrandis)


Lesenswert?

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

von jones (Gast)


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?? :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.