Prüfung und Kalibrierung des Fokusantriebs mit einfachen Mitteln
Dr. Horst Wörmann,
vom 17.12.2016
Schrittmotoren und die Ansteuerungselektronik sind heute billiger denn je; es liegt deshalb nahe, einen Schrittmotor an die z-Achse eines Mikroskops anzubauen und dadurch die Möglichkeit zu schaffen, Fokus-Stacking voll- automatisch zu betreiben. Anleitungen dazu gibt es reichlich, beispielsweise in der Arbeit von Holger Adelmann (
auf dieser Webseite, (1)), oder als ständig wiederkehrendes Thema in den Mikroskopie-Foren.
Was bisher fehlt, ist eine einfache und billige Möglichkeit, die Einrichtung zu kalibrieren, d.h. die Höhenänderung in µm pro Motorschritt zu bestimmen, weiter die Linearität der z-Achse sowie die Umkehrlose (engl. „backlash“) zu messen.
Hier wird ein optisches Verfahren vorgestellt, das keine mechanischen Eingriffe braucht und ausschließlich Optik und Kamera des Mikroskops nutzt. Weil zusätzlich nur eine Schieblehre erforderlich ist und sonst nur die schon vorhandene Apparatur nebst Software (Excel) bzw. Freeware (ImageJ), liegen die Kosten nahe Null.
Die Methode geht auf eine Veröffentlichung von Boddeke et al. zurück (2), deren Rechenmethoden aber für mich nicht nachvollziehbar waren und deshalb modifiziert wurden.
Das Verfahrensprinzip
Abb. 1 zeigt das Prinzip: das Referenzobjekt ist ein in Bezug auf die z-Achse schräg auf dem Objekttisch angeordnetes Balkenmuster oder eine Schneide. Im mikroskopischen Bild wird dann nur ein schmaler Streifen senkrecht zur Rampe scharf abgebildet, zu den Bildrändern hin wird das Objekt immer unschärfer (Abb. 2). Die Länge l und der Durchmesser der zylindrischen Auflage d werden mit der Schieblehre bestimmt. Die Steigung s der Rampe ist dann
s = d/l.
Beispiel: bei einem Objektträger der Länge l = 76 mm und dem Zylinderdurchmesser d = 2 mm ist s = 0,0263. Die Höhendifferenz Z bei einer Bildbreite X von 672 µm ist
Z = s * b = 0,0263 * 0,672 = 0,0176 mm bzw. 17,6 µm. Somit ist für jeden Ort x auf der x-Achse dessen relative Höhe z bekannt.
Die Bildbreite muss mit einem Objektmikrometer bestimmt werden, d.h. die Funktion µm/Pixel muss bekannt sein; das ist aber dem Mikroskopiker geläufig, wenn er Maßstabsbalken einfügt. Die Kamera im Beispiel hat 2584 Pixel in der Bildbreite, also 672 µm/2584 Pixel entsprechend 0,260 µm/Pixel, bestimmt aus der Kalibrierung mit dem Objektmikrometer.

Abbildung 1: Seitenansicht des Referenzobjekts. Grün: Objektträger mit Balkenmuster, A, B, C, D: 4 Stack-Ebenen, a, b, c, d: zugehörige Linien größter Schärfe (senkrecht zur Zeichnungsebene). l: wirksame Länge, d: Durchmesser des Zylinders als Auflage. X Bildbreite im Foto, Z zugehörige Höhendifferenz.
Das Referenzobjekt wird nun derart justiert, dass das Balkenmuster senkrecht zur Schärfelinie liegt. Dann wird mit der Stackeinrichtung ein Stack aufgenommen, so wie gewohnt. In der untersten Stackebene sei der Streifen maximaler Schärfe rechts im Bild; er wandert dann mit zunehmender Stackhöhe zum linken Bildrand. Leider kann Word keine animierte GIF-Ansicht des Stapels anzeigen, deshalb zeigt Abb. 2 nur ein einzelnes Bild aus dem Stapel.
In diesem Bildstapel ist der Ebenenabstand zunächst nur durch die Zahl der Stepmotorschritte definiert ist.
Im nächsten Schritt wird für jede Stackebene die In-Fokus-Position bezogen auf die x-Achse ermittelt. Dazu dient eine Kantenfilterung, hier im Beispiel das „Find Edges“-Filter aus ImageJ. Im resultierenden Bild (Abb. 3) erkennt man an der Position höchster Schärfe sehr schmale Linien, die sich zu den Rändern verbreitern. Betrachtet man einen senkrechten Schnitt durch das Bild – also entlang eines definierten x-Wertes, dann sind an der Stelle höchster Schärfe nur wenige helle Pixel, zu den Seiten nimmt die Zahl der hellen Pixel bedingt durch die Linienverbreiterung zu. Summiert man alle Intensitäten über die x-Werte, so ist die schärfste x-Position diejenige mit der niedrigsten Summe. ImageJ macht diese Bildverarbeitung automatisch.

Abbildung 2: Einzelbild aus Stack: maximale Schärfe ungefähr in der Mitte

Abbildung 3: Obiges Einzelbild nach Kantenfilterung mit ImageJ

Abbildung 4: Intensitätsauswertung von Abb. 3. x-Achse: Pixelposition im Bild, z-Achse: Intensität y als Summe der Intensitäten aller Pixel(x). Das Originalbild ist unterlegt
In ImageJ geht man also in folgenden Schritten vor: Bild laden, dann „Process“ – „Find Edges“. Das Ergebnis ist in Abb. 3 dargestellt. Das wird wie folgt quantifiziert: in ImageJ markiert man das gesamte Bild (ROI aufziehen) und geht auf „Analyze“ – „Plot Profile“. Damit wird die Intensität für alle y an jedem Punkt der x-Achse summiert und als Kurve über der Pixelposition x in einem neuen Fenster angezeigt. Abb. 4 zeigt die x-Position höchster Schärfe als Minimum der Kurve.
Das Ergebnis wird über „save“ als Excel-Datei mit den Wertepaaren Pixel-x-Nr./Intensität exportiert und kann in Excel weiter ausgewertet werden. Diese Schritte werden für jedes Stack-Bild wiederholt. In Excel liegt dann eine umfangreiche Datei der Form Pixel-x-Nummern als Zeilen und n Spalten für die Intensitäten jeder Stackebene n.

Abbildung 5: Excel-Auswertung von 11 Stackebenen. Die weiß hervorgehobene Kurve gehört zu Ebene 7, siehe Abb. 4. Zwei Kurven (orange und blau) sind nicht auswertbar: kein Minimum, die Stackebenen liegen außerhalb des Schärfebereichs
Zur Veranschaulichung erzeugt man eine Grafik wie in Abb. 5, das die Resultate von elf Stackbildern zeigt. Die Minima sind die Positionen höchster Schärfe; sie wandern entlang der x-Achse von Stack- zu Stackebene. Erkennbar ist auch, dass die Stackebenen 10 und 11 kein Minimum ergeben: in diesen Ebenen gibt es keine scharfen Bereiche, der Stack war um diese zwei Ebenen zu hoch.
Die Daten werden dann durch gleitende Mittelwertbildung über 20 Pixel geglättet (durch-gezogene Kuven in Abb. 5) und die x-Position am jeweiligen Minimum bestimmt. Der durch die Mittelung entstehende Versatz um 20 Punkte in x-Richtung ist unerheblich, weil nur die Lagedifferenzen der Maxima ausgewertet werden.
Im letzten Schritt werden die Minima jeder Kurve gesucht und die zugehörige x-Position ermittelt. Das wäre in Abb. 5 beispielsweise bei der weißen Kurve (aus der Stack-Ebene 7) die x-Position 1202. Nun ist die Zahl der Stepmotor-Schritte zwischen den Ebenen bekannt; desgleichen die x-Position, die wie oben ermittelt wurde. Wenn die Stackeinrichtung gut funktioniert, sollte sich eine Gerade ergeben, d.h. die Funktion Steps = f(Pixelnummer) ist linear: Abb. 6.

Abbildung 6: x-Position der Kurvenmaxima aufgetragen gegen die Motorschrittzahl
Aus der anfangs beschriebenen Geometrie ergibt sich bei der gemessenen Bildbreite von 2584 Pixeln (entsprechend einer Bildbreite von 672 µm) ein Höhenunterschied zwischen linker und rechter Bildkante von 17,6 µm.

Abbildung 7: Zusammenhang zwischen Motorschritten und Tischhub in µm
Zu jedem x ist also die Höhe wegen Y(x) = 0,260 x gegeben (x als Pixelnummer, 0,260 µm/Pixel aus der Objektmikrometer-Kalibrierung wie anfangs erwähnt).
Folglich kann man in der x-Achse die Pixelnummer in entsprechende Höhenwerte umrechnen, wie in Abb. 7 gezeigt. Die endgültige Kalibrierfunktion ist die Kehrfunktion aus Abb. 7:
Rel. Höhe z = 0,0294 * n – 0,483
wobei n die Zahl der Motorschritte oder wie hier die Encoderschritte ist.
Die Berechnung mit Excel ist von Hand etwas mühselig, lässt sich aber mit einem Makro oder VBA automatisieren. Von einem Kollegen an der RWTH Aachen ("nikroscope" im Mikroskopie-Forum) wird ein Softwarepaket entwickelt, das die oben beschriebenen, etwas umständlichen Arbeitsschritte automatisiert. Geplant ist, das System bei unserer Bonner MKB-Tagung am 20.04.2017 vorzuführen.
Zusammenfassung
Mit dem beschriebenen Verfahren kann man mit Schieblehre und einem geeigneten Referenzobjekt exakte Höhenbstimmungen im µm-Maßstab durchführen, aufgrund einfacher geometrischer Gesetzmäßigkeiten. Die zur Auswertung und Berechnung erforderlichen Programm sind kostenlos bzw. als Tabellenkalkulationsprogramm auf praktisch jedem Rechner vorhanden.
Technische Anmerkungen
Als Referenz habe ich hier ein metallisiertes Transmissionsgitter mit 50 Linien/mm aus dem Lehrmittelhandel benutzt. Prinzipiell sind auch zwei Rasierklingenschneiden - parallel zueinander auf dem Objektträger aufgeklebt – verwendbar. Je mehr Kanten im Bild sind, desto empfindlicher ist aber die Methode.
Der Zwischenraum zwischen den Linien oder Schneiden muss sauber sein, anderenfalls werden die Kanten von Schmutzpartikeln ebenfalls in die Kantenfilterung einbezogen, was zu hohem Störsignal führt.
Die geometrischen Verhältnisse in Abb. 1 sind vereinfacht dargestellt, zur korrekten Berechnung sei auf die Veröffentlichung von Boddeke (2) verwiesen.
Dank
Herrn Dr. Jan-Gero Schlötel (LIMES-Institut der Universität Bonn) danke ich für wertvolle Hinweise und Anleitungen zur Berechnung, insbesondere mit ImageJ.
Literatur
(1) H.G. Adelmann:
Eine Schrittmotorsteuerung zur Aufnahme von volumetrischen Daten am Mikrsokop. Mechanisches, elektronisches und Software-Design sowie Beispiele für 3D-Rekonstruktionen. Wiss. Mitteilungen Ausgabe XI, Nr. 5, Seiten 149-156, Okt. 1997
(2) F.R. Boddeke, L.J. van Vliet, I.T. Young:
Calibration of the automated z-axis of a microscope using focus functions.
Journal of Micrsocopy Vol. 186, pt. 3, June 1997, pp. 270 – 274
(3) Der vorliegende Artikel als PDF zum Herunterladen:
Stacking: Prüfung und Kalibrierung des Fokusantriebs mit einfachen Mitteln

Abbildung 8: Animiertes GIF des im Artikel verwendeten Z-Stapels vom Messgitter