Programm: Spektro Analyser

Veröffentlicht von Joe-C (jch) am Oct 23 2011
Software >>

Diese Webseite ist gerade in Überarbeitung.

Bis zum Abschluss der Arbeiten, ist auf den Unterseiten mit Darstellungsfehlern und Unvollständigkeiten zu rechnen.

Index

Zurück zur Übersicht

Einleitung

zurück zum Index


 

Spektro Analyser

Auflösung: 915x520

Nachdem ich das Programm so weit ausgebaut habe, dass es auch für andere von Interesse sein könnte, hab ich es mal als "Softwareprojekt" hier hinzugefügt.

Das Programm kann von gespeicherten Bildern (Drag&Drop) oder einer Webcam mit Bildern versorgt werden.
Mittels einer einstellbaren Messlinie wird festgelegt, welche Pixel ausgewertet werden sollen.
Diese werden über einestellbare Mathematische Verfahren ausgewertet und letztendlich grafisch dargestellt.

Derzeit setzt die Software noch eine VGA Auflösung (640x480) als Bildquelle voraus.

 

Übersicht

zurück zum Index


Das Programm besteht aus 2 Teilen. Einem Hauptfenster, welches diverse Messeinstellungen enthält und einem Setupfenster, in welchem (unter anderem) die Messlinie festgelegt werden kann.

Zu den Bildern:

  • Beispiel 1
    Zeigt das Spektrum eines grünen DPSS Laserpointers.
  • Beispiel 2
    Hier wurden 3 verschiedene Quellen geladen und deren Messwerte über die "Merker" Funktion festgehalten. Die rote Linie zeigt das normale Spektrum einer Webcam (mit IR Filter), die grüne den normalen Spektralbereich vom Tageslicht und die gelbe ein Spektrum mit 850nm Filter.

Beispiel 1
Auflösung: 1280x768

Beispiel 2
Auflösung: 1280x768

 
  •  
  •  

Folgende Bilder zeigen verschiedene Darstellungen der gleichen Quelle... eines grünen DPSS Lasers.

  • Graph 1
    Das normale Spektrum mit aktiven Farbverlauf der Messkurve.
  • Graph 2
    Zoom auf den unteren grünen Bereich.
  • Graph 3
    Zoom auf den IR Bereich. Der Farbverlauf ist abgeschaltet, alle Messpunkte als Kreise und die Verbindungslinien gelb dargestellt.

Graph 1
Auflösung: 822x435

Graph 2
Auflösung: 822x435

Graph 3
Auflösung: 822x435

 
  •  
  •  
  •  

Eine der stärksten Änderung ist, dass ich die Messlinie nicht mehr selbst zeichnen lasse, sondern nur noch die erzeugten Messwerte an ein Graph-Control weiterleite.
Dieses heißt Zedgraph und verfügt über sehr viele Funktionen. So ist es nun im Gegensatz zu vorher möglich, in einzelne Bereiche zu Zoomen und die Messkurve zu verschieben.

Linke Maustaste:
Graph verschieben. Funktioniert genau wie die Windows Fotoanzeige.
Mittlere Maustaste:
Zoombereich auswählen... mit der Maus zeichnet man ein kleines Rechteck, dessen Abmaß die neue Skalierung sind.
Rechte Maustaste:
Kontextmenü. Daran hab ich nix geändert... es ist in Englisch und hat einige Funktionen wie Bild Speichern/Drucken oder Anzeigen der Messpunktwerte wenn der Mauszeiger drüber ist.
Mausrad:
Rein- oder raus zoomen. Funktioniert genau wie die Windows Fotoanzeige.

Funktionen und Schaltflächen

zurück zum Index


In der obersten Leiste können 6 Funktionsgruppen aktiviert werden. Die letzten 4 sind verschiebbare Toolblöcke im Hauptprogramm, die ersten 2 hingegen nicht.
Jede Funktion die ein oder ausgeschaltet werden kann, wird in Fettschrift dargestellt und ist schwarz (wenn sie aus ist), oder andernfalls grün (bzw. gelb) im aktiven Zustand.

Setup

Setup öffnet das Setup Zusatzfenster. Dort kann die Lage der Messlinie (über eine Scrollbar) sowie deren Länge eingestellt werden.
Die Länge der Messlinie wird durch den Abstand zum Rand eingestellt. Die Standardeinstellung ist auf mein Spektrometer eingestellt: 220 links und 0 rechts. Das bedeutet, dass das Spektrum nach 220 Pixeln von Links beginnt und bis an den rechten Rand geht (640 - 220 - 0 = 420 Messpunkte).

Dann gibt es dort noch ein Tab mit weiteren Einstellungen:
Skalierung in Pixel/nm:
Hier wird eingestellt, von wo bis wo die Skala reicht. Die Schaltfläche "Reset" führt eine Aktualisierung der Skala auf die Einstellungen durch. Das kann dazu verwendet werden, um Verschiebungen der Messkurve oder Zoomen rückgängig zu machen.
Grundeinstellungen:
Die Messskala Einstellungen sind dafür verantwortlich, dass die angezeigte Wellenlänge auch mit der Realität übereinstimmen (oder zumindest nahe genug dran liegen). Der IR Blauoffset wurde schon beim Spektrometer beschrieben. Dieser kann bei nichtbedarf abgeschaltet werden.
Sinus Testgraph:
Diverse Einstellungen für eine Sinusgraph Funktion. Diese wurde eingebaut um Kurven wie die Spektrale Empfindlichkeit des Menschlichen Auges als Referenz einzubinden, oder um über Mathematische Funktionen eine saubere Kurve als Messergebnis zu erhalten.
Einstellungen Speichern:
Solange hier ein Häkchen drin ist, werden alle Einstellungen über die Setup.xml gespeichert. Damit muss man die Einstellungen nur einmal machen und hat bei jedem Programmstart dann die richtige Konfiguration.

Filter

Öffnet ein internes Fenster in diversen Grafischen Filtern, welche auf die Quelle angewendet werden können (Farbfilter, Kontrast, Negativ...). Die Funktionen sind irgendwann mal über geblieben und werden bei mir kaum genutzt. Aber vielleicht braucht man sie ja später mal...

Graph

Toolbox rechts. Enthält die Auswahl der Messungsart, aber hauptsächlich Einstellungen für die Darstellung der Messlinie.

Farbverlauf:
Erstellt einen Farbverlauf von der Mess- zur Nulllinie. Der Farbverlauf ist an der Spektralfarbe orientiert. Diese wird nicht immer genau getroffen. Der Farbverlauf ist ja nur eine Ansammlung von Systemfarben, die einfach ineinander übergehen. Deshalb sind einige Übergänge nicht ganz so, wie sie sein sollten.
Label:
Bestimmt ob in der Legende die Messlinie mit auftaucht. Merker tauchen immer in der Legende auf, bei der Messlinie kann es aus Platzgründen ausgesucht werden.
Reset:
Hat die gleiche Funktion wie die Resetschaltfläche im Setupfenster. Dient dem zurücksetzen nach dem Verschieben oder Zoomen.
Farbfeld:
Ist eigentlich ein Textfeld, dessen Hintergrundfarbe gleichzeitig die Farbe der Messlinie ist. Mit einem Klick auf dieses Feld öffnet sich eine Farbauswahl, womit die Farbe der Messlinie angepasst werden kann.
Symbol:
Alle Messpunkte können als Symbole (Kreise, Rechtecke...) dargestellt werden.
Name:
In diesem Textfeld wird festgelegt, was als Titel über dem Graphen stehen soll. Mit ENTER wird die Eingabe übernommen. Ist das Feld frei, wird der Titel abgeschaltet und der obere Bereich wird mit dem Graphen gefüllt.
Messungsart:
Hier wird festgelegt, auf welche Art die Messwerte erfasst werden. Die Pixelwerte rot + grün + blau / 3 ergeben beispielsweise den Mittelwert.

Merker

Ist eine Speicherfunktion für Messkurven. Diese Messkurven können, zur Übersicht, anders Dargestellt werden.
Es können bis zu 5 Kurven (Channel 1-5) gespeichert werden. Gespeicherte Kurven können nachträglich in ihrer Darstellung angepasst, ein und ausgeblendet oder gelöscht werden.

Merken... :
Damit wird die Speicherfunktion eingeschaltet. Wenn das nächste mal eine Messkuve aufgenommen wird (10x pro Sec.) wird ebenso eine weitere Kurve mit den Merkereinstellungen aufgenommen, welche sich im Gegensatz zur Messkurve dann nicht mehr automatisch ändern wird.
Auswahl des MerkerChannels:
Es stehen die Channels 1 bis 5 zur Auswahl. Ist ein Channel schon mit einer Kurve belegt, werden die Einstellungen (Farbe, Symbol, Name) geladen und können nachträglich geändert werden.
Farbfeld:
Ist eigentlich ein Textfeld, dessen Hintergrundfarbe gleichzeitig die Farbe der Merkerlinie ist. Mit einem Klick auf dieses Feld öffnet sich eine Farbauswahl, womit die Farbe der Merkerlinie nachträglich angepasst werden kann.
Symbol:
Alle Messpunkte können als Symbole (Kreise, Rechtecke...) dargestellt werden.
Name:
In diesem Textfeld wird festgelegt, was als Titel über dem Graphen stehen soll. Mit ENTER wird die Eingabe nachträglich übernommen. Ist das Feld frei, wird der Titel abgeschaltet.
Kurven... (Schrift ist rot):
Dies ist ein Zusatzmenü, in dem man einzelne (teilweise alle) Kurven ausblenden, einblenden oder Löschen kann. Bei einzelnen Kurven ist die Rede von "gewählter" Kurve, gemeint ist damit der aktuell eingestellte MerkerChannel.
Außerdem kann eine Kurve (die im aktuell eingestellten Channel) als Textdatei gespeichert werden. Neben Angaben wie Farbe, Name usw., stehen dort die X und Y Werte (X als Wellenlänge und Y als Pixelhöhe) als Nummern. Damit kann man beispielsweise Kurven nach Excel übertragen und dort weiterverwenden. Als Text abgespeicherte Merkerkurven können aber auch per Drag&Drop später wieder in die Darstellung eingefügt werden. Dann landen die Merkerkurven wieder in dem Channel, aus dem sie gespeichert wurden. Im Kurvenmenü kann man auch eine Kurve aus der Textdatei laden, diese wird dann in den aktuell eingestellten Channel geladen.

Die Merkerfunktion hat leider noch eine kleine Schwachstelle... die Merker müssen der Reihe nach gefüllt werden.
Also zuerst Channel 1 und zuletzt Channel 5. Wenn man direkt auf Channel 5 was speichern würde, gäbe es Probleme mit der Math Funktion und beim Speichern der Textdatei.
Das hängt damit zusammen, dass die SpeicherChannels schon existieren, Kurven aber erst hinzugefügt werden müssen. Den Zugriff auf eine Kurve, wird über den Kurvenindex geregelt. Wenn man also beispielsweise zuerst in den Channel 5 und dann in den Channel 3 scheibt, hätte man im Kurvenindex 1 die Channel 5 kurve und im Index 2 die Channel 3 Kurve. Der Index zählt immer mit jeder Kurve aufwärts. Solange die Merker der Reihenfolge nach gefüllt werden, stimmen aber Channel und Index überein (Index 0 ist übrigens die Messkurve).

Das sollte man vor allem bei gespeicherten Kurven bedenken, da per Drag&Drop die Kurven wieder in die Channels geladen werden, aus denen sie gespeichert wurden (wenn man nicht gerade die Channelnummer in der Textdatei ändert...;) ).

Kamera

Wie man sich denken kann, ist der Bereich für die Webcamsteuerung als Bildquelle zuständig. Die Auflösung ist derzeit noch auf VGA (640x480) und die FPS auf 10 festgelegt. Kameras mit VGA Auflösung und durchschnittlichen Frameraten von 30, bekommt man heute für <10 Euro hinterher geworfen.

Suche Kameras ():
Diese Funktion sucht nach verfügbaren Webcams. Jedes mal, wenn man diese Schaltfläche angeklickt, wird bei Windows nach entsprechend angemeldeten Geräten gesucht. Die Menge der gefundenen Geräte wird in Klammern dargestellt: Suche Kameras (2) = 2 Kameras gefunden.
Man kann beispielsweise das Programm starten, dann eine Webcam verbinden und installieren und nach der Installation nochmal die Kameras suchen lassen, um die gerade installierte zu verwenden. Ein neustarten des Programms ist dafür nicht notwendig.
Kameraauswahl:
Hier werden gefundene Kameras mit ihren Treibernamen aufgelistet. Die Textfarbe gilt als Status...
gelb = Kameras gesucht
Grün = Kamera aktiv
Rot = Kamera abgeschaltet oder Fehler
Start:
Startet die in der Kameraauswahl gewählte Kamera. Wenn die Kamera läuft, sollte die Kameraauswahl grün werden.
Stop:
Kamera wir abgeschaltet.

Um zu sehen, ob die Webcam Bilder liefert (und vor allem welche) kann man oben auf "Setup" Klicken und das Fenster der Messlinie betrachten.

Math

Dieser Bereich ist für kleinere Mathematische Spielereien. Diese Funktion kann beispielsweise verwendet werden um über eine Korrekturkurve die Messlinie anzupassen.

Aktiv:
Hiermit wird die Berechnung eingeschaltet. Als Ergebnis der Berechnung gilt die Messlinie. Gerechnet wird nur, so lange die Funktion Aktiv ist (Schriftfarbe: grün). Die Funktion schaltet sich selbstständig ab, wenn einer der Operanten nicht verfügbar ist.
Auswahl des ersten Operanten:
Es stehen 6 zur Auswahl (Messung, Merker 1, Merker 2...usw.).
Auswahl der Operation:
Es stehen 4 zur Auswahl (Addition, Subtraktion, Division, Multiplikation) welche durch ihre üblichen Zeichen (+, -, *, /) dargestellt sind.
Auswahl des zweiten Operanten:
Es stehen die gleichen 6 zur Auswahl (Messung, Merker 1, Merker 2...usw.).

Math Beispiel

Auflösung: 822x435

Math Beispiel

In diesem Beispiel wurde über die Sinusfunktion eine "Zielkurve" erstellt. Diese soll so gleichmäßig sein, wie man es eben gern so hätte.
Dann wird eine normale Messkurve aufgenommen und durch die Zielkurve dividiert. Die entstehende Ergebnisskurve ist die Korrekturkurve.
Wenn nun die Korrekturkurve mit der Messkurve Multipliziert wird, erhält man wieder exakt die Zielkurve.
Zuletzt hab ich die Messlinie leicht verschoben, wodurch sich die einzelnen Werte der Kurve wieder leicht geändert haben. Nun bekommt man eine Spektrale Messung, deren Maximalwerte in der Nähe der Zielkurve liegen.

Wenn man die Zielkurve (anders als in diesem Beispiel) näher an der Empfindlichkeit des CCD-Chips orientiert, erhält man eine saubere Messkurve.

 

Download

zurück zum Index


  • Spectro_Analyser_V15.zip (423 kB)
    Programmordner endpacken und die Anwendung kann direkt gestartet werden (keine Installation).
    Diverse Beispielbilder sind auch dabei.
  • Spectro_Analyser_source.zip (272 kB)
    Nur C# Quellcode (keine Beispielbilder oder sonstwas).
  • Spektrometer_1.6.zip (653 kB)
    Unterstützt jetzt auch andere Auflösungen. Enthält Sourcecode und ein paar Bildbeispiele. Außerdem kann man nun auch Kameras oder Bilder ohne IR-Anteil auswerten.

zurück zum Index




 

Zuletzt geändert am: May 02 2013 um 5:39 AM

Zurück