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ß
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?
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.
"Du kannst einfach die größten und kleinsten Messwerte verwerfen." Genau das macht doch das Median Filter....
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ß
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.
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.
@Philip Der Medianfilter macht dies nur, falls die Filterlänge lang genug ist. Außerdem werden unter Umständen noch mehr Werte entfernt.
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.
Wie wärs mit: FFT und peak bestimmen, wenn man nur an der Frequenz interessiert ist
Na, jetzt ham wir aber so viele Ideen dass es doch klappen sollte :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.