Kalibrierungsbeispiel Teil 1 – Device

Je nach zu kalibrierendem Messgerät kann es sinnvoll sein, die Kalibrierung im Gerät selbst zu realisieren oder auszulagern. Dieses Beispiel zeigt einen Anwendungsfall für die zweite Variante.

Ein Vermessungsgerät nutzt u.a. eine taktil erfasste Entfernung. Die Zielgenauigkeit liegt bei 0,2mm Absolut. Messungen müssen nur einzeln erfolgen, bei denen keine Bewegungen am Gerät erfolgen.

Das Gerät ist batteriebetrieben, der Einsatz für einen Arbeitstag mit einer Batteriefüllung optimiert. Daher wurden Sensoren und SoC des Gerätes u.a. auf geringen Verbrauch ausgesucht. Beim SoC heißt dies, geringere Rechenkraft zugunsten geringerer Leistungsaufnahme.

Aufgrund von Kosten, Arbeitsbereich und Größe kam keine Lösung mittels Magnetband in Frage. Statt dessen wurde die Messung optisch realisiert, mit einem Maßband mit je zusätzlicher Takt- und Signalspur.

Die Takt- und Signalspur erlauben eine absolute Bestimmung der Entfernung, sind allein aber zu ungenau. Ihre Auswertung erfolgt mittels Reflektionslichtschranken und anschließend analog realisierter Aufbereitung, an deren Ende nur noch bereinigte Flanken für den SoC generiert werden. Dieser Teil konnte damit sehr stromsparend umgesetzt werden.

Um die Zielgenauigkeit zu erreichen, wird zusätzlich die Millimeterspur als differentielles Entfernungsmaß, optisch erfasst, einbezogen. Da die Messungen nur einzeln bei Stillstand erforderlich sind, werden mit einem Bildsensor Einzelaufnahmen des Bandes in einer Messkammer vorgenommen. Die Messkammer dient der kontrollierten Ausleuchtung, welche im IR-Bereich erfolgt.

Das Bild zeigt einen Ausschnitt der UI eines Kalibrierungstools, realisiert in Qt. Zu sehen ist ein einzelnes Messbild des Vermessungsgerätes. Dieses Bild entstand bei der Entwicklung des Gerätes, die Messkammer hatte noch starke Defizite in der Ausleuchtung. Für die Erkennung solcher Problematiken ist ein Histogramm (rechts oben), wie auch ein Graph der Verteilung der Helligkeit über den Bildverlauf (cyane Linie unten) wertvoll. Eine leichte Unschärfe der Fokussierung ist dagegen als „natürlicher Weichzeichner“ gewünscht.

Das Beispiel ist hinsichtlich der Trennung Kalibrierung und Betrieb aussagekräftig, da die Bestimmung der Kalibrierungsparameter algorithmisch aufwendig ist, während auf diesen aufbauend die Messwerterfassung im Betrieb stark optimiert werden kann.

Zunächst zur Messwerterfassung im Betrieb auf dem Device: hier muss nur die Millimeterspur als ROI erfasst werden.

Die Strichlinie ist ein quasi-periodisches Helligkeitssignal in horizontaler Richtung. Die lokale Periode \(P(x)\) (Pixel pro mm) ist dabei ortsabhängig. Sind die Parameter zur Berechnung der lokalen Periode \(P(x)\) an \(x\) bekannt, können robuste Verfahren zur Bestimmung der Phasenverschiebung zum Einsatz kommen.

Die Parameter zur Berechnung der lokalen Periode werden im Zuge der Kalibrierung auf einem Desktop Rechner bestimmt und anschließend im Messgerät persistent abgelegt. Auf ihrer Grundlage berechnet das Messgerät bei jeder Messung aus dem ROI die Phasenverschiebung.

Die ersten Fehler im System entstehen bereits technologisch bedingt bei der Herstellung der Maßbänder in der Beschichtung. Der Ausschnitt zeigt Ungenauigkeiten im Druck der Linien. Kleine Beschädigungen und Verschmutzungen kommen im Laufe der Zeit hinzu.

Messkammer und Optik sind daher so ausgelegt, dass immer >20 Striche pro Einzelbild auswertbar bleiben, ein Kompromiss aus Bildbreite und Auflösung (1600 Pixeln Breite Sensor). Durch die gleichzeitige Auswertung von >20 Perioden wirkt die Korrelation wie ein breit wirkendes Matched-Filter, wodurch lokale Störungen gegenüber dem dominanten Grundanteil unterdrückt werden.

Optik und Bildsensor sind so ausgerichtet, das im Kalibrierungsmodus bei Vollbild einerseits Ziffern und Taktspur in den Messbildern enthalten sind, die Millimeterspur jedoch annähernd parallel zur Sensorebene verläuft. Hierdurch verlaufen die Striche der schmalen Millimeterspur annähernd senkrecht. Weiter ist ihre Entfernung von der Mittelachse des Sensors klein genug, so das die radialsymmetrische Verzeichnung die Linien noch nicht relevant kippt.

Dies sind die Voraussetzungen, um durch einfaches Aufsummieren der Spalten des ROIs ein 1D-Helligkeitsprofil gewinnen zu können.

I(x)=y=ysyeimage(x,y),x=0,1,,W1. I(x) = \sum_{y = y_\text{s}}^{y_\text{e}} \text{image}(x, y), \qquad x = 0, 1, \ldots, W-1.

Durch die Summation über die Zeilen steigt das Signal-zu-Rausch-Verhältnis um den Faktor \( \sqrt{y_\text{e} – y_\text{s} + 1} \) (unkorreliertes Rauschen vorausgesetzt) und es erfolgt eine Mittelung.

Bewusst wird dabei z.B. auf eine Normierung verzichtet, also KEIN

I(x)=1hy=ysyeimage(x,y)I(x) = \frac{1}{h} \sum_{y=y_s}^{y_e} \text{image}(x, y)

Diese und folgende Entscheidungen resultieren aus den Einschränkungen des SoCs, z.B. nur float hardwaremäßig zu unterstützen. Die Verfahren sind so ausgelegt, wo möglich auf Ganzzahlen zurückzugreifen und bei Operationen, die Fließkommazahlen bedingen, den Einfluss von Rundungsfehlern zu minimieren,

Auf diesem Helligkeitsprofil wurde nun eine Lock-in-Phasendetektion mit positionsabhängiger Referenzfrequenz (in der Signaltheorie: Matched Filter für ein chirp-/warped-sinusförmiges Signal) umgesetzt. Und dieses Verfahren ist sowohl robust im Sinne von Störungen als auch algorithmisch effizient umsetzbar.

Im Kern wird der Phasenwinkel \(\theta\) berechnet mittels

θ=atan2(S,C)(π,π].\theta = \mathrm{atan2}(S, C) \in (-\pi, \pi].

wobei

S=x=0W1v(x)sinφ(x)C=x=0W1v(x)cosφ(x)\begin{aligned} S &= \sum_{x=0}^{W-1} v(x)\,\sin\varphi(x)\\ C &= \sum_{x=0}^{W-1} v(x)\,\cos\varphi(x) \end{aligned}

\(W\) stellt dabei die Bildbreite, \(v(x)\) das 1D-Helligkeitsprofil zentriert, und \(\varphi(x)\) die kumulative Phase dar. Hier wird ein weiteres Potential des Ansatzes sichtbar:

φ(x)=0x2πP(ξ)dξ\varphi(x) = \int_{0}^{x} \frac{2\pi}{P(\xi)} \, d\xi

ist in unsererem Anwendungsfall diskret (wir haben das 1D Helligkeitsprofil eines Pixelbildes):

φ(x)=k=0x2πP(k)\varphi(x) = \sum_{k=0}^{x} \frac{2\pi}{P(k)}

und kann somit berechnet werden als

Δφ(x)=2πP(x)\Delta\varphi(x) = \frac{2\pi}{P(x)}

\(P(x)\) resultiert aus der Verzeichnung der Optik und der Neigung der optischen Achse zur Millimeterspur. In diesen Genauigkeitsbereich reichen Verkippung und radialsymmetrische Verzeichnung zusammengefasst und reduziert zur 2. Ordnung:

P(x)=P0+dPdx(xx0)+d2Pdx2(xx0)2[pxmm]P(x) = P_0 + \frac{dP}{dx}\,(x – x_0) + \frac{d^2P}{dx^2}\,(x – x_0)^2 \qquad \left[\frac{\text{px}}{\text{mm}}\right]

So ergeben sich vier Kalibrierungsparameter \(P_0\) (Basisperiode bei \(x_0\)), \(dP/dx\) (linearer Koeffizient), \(d^2P/dx^2\) (quadratischer Koeffizient) und \(x_0\) (Referenzposition). Diese werden von der Kalibrierungssoftware auf dem Desktop-System berechnet, an das Device übertragen und dort persistent gespeichert.

Da diese Parameter zwischen Kalibrierungen als konstant angesehen werden können, reduzieren sich \(S\) und \(C\) zu

S=x=0W1v(x)s(x)C=x=0W1v(x)c(x)\begin{aligned} S &= \sum_{x=0}^{W-1} v(x)\,s(x)\\ C &= \sum_{x=0}^{W-1} v(x)\,c(x) \end{aligned}

und \(s(x)\) und \(c(x)\) können als konstante Tabelle vorberechnet und im RAM oder ROM vorgehalten werden.

Ergänzt wird nun eine Güteberechnung, die Signalenergie \(E\):

E=x=0W1v(x)2E = \sum_{x=0}^{W-1} v(x)^2

Damit reduziert sich der Rechenaufwand für den Sinus- und Cosinus-Teil jeweils auf eine Multiplikation und eine Addition pro Spalte.

	float sin_sum = 0.0f;
	float cos_sum = 0.0f;
	float energy = 0.0f;

	for (int col = 0; col < IMAGE_WIDTH; col++)
	{
		const float value = mean - (float)one_dim[col];

		sin_sum += value * sin_col[col];
		cos_sum += value * cos_col[col];
		energy += value * value;
	}

Auf Basis der Signalenergie \(E\) wird die Konfidenz des Messwerts \(\gamma\) als normiertes Verhältnis der Korrelationsamplitude zur Signalenergie definiert:

γ=S2+C2E+εmit ε=1012\gamma = \frac{\sqrt{S^2 + C^2}}{\sqrt{E + \varepsilon}} \qquad \text{mit } \varepsilon = 10^{-12}

Der Term \(\varepsilon\) schützt pragmatisch vor Division durch Null bei einem vollständig konstanten Bild (\(v(x) \equiv 0\)).

Die Interpretation von \(\gamma\):

γ={1perfekte Korrelation (reiner Sinus)0reines Rauschen, keine periodische Struktur \gamma = \begin{cases} 1 & \text{perfekte Korrelation (reiner Sinus)} \\ 0 & \text{reines Rauschen, keine periodische Struktur} \end{cases}

Darauf aufbauend wird eine Gültigkeitsschwelle \(\gamma_\text{min}\) mit \(\gamma \geq \gamma_\text{min}\) eingeführt.

Wichtig für dieses Verfahren ist die vorherige Zentrierung des 1D Helligkeitsprofils:

I=1Wx=0W1I(x)v(x)=II(x)\begin{aligned} \bar{I} &= \frac{1}{W} \sum_{x=0}^{W-1} I(x) \\ v(x) &= \bar{I} – I(x) \end{aligned}

Die Konvention \(\bar{I} – I(x)\) (statt \(I(x) – \bar{I}\)) sorgt dafür, dass dunkle Striche, die im Bild niedrige Helligkeitswerte haben, positive Werte in \(v(x)\) liefern. Dadurch ist die Phase \(\theta\) bei einem Strich am Ursprung \(\varphi = 0\) ebenfalls \(\theta = 0\).

Zusammenfassung der Eigenschaften des Verfahrens:

  • Rauschrobust:
    Die vertikale Summation über den ROI sowie die Korrelation über die gesamte Bildbreite wirken wie ein stark mittelndes Matched-Filter.
  • Hohe Auflösung:
    Die Phasenauflösung ist durch das Rauschniveau, nicht durch die Pixel-Rasterweite begrenzt; sub-Pixel- bzw. sub-Perioden-Genauigkeit wird durch die kontinuierliche \(\mathrm{atan2}\)-Berechnung erreicht.
  • Modellgetrieben:
    Das quadratische Periodenmodell kompensiert Objektivverzeichnung und perspektivische Effekte direkt in der Referenzphase \(\varphi(x)\).
  • Deterministisch:
    Kein iteratives Optimierungsverfahren; die Laufzeit pro Bild ist konstant und vorhersagbar:
    • \(O(W \cdot H_\text{ROI})\) für Summation
    • \(O(W)\) für die Korrelation
  • Selbstdiagnose:
    Die Konfidenz \(\gamma\) liefert ein quantitatives Gütemaß für jede einzelne Messung.

Zu sehen ist ein robustes Verfahren mit geringem Rechenaufwand, sehr gut für ein Vermessungsgerät mit geringer Rechenkraft geeignet. Die nächsten Teile zeigen dagegen die Berechnungsverfahren der Kalibrierungsanwendung, welche deutlich mehr Rechenaufwand benötigen.