Hallo zusammen,
für ein Uniprojekt musste ich die Profildicke entlang einer Linie von
Beschichtungen auf einer rauen Oberlfäche messen. Anbei ein Plot der
Messung. Die x-Achse stellt die abgefahrene Linie dar. Die y-Achse die
Schichtdicke. Innerhalb dieser 25000µm langen Linie sind zwei Kanten wo
eine Schicht anfängt und aufhört. Dazwischen ist die Schicht zwischen
1µm und 3µm dick. Rein von der Profilaufnahme kann man nicht erkennen wo
die Schicht anfängt und aufhört. Idealerweise würde ich gerne durch ein
geeignetes digitales Filter alle Frequenzen rausfiltern, die nicht durch
den Sprung dieser Beschichtung entstehen und am Ende an zwei Stellen
einen Peak sehen an dem die Schicht plötzlich (also hochfrequent) um
1-3µm zunimmt und pötzlich um 1-3µm abnimmt. Dazu bräuchte ich
wahrscheinlich ein Hochpassfilter oder ein Bandpassfilter. Jetzt wäre
meine Frage wie und mit welchen Hilfsmitteln ich das umsetzen kann.
Leider habe ich softwaretechnisch wenig Erfahrung. Vlt. hat jemand auch
zufällig ein passendes Beispiel bereit (evtl. für Python oder Octave)
oder evtl. sogar eine ganz andere Software. Bin um jeden
Umsetzungratschlag oder jede Hilfe dankbar!
Vielen Dank schon mal.
PS. Anbei auch noch die Messdaten in CSV Format
Bert schrieb:> Die x-Achse stellt die abgefahrene Linie dar.
Sieht tatsächlich sehr "abgefahren" aus :-)
Wie man das macht?
Fahrgeometrie und Fahrtempo bestimmen und damit herausbekommen, wie
"steil" die Kante ist - also über wieviele Punkte sie sich verteilt.
Dies in einen Filter einmodellieren, also faktisch eine Rampe.
Das was du "Hochpass" nennst, kommt dadurch hinein, dass die
Rampenkoeffizienten im Mittel auf Null normiert werden müssen. Und ja
streng genommen ist es ein Bandpass, weil die Rampe die Höhen, die kein
Nutzsignal sind, unterdrückt.
Was an Koeffizienten rauskommt, sollte aussehen, wie ein tiefergelegter
Sägezahn.
Und am Ende braucht es wahrscheinlich noch einen Filter in umgekehrter
Orientierung, der das Ende erkennt.
Könnte man mit irgendeinem Kurvenfitting etwas anfangen? Wenn die
Funktion ableitbar ist, könnte man hier den Wendepunkt bestimmen, und
vielleicht hilft die erste Ableitung der Funktion weiter?
Christoph db1uq K. schrieb:> Könnte man mit irgendeinem Kurvenfitting etwas anfangen?
Die einmodellierte Kante ist praktisch ein fit, bei dem die zu findende
Form fest ist, da bekannt und zudem die Gütefunktion, die man zum
Optimieren bräuchte, permanent ausgegeben wird. Heraus kommt dann
irgendwann ein peak, der das (ausreichen deutliche) Vorhandensein der
Kante diagnostiziert. Um diesen Peak zu prozessieren nutzt man dann die
Ableitungen, weil die Amplitude mitunter unbekannt ist.
> vielleicht hilft die erste Ableitung der Funktion weiter?
Faktisch ist der Kantenerkenner eine Ableitung, nur nutzt diese nicht
rücksichtslos die zufällige Auflösung, die durch die Abtastung entsteht,
indem sie Sample zu Sample vergleich, sondern die Distanz, die dem
Problem eigen ist - hier eben die Kantensteigung.
Ich dachte, das kann man gaaanz einfach mit LibreOfficeCalc machen. Geht
auch, aber mit ein paar Problemen. Vielleicht sollte man doch ein
richtiges Mathematikprogramm benutzen.
Erst mal kann eine csv-Datei natürlich keine Kommazahlen enthalten,
sondern mit Dezimalpunkt. Der Import des deutschen LibreOffice will aber
Komma.
Dann stellt ich fest, dass die LibreOffice Hilfe nicht mehr
funktioniert, seit mit dem Ubuntu-Update vom April der Firefox in der
Snap-Version installiert wird. Der mag keine html-Hilfedateien die als
Admin installiert wurden, was LibreOffice aber so macht. Es gibt einige
Diskussionen dazu im Web, je nach Standpunkt mit Verfluchungen der
Programmautoren.
Ok, hier also ein Diagramm mit eingetragener Polynom-Fitfunktion dritter
Ordnung. Noch als Text:
f(x) = 7,40303448254372E-12 *x3 - 2,38277811534535E-07 *x2 +
0,00335098831964075 *x + 683,995827050309
Das ist die Fitfunktion, die ins Diagramm eingetragen wurde.
Man kann die Formel auch in der Tabelle mit "LINEST" oder "RGP"
berechnen lassen, RGP scheint der neuere Befehl zu sein, wird
automatisch so korrigiert. Daraus müssten sich dann die Ableitungen
berechnen und plotten lassen.
(Den Versionssprung von 7.3 auf 7.4 hat Ubuntu noch nicht vollzogen,
vielleicht auch daher die Unterschiede der Doku.)
Christoph db1uq K. schrieb:> Das ist die Fitfunktion, die ins Diagramm eingetragen wurde.
Das geht mit Excel auch, aber dann ist es ja dem Programm überlassen,
nach welchen Kriterien es fittet, z.B. "kleinste Quadrate". Du steckst
auch willkürlich die Annahme hinein, dass die Krümmung, die die Funktion
mitbringt, zufällt der entspricht, welche sich durch
Verfahrgeschwindigkeit + Auflösung / Abtastung ergibt. Das ist ja nicht
automatisch der Fall.
Du hast jetzt optisch eine X3 genommen, aber eine 4 wäre sicher besser,
weil diese die lokalen Krümmungen besser nachvollzieht. Eine zu grobe
Funktion laboriert an dem Problem, dass sehr weit entfernte Stellen
"mitbestimmmen", wie genau sie in einem Bereich trifft. Allein optisch
würde ich schon wenigstens 3 Wendepunkte mehr erkennen, wenn ich das Fit
mit dem Mittelwert des Originals vergleiche. Probiere mal eine 6. Eine 7
wäre gfs auch noch besser, aber eine 15 sehr wahrscheinlich nicht, weil
sie zu sehr dem Rauschen folgt. Angenommen, die 7 würde passen - dann
kommt jemand auf die Idee, fährt das Ding anders oder nichtlinear durch
und man liegt wieder in der Wiese. Zudem kann das Polynom so ohne
Weiteres nur in Ganzzahlen klettern. Der Filter ist im Rahmen der
Auflösung aber an praktisch jede Kante anzupassen.
Dasselbe Problem hat man mit Bildverarbeitungsfiltern: Kantenerkennung
mit Sobel kann man haken, wenn man nur einfach stumpf von Pixel zu Pixel
guckt.
Christoph db1uq K. schrieb:> Ok, hier also ein Diagramm mit eingetragener Polynom-Fitfunktion dritter> Ordnung. Noch als Text:> f(x) = 7,40303448254372E-12 *x3 - 2,38277811534535E-07 *x2 +> 0,00335098831964075 *x + 683,995827050309
Und was lernen wir daraus über die Kantenlage?
Genau gar nichts.
Und in den Bereichen nahe 0 und um 12000 wird zudem die Kurvenform nicht
getroffen.
Bert schrieb:> Rein von der Profilaufnahme kann man nicht erkennen wo> die Schicht anfängt und aufhört.
Also brauchst du ein Modell, dass auf Basis von Lage und
Schichtcharakteristiken den Messvorgang modelliert (inkl.
Sensorauflösung) und dann die Parameter variiert, bis es passt. Der
Solver von LibreOffice ist dein Freund.
Über den Spung in den Daten bei 800 solltest du dir allerdings vorher
Gedanken machen (unsaubere Messbereichsumschaltung?)
Ich denke, am Ende soll eine Kurve herauskommen, die aus drei
Geradenstücken besteht, die genau an den Schichtgrenzen abknicken. Das
ist sicher nicht exakt möglich.
Vielleicht könnte man ein paar Probestücke erst mit dem Profilmessgerät
vermessen und dann durchsägen und optisch mit dem Mikroskop vermessen.
Damit könnte man die Kurve dann kalibrieren. Selbst dann wäre das nur
für sehr ähnliche Fälle richtig.
Christoph db1uq K. schrieb:> Ich denke, am Ende soll eine Kurve herauskommen, die aus drei> Geradenstücken besteht,
3 Pro Knick, oder?
Also Strecke 1, Steigung / Übergang, Strecke 2
und später wenn es wieder runter geht.
Vor allem braucht man mal gute Messdaten! Erstens sind dort
(Export-)fehler in den Dezimalstellen drin und ich sehe zweitens auch
nur einen Knick, wenn ich es prozessiere. Offenbar ist das der Übergang
in den erhabenen Bereich.
> mit dem Mikroskop vermessen
Sehr interessantes Stichwort. :-)
Bei dem Thema kommt dann noch eine weitere Variable (und wenn es sehr
stark vergrößert, eine zweite) ins Spiel die bei der Festlegung des
Filters zu berücksichtigen / zu messen wäre. Wenn es ein 2D-Problem
wäre, dann gibt es noch eine dritte :-)
Da gehe ich aber aus gewissen Gründen aber nicht drauf ein, wie man
dafür welchen Filter baut.
Für hier fände ich es am Einfachsten, die Position der Kante zu
bestimmen und mit den Messdaten zu korrelieren.
>Mikroskop
Das Problem jeder zerstörungsfreien Prüfung. Aufsägen und nachschauen
ist immer genauer.
Man arbeitet mit Testkörpern aus möglichst demselben Material, in das
Teststellen eingebaut sind, z.B. statt "irgendeinem" Riss ein schmaler
Sägeschnitt, den man optisch vermessen kann. Daher auch mein Vorschlag
mit den Probekörpern.