Table of Contents

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.

camera

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

pinhole camera

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.

fisheye camera

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: