Utiliser Raw Depth dans votre application Android AR Foundation

L'API Raw Depth fournit des données de profondeur pour une image d'appareil photo plus précises que les données de l'API Depth complète, mais ne couvre pas toujours tous les pixels. Les images de profondeur brutes, ainsi que les images de confiance correspondantes, peuvent également être traitées plus en détail, ce qui permet aux applications d'utiliser uniquement les données de profondeur suffisamment précises pour leur cas d'utilisation individuel.

Compatibilité avec les appareils

La profondeur brute est disponible sur tous les appareils compatibles avec l'API Depth. Comme l'API Depth complète, l'API Raw Depth ne nécessite pas de capteur de profondeur matériel compatible, tel qu'un capteur de temps de vol (ToF). Toutefois, l'API Raw Depth et l'API Depth complète utilisent tous les capteurs matériels compatibles dont un appareil peut disposer.

API Depth brute par rapport à l'API Depth complète

L'API Raw Depth fournit des estimations de profondeur plus précises, mais les images de profondeur brutes peuvent ne pas inclure d'estimations de profondeur pour tous les pixels de l'image de la caméra. En revanche, l'API Depth complète fournit une profondeur estimée pour chaque pixel, mais les données de profondeur par pixel peuvent être moins précises en raison du lissage et de l'interpolation des estimations de profondeur. Le format et la taille des représentations de profondeur sont identiques dans les deux API. Seul le contenu diffère.

Le tableau suivant illustre les différences entre l'API Depth Raw et l'API Depth complète à l'aide d'une image d'une chaise et d'une table dans une cuisine.

API Renvoie Image de l'appareil photo Image de profondeur Image de confiance
API Raw Depth
  • Image de profondeur brute contenant une estimation de la profondeur très précise pour certains, mais pas tous, les pixels de l'image de l'appareil photo.
  • Image de confiance qui donne l'indice de confiance de chaque pixel d'image de profondeur brut. Les pixels de l'image de l'appareil photo qui ne disposent pas d'estimation de la profondeur ont un niveau de confiance nul.
API Full Depth
  • Une seule image de profondeur "lisse" contenant une estimation de la profondeur pour chaque pixel.
  • Aucune image de confiance n'est fournie avec cette API.
N/A

Images de confiance

Dans les images de confiance renvoyées par l'API Raw Depth, les pixels plus clairs ont des valeurs de confiance plus élevées, les pixels blancs représentant une confiance totale et les pixels noirs une confiance nulle. En règle générale, les régions de l'image de la caméra qui présentent plus de texture, comme un arbre, ont une confiance en profondeur brute plus élevée que les régions qui n'en présentent pas, comme un mur vide. Les surfaces sans texture donnent généralement un indice de confiance de zéro.

Si l'appareil cible dispose d'un capteur de profondeur matériel compatible, le niveau de confiance dans les zones de l'image suffisamment proches de la caméra sera probablement plus élevé, même sur des surfaces sans texture.

Coût de calcul

Le coût de calcul de l'API Raw Depth est d'environ la moitié du coût de calcul de l'API Depth complète.

Cas d'utilisation

Avec l'API Raw Depth, vous pouvez obtenir des images de profondeur qui fournissent une représentation plus détaillée de la géométrie des objets de la scène. Les données de profondeur brutes peuvent être utiles lorsque vous créez des expériences de RA nécessitant une précision et des détails de profondeur accrus pour les tâches de compréhension de la géométrie. Voici quelques cas d'utilisation :

  • Reconstruction 3D
  • Mesure
  • Détection de formes

Prérequis

Avant de continuer, assurez-vous de bien comprendre les concepts fondamentaux de la RA et de savoir configurer une session ARCore.

Activer la profondeur

Dans une nouvelle session ARCore, vérifiez si l'appareil de l'utilisateur est compatible avec Depth. Tous les appareils compatibles avec ARCore ne sont pas compatibles avec l'API Depth en raison de contraintes de puissance de traitement. Pour économiser des ressources, la profondeur est désactivée par défaut sur ARCore. Activez le mode Profondeur pour que votre application utilise l'API Depth.

var occlusionManager = // Typically acquired from the Camera game object.

// Check whether the user's device supports the Depth API.
if (occlusionManager.descriptor?.supportsEnvironmentDepthImage)
{
    // If depth mode is available on the user's device, perform
    // the steps you want here.
}

Acquérir la dernière image de profondeur brute

Appelez AROcclusionManager.TryAcquireEnvironmentDepthCpuImage() et utilisez AROcclusionManager.environmentDepthTemporalSmoothingRequested pour acquérir la dernière image de profondeur brute sur le processeur.

Acquérir la dernière image de confiance de profondeur brute

Appelez AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage() et utilisez AROcclusionManager.environmentDepthTemporalSmoothingRequested pour acquérir l'image de confiance sur le processeur.

// Attempt to get the latest environment depth image.
if (occlusionManager && occlusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage(out XRCpuImage image))
{
    using (image)
    {
        UpdateRawImage(m_RawEnvironmentDepthConfidenceImage, image);
    }
}
else
{
    m_RawEnvironmentDepthConfidenceImage.enabled = false;
}