Mikroskopie: Maßstab automatisch einfügen

Bastian Asmus

EPIPOL16QRWer kennt das nicht: Man hat jede Menge Mikrofotos geschossen und stellt später fest, dass man bei einigen Bildern die Maßstabsangabe vergessen hat! Das ist natürlich bei genau den Fotos passiert, die man sich für einen Vortrag oder eine Publikation ausgesucht hat. Ich träume schon lange von einem automatisierten System das solche Fehler verhindert, ganz so wie es bei den neueren Mikroskopen der Fall ist. Für ältere Mikroskope funktioniert das aber nicht, da die Kamera nicht mit dem Mikroskop kommuniziert. Dies, oder man hat sich eine eigene Kameraadaption hergestellt und möchte weiter mit seinem Remote Capture Programm arbeiten, an das man sich schon gewöhnt hat.

Der Artikel beschreibt zuerst welche Dinge man benötigt, welche Informationen auf welche Weise weiter gegeben werden müssen,  und stellt dann ein kleines Skript vor, dass die Aufgabe übernimmt, diese Daten in die Metadaten des gerade aufgenommen Bildes zu schreiben. Die so gewonnen Bilder können mit diesem Skript, das hier vorgestellt wird einen Massstab automatisch einfügen.

Automatische Objektiverkennung

Es gilt zunächst ein System  zu finden, dass es uns erlaubt das verwendete Objektiv zu erkennen. Mit dieser Information ermitteln wir die abgebildete Breite der Mikrographie. Auch das ist im oben genannten Artikel bereits beschrieben.

Im Artikel über QR Codes und Metadaten haben wir gesehen, wie man während des Photographierens Metadaten in Photos schreibt. Diesen Lösungsansatz verwenden wir hier auch, gestalten das Skript aber ein wenig robuster, so dass das wir sicher sein können, dass das Skript keine fehlerhaften Daten in die Photos schreibt! Folgende Lösungen bieten sich an, die Objektiverkennung umzusetzen:

  1. Ein RFID Chip am Objektiv und eine Lesespule am Mikroskop -> Klingt toll, ist aber zu umständlich
  2. Computer Vision, z.B.  opencv um die Objektivbescrhiftung zu lesen-> zu hoher Programieraufwand; was passiert wenn das Objektive seine Beschriftung auf der von der Kamera abgewandten Seite hat?
  3. Überwache nicht das Mikroskop, sondern die Aufbewahrung der Mikroskopobjektive -> Gute Idee, funktioniert aber nur bei Mikroskopen mit Einzelobjektivaufnahme
  4. Minikamera zum Lesen eines angebrachten QR Codes -> so machen wir das

Punkt 4 ist der vielverprechendste Ansatz. Ich habe  mittels eines rückstandsfrei ablösbaren doppelseitigem Klebeband einen kleinen QR Code Aufkleber am Objektiv angebracht. Als Minikamera verwende ich ein kleines USB Endoskop, eine Software wie zbar dekodiert den QR Code und einige Zeilen Bash Skript tragen dafür Sorge, dass alle Metadaten in das Bild bescribven werden. Unter Linux ist es zunächst notwendig die Kamera anzusprechen. Also stecken wir die Kamera ein und starten  das Terminal. Folgender Befehl listet den Ort auf, unter dem die Kamera gefunden wird:

Es sollte etwa folgendes ausgeben:

Da wir nun wissen, wo die Kamera ist, können wir ein wenig mit QR Codes oder anderen Barcodes spielen. Dazu nutzen wir das Programm Zbarcam, der zbar Software.

Dies öffnet ein Fenster mit einem live Bild des USB Endoskops. Wenn wir damit einen QR Code filmen, erscheint ein grüner Rahmen um den Code, wenn dieser dekodiert ist. Das Terminal gibt den dekodierten Wert des Codes zurück. Dies funktioniert im übrigen auch mit anderen, wenngleich nicht mit allen Barcodes.

terminal

Öffne das Terminal und teste ob die Kamera unter Linux ansprechbar ist.

 

livefeed

zbarcam ist eine kleine, feine Software, die es erlaubt Qr Codes zu dekodieren. Wir verwenden es für die automatiasche Objektiverkennung am Mikroskop.

Falls ihr auch fragt, welche USB-Kamera ich verwendet habe: Ich verwende die preiswerten USB  Endoskop Kameras die bei einem großen Online-Auktionshaus für um die 12 Euro verkauft werden. Die Kameras funktionieren gut mit Linux, die beigelegte Treiber CD habe ich mir gar nicht erst ansehen müssen. Die Kamera wird in einer kleinen Metallschachtel samt CD ausgeliefert. Die Auflösung ist mit 640 x 400 Pixel gering reicht aber für unsere Anwendung mehr als aus.

Nun, da die Kamera erkannt ist und das Dekodieren der  QR Codes funktioniert, haben wir einen kleinen Schritt, aber wesentlichen Schritt zur eigenen automatischen Objektiverkennung getan. Ich habe der Einfachheit halber meine Objektive durch nummeriert: Mein Epiplan POL 4x hat die Nummer 1, das Epiplan POL 8x die Nummer 2, usw. 

Als kleine Gedächtnisstütze: So stellt man einen QR Code im Terminal her:

Die Datei mit dem QR Code heisst 1.png und hat den Wert 1. Das Ganze ausdrucken, ausschneiden und aufkleben.

Nachdem wir auf jedes Objektiv einen individuellen QR Code angebracht haben, können wir mit dem Skript fortfahren.

Das Skript

Das Skript ist wirklich einfach, auch wenn es auf Anhieb vielleicht nicht so aussieht.  YAD wird für die graphische Benutzeroberfläche genutzt, tragt Sorge dafür, dass es installiert ist. Außerdem brauchen wir  die Programme zbar, avconv and inotifywait, welche alle online verfügbar sind. In meinem anderen Artikel zum QR Code ist die Installation beschrieben.

Das Skript übernimmt folgende Aufgaben:

  • Prüft ob die Kamera eingesteckt ist
  • sucht sich den richtigen Pfad zur Kamera
  • legt eine Log Datei in einem versteckten Verzeichnis .microscopy/miclog[Datum] an
  • nutzt avconv um Bilder aus dem Livefeed zu isolieren
  • die Kamera ist immer nur kurz eingeschaltet ist, wenn ein Foto gemacht wird
  • diese Standbilder werden zum Dekodieren genutzt
  • nur die zwei letzten Bilder der QR Codes werden im /tmp/ Ordner des Systems gespeichert
  • Drücke CTRL C um das Skript ordnungsgemäß zu beenden

Vielleicht noch als Hinweis: Zeile 34 definiert das Array mit den Abbildungsbreiten der Objektive. Ich habe vier Objektive, die 2,7mm, 1.4mm, 720µm und 275µm abbilden, diese haben die Nummern 1-4, welche der Position im Array entsprechen. Wenn Ihr etwas ändern wollt ,um es an eure Objektive anzupassen, denkt bitte daran!

Maßstab automatisch einfügen

Um den Maßstab automatisch einzufügen, kann das Skript aus diesem Artikel benutzt werden.

Ich bin dabei die Skripte noch etwas komfortabler zusammen zu fassen. Wenn es soweit ist, werde ich das hier vorstellen.

So, das wars mal fürs Erste. Bei Fragen, einfach fragen (;

share this
Share on LinkedInPin on PinterestShare on RedditTweet about this on TwitterShare on FacebookGoogle+

Leave a Reply