Plattformspezifische Anleitungen
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreale Engine
Mit den Augmented Images APIs in ARCore können Sie AR-Apps erstellen, mit denen 2D-Bilder in der Umgebung des Nutzers erkannt und ergänzt werden können, z. B. Poster oder Produktverpackungen.
Sie stellen eine Reihe von Referenzbildern bereit. ARCore nutzt einen Algorithmus für maschinelles Sehen, um Merkmale aus den Graustufeninformationen in jedem Bild zu extrahieren, und speichert eine Darstellung dieser Merkmale in einer oder mehreren Datenbanken für erweiterte Bilder.
Während der Laufzeit sucht ARCore auf ebenen Oberflächen in der Umgebung des Nutzers nach diesen Merkmalen. So kann ARCore diese Bilder in der realen Welt erkennen und ihre Position, Ausrichtung und Größe schätzen, falls diese nicht angegeben sind.
Leistungsspektrum
ARCore kann bis zu 20 Bilder gleichzeitig erfassen. ARCore kann nicht gleichzeitig mehrere Instanzen desselben Bildes erkennen oder verfolgen.
Jede Datenbank mit Augmented Reality-Bildern kann Informationen zu bis zu 1.000 Referenzbildern speichern. Die Anzahl der Datenbanken ist unbegrenzt, aber es kann immer nur eine Datenbank aktiv sein.
Bilder können einer Datenbank mit Augmented Reality-Bildern während der Laufzeit hinzugefügt werden, bis zu einem Limit von 1.000 Bildern pro Datenbank. Sie können zuvor erstellte Datenbanken über eine Netzwerkverbindung herunterladen.
Beim Hinzufügen eines Bilds können Sie die physische Größe des zu erkennenden Bildes angeben. Dadurch wird die Leistung der Bilderkennung verbessert.
Wenn keine physische Größe angegeben ist, schätzt ARCore die Größe und optimiert diese Schätzung im Laufe der Zeit.
Wenn eine physische Größe angegeben ist, verwendet ARCore diese Größe und schätzt die Position und Ausrichtung des Bildes. Abweichungen zwischen der scheinbaren oder tatsächlichen Größe und der angegebenen physischen Größe werden ignoriert.
ARCore kann auf Bilder reagieren und diese erfassen, die die folgenden Kriterien erfüllen:
An Ort und Stelle fixierte Bilder, z. B. ein an der Wand hängendes Bild oder ein Magazin auf einem Tisch
Bewegliche Bilder, z. B. eine Werbung auf einem vorbeifahrenden Bus oder ein Bild auf einem flachen Objekt, das der Nutzer in der Hand hält und dabei bewegt.
Sobald ARCore mit dem Tracking eines Bildes beginnt, liefert es für jeden Frame Schätzungen für die Bildposition und -ausrichtung. ARCore optimiert diese Schätzungen kontinuierlich, wenn mehr Daten erfasst werden.
Sobald ein Bild erkannt wurde, wird die Position und Ausrichtung des Bildes durch ARCore weiter „verfolgt“, auch wenn das Bild vorübergehend aus dem Kamerabild verschwindet, weil der Nutzer sein Gerät bewegt hat. In diesem Fall geht ARCore davon aus, dass die Position und Ausrichtung des Bildes statisch ist und sich das Bild nicht durch die Umgebung bewegt.
Das Tracking erfolgt ausschließlich auf dem Gerät. Zum Erkennen und Verfolgen von Bildern ist keine Internetverbindung erforderlich.
Voraussetzungen
Bilder müssen:
Sie muss mindestens 25% des Kamerabilds ausfüllen, damit sie erkannt werden kann.
Sie dürfen nicht geknickt oder um eine Flasche gewickelt sein.
Achten Sie darauf, dass Sie gut von der Kamera erfasst werden. Sie dürfen nicht teilweise verdeckt sein, aus einem sehr schrägen Winkel aufgenommen werden oder sich in einer Aufnahme befinden, bei der die Kamera zu schnell bewegt wird, sodass Bewegungsunschärfe entsteht.
CPU-Auslastung und Leistungsüberlegungen
Je nachdem, welche ARCore-Funktionen bereits aktiviert sind, kann das Aktivieren von Augmented Images die CPU-Auslastung von ARCore erhöhen. Deaktivieren Sie nicht verwendete Funktionen, wenn sie nicht benötigt werden. Dadurch stehen Ihrer App zusätzliche CPU-Zyklen zur Verfügung und die thermische Leistung sowie die Akkulaufzeit werden verbessert.
Weitere Informationen finden Sie unter Überlegungen zur Leistung.
Best Practices
Tipps zum Auswählen von Referenzbildern
- Die Auflösung des Bildes sollte mindestens 300 x 300 Pixel betragen. Bilder mit hoher Auflösung verbessern die Leistung nicht.
- Referenzbilder können im PNG- oder JPEG-Dateiformat bereitgestellt werden.
- Farbinformationen werden nicht verwendet. Sowohl farbige als auch äquivalente Graustufenbilder können als Referenzbilder oder von Nutzern zur Laufzeit verwendet werden.
- Verwenden Sie keine stark komprimierten Bilder, da dies die Merkmalsextraktion beeinträchtigt.
- Verwenden Sie keine Bilder mit vielen geometrischen Elementen oder sehr wenigen Elementen (z.B. Barcodes, QR-Codes, Logos und andere Strichzeichnungen), da dies zu einer schlechten Erkennungs- und Trackingleistung führt.
- Vermeiden Sie Bilder mit sich wiederholenden Mustern, da dies auch zu Problemen bei der Erkennung und dem Tracking führen kann.
Verwenden Sie das im ARCore SDK enthaltene Tool
arcoreimg
, um für jedes Bild einen Qualitätsfaktor zwischen0
und100
zu erhalten. Wir empfehlen einen Qualitätswert von mindestens 75. Hier sind zwei Beispiele:Beispielbild 1 Beispielbild 2 Punktzahl: 0
Punktzahl: 100
enthält sich wiederholende geometrische Elemente ausreichende Auflösung; enthält viele einzigartige Merkmale
Tipps zum Erstellen der Bilddatenbank
- Verwenden Sie das arcoreimg-Tool für Android, um eine Bilddatenbankdatei zu generieren. Dieses Tool ist nur für die Entwicklung mit Android und Android NDK verfügbar. Es ist im Unity SDK und im ARCore Unreal-Plug-in integriert.
- Die Datenbank speichert eine komprimierte Darstellung der aus den Graustufendaten in den Referenzbildern extrahierten Merkmale. Jeder Bildeintrag belegt etwa 6 KB.
- Das Hinzufügen eines Bilds zur Datenbank während der Laufzeit dauert etwa 30 ms.
- Fügen Sie Bilder in einem Worker-Thread hinzu, um den UI-Thread nicht zu blockieren.
- Mit dem
arcoreimg
-Tool, das im ARCore SDK enthalten ist, kannst du Bilder bei der Kompilierung nach Möglichkeit hinzufügen.
- Wenn Sie die voraussichtliche physische Größe eines Bildes kennen, geben Sie sie an. Diese Informationen verbessern die Erkennungs- und Trackingleistung, insbesondere bei großen physischen Bildern (über 75 cm).
- Lassen Sie nicht zu viele nicht verwendete Bilder in der Datenbank, da dies aufgrund der erhöhten CPU-Auslastung zu einer leichten Beeinträchtigung der Systemleistung führt.
Tipps zur Optimierung des Trackings
- Wenn sich das Bild nie aus seiner ursprünglichen Position bewegt, z. B. bei einem Poster, das an einer Wand befestigt ist, können Sie einen Anker am Bild anbringen, um die Stabilität des Trackings zu erhöhen.
- Das physische Bild muss für die Ersterkennung mindestens 25% des Kamerabilds einnehmen. Sie können Nutzer auffordern, das physische Bild in den Kamerarahmen zu passen.
- Verwenden Sie die geschätzte Körperhaltung und Größe des Bildes erst, wenn der Tracking-Status des Bildes „Vollständiges Tracking“ ist. Wenn ein Bild von ARCore zum ersten Mal erkannt wird und keine erwartete physische Größe angegeben wurde, wird der Tracking-Status angehalten. Das bedeutet, dass ARCore das Bild erkannt hat, aber nicht genügend Daten erfasst hat, um seine Position im 3D-Raum zu schätzen.