Table of Contents

Kameras und Eingabeerweiterungen

Dieser Artikel stellt das Kameramodell, Parameter und weitere Verwendungshinweise für physische Kameras sowie die Erweiterung der Eingabe mit einer custom camera vor.

camera

Input frame

Ein input frame ist eine grundlegende Dateneinheit in AR. Er repräsentiert alle zugehörigen Informationen eines Frames, der von einer Kamera oder einer anderen Datenquelle erfasst wurde. Ein input frame enthält normalerweise:

  • Raw image data (camera image)
  • Kameraparameter (z. B. intrinsics)
  • Timestamp
  • Camera transform matrix in Weltkoordinaten
  • Tracking status

Diese Informationen liefern AR-Algorithmen die raumzeitlichen Kontextdaten, die für localization, tracking, rendering und andere Aufgaben benötigt werden.

Physische Kamera

Kameras, die derzeit in elektronischen Geräten verwendet werden, bestehen normalerweise aus mehreren Linsen und Spiegeln. In der Regel werden jedoch keine tatsächlichen optischen Strukturen zum Aufbau eines Kameramodells verwendet, sondern vereinfachte Modelle.

Pinhole camera model

pinhole camera

Dies ist das einfachste üblicherweise verwendete Modell. Licht fällt durch ein kleines Loch und erzeugt ein um 180 Grad gedrehtes Bild, aber die von der Kamera ausgegebenen Daten richten das Bild auf. Zur Beschreibung dieses Modells werden sechs Parameter benötigt: Pixelbreite und -höhe \(w, h\), Pixelfokallängen \(f_x, f_y\) und Pixelpositionen des principal point \(c_x, c_y\). Wenn Pixelbreite und -höhe skaliert werden, werden auch Pixelfokallängen und principal point-Positionen entsprechend skaliert, sodass die Bildposition unverändert bleiben kann.

OpenCV camera model

Einige Kameras weisen deutliche radiale und tangentiale distortion auf. Das OpenCV camera model ergänzt das pinhole camera model um Parameter höherer Ordnung zur Beschreibung von radial distortion und tangential distortion. Radial distortion wird durch \(k_1, k_2, k_3, \cdots\) beschrieben. Tangential distortion wird durch \(p_1, p_2\) beschrieben.

Anmerkung

Einige trackers unterstützen das OpenCV camera model nicht.

OpenCV fisheye camera model

Eine fisheye camera verwendet perspective projection, um Inhalte mit großem Sichtwinkel in einen kleineren Bildbereich zu komprimieren. Das OpenCV fisheye camera model enthält keine distortion correction. Basierend auf den sechs Parametern des pinhole camera model verwendet es \(k_1, k_2, k_3, k_4, \cdots\) zur Beschreibung.

Anmerkung

Einige trackers unterstützen das OpenCV fisheye camera model nicht.

fisheye camera

Kameraausrichtung und Bildausrichtung

Auf Mobiltelefonen wird das von der rückseitigen Kamera ausgegebene Bild auf dem Bildschirm in derselben Richtung wie die reale Szene angezeigt, wenn das Telefon üblicherweise horizontal gehalten wird (90 Grad gegen den Uhrzeigersinn aus der normalen Hochformat-Haltung gedreht) und die Anzeigeausrichtung des Bildschirms ebenfalls horizontal ist. Wenn nur die Anzeigeausrichtung des Bildschirms geändert wird, ohne die physische Bildschirmausrichtung zu ändern, ändert sich die Bildausrichtung, die von der physischen Kamera ausgegeben wird, nicht. Wenn das Telefon normal im Hochformat gehalten wird und die Anzeigeausrichtung des Bildschirms ebenfalls normales Hochformat ist, muss das Bild der rückseitigen Kamera um 90 Grad im Uhrzeigersinn gedreht werden, bevor es auf dem Bildschirm angezeigt wird, damit es mit der realen Szene übereinstimmt. Wenn die Anzeigeausrichtung des Bildschirms rotiert, erfordert das rendering des Kamerabildes eine umgekehrte Rotationskompensation, damit es mit der realen Szene übereinstimmt.

Kameraausrichtung und Bildausrichtung werden normalerweise relativ zur natural orientation des Geräts definiert:

  • Telefon

    • Android

      Android definiert eine natural orientation, nämlich die Richtung, in der das Telefon normalerweise im Hochformat gehalten wird. Die inertial measurement unit (IMU) verwendet diese Richtung ebenfalls als Referenz. Der Rotationswinkel des Kameraausgabebildes relativ zu dieser Richtung kann als Kameraparameter abgerufen werden.

    • iOS

      Unter iOS ist natural orientation zwar nicht ausdrücklich definiert, die inertial measurement unit verwendet jedoch dieselbe Referenz wie Android.

  • Tablet

    Bei einigen Tablets ist die natural orientation horizontal, bei anderen wie bei Telefonen normales Hochformat.

  • Brille

    Die natural orientation von Brillen ist normalerweise horizontal.

Beim rendering des Kamerabildes werden Kameraausrichtung und Bildschirmausrichtung gemeinsam berücksichtigt.

Kameratyp und camera flip

Mobiltelefone haben im Allgemeinen eine rückseitige und eine frontseitige Kamera. Das von der frontseitigen Kamera ausgegebene Bild muss horizontal gespiegelt werden, bevor es auf dem Bildschirm angezeigt wird, um einen Spiegel zu simulieren. Ohne horizontale Spiegelung wirkt es sehr ungewohnt.

Eingabeerweiterung

EasyAR unterstützt Eingabeerweiterungen über eine custom camera. Eine custom camera kann input frames aus externen Quellen abrufen und an das AR-System übertragen, damit trackers sie verwenden können. Die Erfassung von Bilddaten für die custom camera können Sie selbst implementieren.

Plattformspezifische Anleitungen

Die Verwendung von Kameras und Eingabeerweiterungen ist eng mit der Plattform verbunden. Beachten Sie für Ihre Zielplattform die folgenden Anleitungen: