Spektrum Hintergrund abziehen wie

Status
Es sind keine weiteren Antworten möglich.

Pauldd

Aktives Mitglied
Hallo

Ich versuchs einfach mal auf Gut-Glück ob mir hier jemand weiterhelfen kann.

Ich habe ein Tageslichtspektrum aufgenommen und wollte es gerne analysieren.

Link zur Grafik: https://pauledd.files.wordpress.com/2017/03/spektrum_tageslicht2.jpg

Man erkennt sehr gut die Frauhnhofer Linien und auch die Natrium Doppellinie. Da ich ausschließlich mit linuxeigenen Mitteln arbeite habe ich mir überlegt wie ich das Spektrum in Zahlen verwandeln kann um damit zu arbeiten. Dazu habe ich das Spektrum mit "convert" auf ein minimales Maß ge-croppt.

Link zur Grafik: https://pauledd.files.wordpress.com/2017/03/spektrum.png

Dann habe ich das Spektrum mit "convert spektrum.png spektrum.txt" in Zahlen zerlegt. Nun habe ich für jedes Pixel ein RGB Wert.

Dann habe ich ein Script geschrieben das jeweils zu jedem X-Pixel einen Durchschnitt aller Y-Pixel berechnet, um sozusagen den Mittelwert in der Vertikalen zu bekommen.
Damit bekomme ich eine X Reihe mit gemittelten Farbwerten.

Diese X-Reihe Plotte ich dann mit Gnuplot. Der Einfachheit halber habe ich mal nur den roten Kanal geplottet.

Link zur Grafik: https://pauledd.files.wordpress.com/2017/03/plot.png

Man erkennt einwandfrei die zwei Natrium Linien (D) und rechts daneben Ha(C) und O2(B).

Meine eigentliche Frage ist nun wie kann ich aus dem Plot folgenden Plot machen der mir nur die Linien anzeigt, also der Rest rausgerechnet wird? Ich habe das mal schwarz nachgezeichnet wie ich das meine:

Link zur Grafik: https://pauledd.files.wordpress.com/2017/03/plotman.png

Könnte man das nicht so machen indem man einen gleitenden Durchschnitt zu der ganzen Reihe berechnet und dann jedem Wert zum Durchschnitt vergleicht und ab einer bestimmten Abweichung vom Durchschnitt den Wert extrahiert? Oder habt ihr eine Andere Idee?
 
Hallo Paul,

du bist auf dem richtigen Weg, allerdings ist das Abziehen eines "running mean" nicht sinnvoll, denn damit läufst du Gefahr zu viele Details/Linien mit zu entfernen, wobei dies von der Breite deines Mittelungsfensters ist.

Am besten wäre es, wenn du ein Kontinuum anfittest und dieses dann abziehst, dann bleiben "die Linien übrig". Die Modellierung des Kontinuums gelingt - je nachdem, welche Tools du zur Verfügung hast - ganz gut mit einem Polynom n-ten Grades. Hier gibts es in den Mathematik-Bibliotheken meist entsprechende Fit-Funktionen.

Schöne Grüsse,
Michael
 
So, nach längerem rumtrödeln (9 Monate :biggrin: ) in Libreoffice Calc und dessem Polynom bin ich zu Python gewechselt.

Ich habe jetzt die Rohdaten in eine Liste gelesen, dann das Polynom 10ten Grades erstellt und eine zweite Liste mit dessen y Werten gefüllt. Dieser Liste habe ich dann die Rohdaten abgezogen und herausgekommen ist das:

Link zur Grafik: http://p-bg.de/pics/red_polynominal_10.png

Ich habe keine Ahnung ob das so gut aussieht. Irgendwie konnte das Ergebnis noch ein bisschen deutlicher nach oben skaliert werden.

Dann werde ich mal versuchen das ganze Spektrum auszugeben und die X-Achse richtig mit Wellenlänge anstatt nur der x-pixel position.
 
Zuletzt von einem Moderator bearbeitet:
Hallo Paul,

wenn Du Deine "raw data" durch Dein "10th deg. poly." dividierst, bleiben das (Pseudo-)Kontinuum und die Linien als Absorptionslinien (wie im Rohspektrum) übrig.

Grüße
Torsten
 
Danke Torsten, für den Tipp.
Ich hätte noch eine Frage. Hier mal ein RGB Plot der Rohdaten.

Link zur Grafik: http://p-bg.de/pics/rgb_raw_plot.png

Wie man sieht hat sich im blauem Bereich (Richtung UV) noch ein Rest Rot/Grünanteil und im rotem Bereich (Richtung IR) ein Rest Blau/Grün versteckt. Sehe ich das richtig das ich diese Rester einfach rauschneiden kann so dass nur noch die drei großen RGB Keulen übrig bleiben?
 
Und gleich noch eine Frage. Kann ich eigentlich das ganze RGB Spektrum nicht in Mein Monochombild umwandeln? Oder gegen dabei Informationen verloren? Eigentlich müssten doch die Absorptionslinien dabei erhalten bleiben.
 
Status
Es sind keine weiteren Antworten möglich.
Oben