La API de Raw Depth proporciona datos de profundidad para una imagen de cámara que tiene una precisión más alta que los datos completos de la API de Depth, pero no siempre cubre todos los píxeles. Las imágenes de profundidad sin procesar, junto con sus imágenes de confianza coincidentes, también se pueden procesar más, lo que permite que las apps usen solo los datos de profundidad que tienen suficiente precisión para su caso de uso individual.
Compatibilidad con dispositivos
La profundidad sin procesar está disponible en todos los dispositivos que admiten la API de Depth. La API de Raw Depth, al igual que la API de Depth completa, no requiere un sensor de profundidad de hardware compatible, como un sensor de tiempo de vuelo (ToF). Sin embargo, tanto la API de Raw Depth como la API de Depth completa usan cualquier sensor de hardware compatible que pueda tener un dispositivo.
API de Depth sin procesar frente a API de Depth completa
La API de Raw Depth proporciona estimaciones de profundidad con mayor precisión, pero es posible que las imágenes de profundidad sin procesar no incluyan estimaciones de profundidad para todos los píxeles de la imagen de la cámara. Por el contrario, la API de Depth completa proporciona una profundidad estimada para cada píxel, pero los datos de profundidad por píxel pueden ser menos precisos debido al suavizado y la interpolación de las estimaciones de profundidad. El formato y el tamaño de las imágenes de profundidad son los mismos en ambas APIs. Solo difiere el contenido.
En la siguiente tabla, se ilustran las diferencias entre la API de Raw Depth y la API de Depth completa con una imagen de una silla y una mesa en una cocina.
API | Muestra | Imagen de la cámara | Imagen de profundidad | Imagen de confianza |
---|---|---|---|---|
API de Raw Depth |
|
|||
API de Full Depth |
|
N/A |
Imágenes de confianza
En las imágenes de confianza que muestra la API de Raw Depth, los píxeles más claros tienen valores de confianza más altos, y los píxeles blancos representan una confianza total, mientras que los píxeles negros representan una ausencia de confianza. En general, las regiones de la imagen de la cámara que tienen más textura, como un árbol, tendrán una mayor confianza en la profundidad sin procesar que las regiones que no la tienen, como una pared en blanco. Las superficies sin textura suelen generar una confianza de cero.
Si el dispositivo de destino tiene un sensor de profundidad de hardware compatible, es probable que la confianza en las áreas de la imagen que están lo suficientemente cerca de la cámara sea mayor, incluso en superficies sin textura.
Costo de procesamiento
El costo de procesamiento de la API de Raw Depth es aproximadamente la mitad del costo de procesamiento de la API de Depth completa.
Casos de uso
Con la API de Raw Depth, puedes obtener imágenes de profundidad que proporcionan una representación más detallada de la geometría de los objetos en la escena. Los datos de profundidad sin procesar pueden ser útiles cuando se crean experiencias de RA en las que se necesita una mayor precisión y detalle de la profundidad para las tareas de comprensión de la geometría. En algunos casos de uso se incluye lo siguiente:
- Reconstrucción 3D
- Medición
- Detección de formas
Requisitos previos
Asegúrate de comprender los conceptos fundamentales de la RA y cómo configurar una sesión de ARCore antes de continuar.
Habilita la profundidad
En una nueva sesión de ARCore, verifica si el dispositivo de un usuario admite Depth. No todos los dispositivos compatibles con ARCore admiten la API de Depth debido a limitaciones de potencia de procesamiento. Para ahorrar recursos, la profundidad está inhabilitada de forma predeterminada en ARCore. Habilita el modo de profundidad para que tu app use la API de 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.
}
Cómo obtener la imagen de profundidad sin formato más reciente
Llama a AROcclusionManager.TryAcquireEnvironmentDepthCpuImage()
y usa AROcclusionManager.environmentDepthTemporalSmoothingRequested
para obtener la imagen de profundidad sin procesar más reciente en la CPU.
Adquiere la imagen de confianza de profundidad sin procesar más reciente
Llama a AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage()
y usa AROcclusionManager.environmentDepthTemporalSmoothingRequested
para adquirir la imagen de confianza en la CPU.
// 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;
}