Kameras und input-erweiterung
Dieser Artikel stellt das Kameramodell, Parameter und einige Anwendungshinweise für physikalische Kameras vor sowie die Erweiterung von Eingaben durch benutzerdefinierte Kameras.

Input frame
Ein Input Frame (Eingaberahmen) ist die grundlegende Dateneinheit in AR. Es repräsentiert alle relevanten Informationen eines von einer Kamera oder anderen Datenquelle erfassten Frames. Ein Input Frame enthält typischerweise:
- Rohbilddaten (camera image)
- Kameraparameter (z.B. intrinsische Parameter)
- Zeitstempel
- Transformationsmatrix der Kamera im Weltkoordinatensystem
- Tracking-Status (tracking status)
Diese Informationen liefern den räumlich-zeitlichen Kontext für AR-Algorithmen zur Lokalisierung, Verfolgung und Darstellung.
Physikalische kamera
Aktuelle Kameras in elektronischen Geräten bestehen meist aus mehreren Linsen und Spiegeln. Zur Modellierung wird jedoch normalerweise nicht die tatsächliche optische Struktur verwendet, sondern vereinfachte Modelle.
Lochkameramodell

Dies ist das einfachste Modell: Licht fällt durch ein kleines Loch und erzeugt ein um 180 Grad gedrehtes Bild. Kameras drehen das Ausgabebild jedoch zurück. Sechs Parameter beschreiben dieses Modell: Pixelbreite/-höhe \(w, h\), Pixelbrennweite \(f_x, f_y\), Hauptpunkt-Pixelposition \(c_x, c_y\). Skalieren der Pixelabmessungen führt zu entsprechender Skalierung von Brennweite und Hauptpunkt, wobei die Bildposition erhalten bleibt.
OpenCV-kameramodell
Einige Kameras zeigen signifikante radiale und tangentiale Verzerrungen. Das OpenCV-kameramodell erweitert das Lochkameramodell um höhere Parameter zur Beschreibung dieser Verzerrungen. Radiale Verzerrung wird mit \(k_1, k_2, k_3, \cdots\), tangentiale Verzerrung mit \(p_1, p_2\) beschrieben.
Anmerkung
Einige Tracker unterstützen das OpenCV-kameramodell nicht.
OpenCV-fisheye-kameramodell
Fisheye-Kameras komprimieren große Blickwinkel durch perspektivische Projektion auf eine kleinere Bildfläche. Das OpenCV-fisheye-kameramodell ohne Verzerrungskorrektur verwendet zusätzlich zu den 6 Lochkameraparametern \(k_1, k_2, k_3, k_4, \cdots\) zur Beschreibung.
Anmerkung
Einige Tracker unterstützen das OpenCV-fisheye-kameramodell nicht.

Kamerausrichtung und bildausrichtung
Bei Smartphones stimmt bei Querhaltung (90-Grad-Drehung aus vertikaler Haltung) und Querbildschirm die Ausrichtung des Kamerabilds auf dem Display mit der realen Szene überein. Eine reine Änderung der Bildschirmanzeigerichtung ohne physische Drehung ändert die Bildausrichtung der physikalischen Kamera nicht. Bei vertikaler Haltung und vertikalem Display muss das Kamerabild um 90 Grad im Uhrzeigersinn gedreht werden, um mit der realen Szene übereinzustimmen. Bei Drehung der Bildschirmanzeige muss das Kamerabild zur Kompensation entgegengesetzt gedreht werden.
Kamerausrichtung und Bildausrichtung werden typischerweise relativ zur natürlichen Geräteausrichtung definiert:
Smartphone
Android
Android definiert eine natürliche Ausrichtung (vertikale Haltung), die auch als Referenz für den IMU-Sensor dient. Die Drehung des Kamerabilds relativ zu dieser Ausrichtung ist als Kameraparameter verfügbar.
iOS
iOS hat keine explizit definierte natürliche Ausrichtung, verwendet aber dieselbe IMU-Referenz wie Android.
Tablet
Die natürliche Ausrichtung von Tablets variiert: manche haben Querformat, andere wie Smartphones vertikales Format.
Brille
Brillen haben typischerweise eine natürliche Querausrichtung.
Beim Rendern des Kamerabilds werden Kamerausrichtung und Bildschirmausrichtung kombiniert.
Kameratyp und bildspiegelung
Smartphones haben meist Front- und Rückkameras. Bilder der Frontkamera müssen vor der Anzeige horizontal gespiegelt werden, um einen Spiegeleffekt zu erzeugen. Ohne Spiegelung wirkt die Darstellung ungewohnt.
Input-erweiterung
EasyAR unterstützt Input-Erweiterungen durch benutzerdefinierte Kameras. Diese ermöglichen den Transfer extern erfasster Input Frames in das AR-System für Tracker. Die Bilddatenerfassung kann selbst implementiert werden.
Plattformspezifische anleitungen
Die Verwendung von Kameras und Input-Erweiterungen ist plattformabhängig. Bitte beachten Sie die folgenden plattformspezifischen Anleitungen: