Aprende a usar la API de Scene Semantics en tus propias apps.
La API de Scene Semantics permite a los desarrolladores comprender la escena que rodea al usuario, ya que proporciona información semántica en tiempo real basada en modelos de AA. Si se proporciona una imagen de una escena al aire libre, la API muestra una etiqueta para cada píxel en un conjunto de clases semánticas útiles, como cielo, edificio, árbol, ruta, acera, vehículo, persona y mucho más. Además de las etiquetas de píxeles, la API de Scene Semantics también ofrece valores de confianza para cada etiqueta de píxeles y una forma fácil de consultar la prevalencia de una etiqueta determinada en una escena al aire libre.
De izquierda a derecha, ejemplos de una imagen de entrada, la imagen semántica de las etiquetas de píxeles y la imagen de confianza correspondiente:
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 Scene Semantics
En una nueva sesión de ARCore, verifica si el dispositivo de un usuario admite la API de Scene Semantics. No todos los dispositivos compatibles con ARCore admiten la API de Scene Semantics debido a limitaciones de potencia de procesamiento.
Para ahorrar recursos, Scene Semantics está inhabilitada de forma predeterminada en ARCore. Habilita el modo semántico para que tu app use la API de Scene Semantics.
En ARCoreExtensionsConfig, establece el modo de semánticas en Habilitado.
Si usas iOS, también debes habilitar la semántica en la configuración del proyecto:
- Navega a Edit > Project Settings > XR Plug-In Management > ARCore Extensions.
- En Funciones opcionales, selecciona Semántica en iOS.
Obtén la imagen semántica
Una vez que se habilita la semántica de escenas, se puede recuperar la imagen semántica. La imagen semántica es una imagen TextureFormat.R8
, en la que cada píxel corresponde a una etiqueta semántica definida por SemanticLabel
.
Usa ArSemanticManager.TryGetSemanticTexture()
para adquirir la imagen semántica:
if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
using (semanticImage)
{
// Use the semantic image here.
}
}
Las imágenes semánticas de salida deberían estar disponibles después de 1 a 3 fotogramas desde el inicio de la sesión, según el dispositivo.
Obtén la imagen de confianza
Además de la imagen semántica, que proporciona una etiqueta para cada píxel, la API también proporciona una imagen de confianza de los valores de confianza de píxeles correspondientes. La imagen de confianza es una imagen TextureFormat.Alpha8
, en la que cada píxel corresponde a un valor en el rango [0, 255]
, que corresponde a la probabilidad asociada con la etiqueta semántica de cada píxel.
Usa ArSemanticManager.TryGetSemanticConfidenceTexture()
para adquirir la imagen de confianza semántica:
if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
using (semanticConfidenceImage)
{
// Use the semantic confidence image here.
}
}
Las imágenes de confianza de salida deberían estar disponibles después de 1 a 3 fotogramas desde el inicio de la sesión, según el dispositivo.
Cómo consultar la fracción de píxeles de una etiqueta semántica
También puedes consultar la fracción de píxeles en el fotograma actual que pertenecen a una clase en particular, como el cielo. Esta consulta es más eficiente que mostrar la imagen semántica y realizar una búsqueda por píxeles de una etiqueta específica. La fracción que se muestra es un valor de número de punto flotante en el rango [0.0, 1.0]
.
Usa ArSemanticManager.GetSemanticLabelFraction()
para adquirir la fracción de una etiqueta determinada:
var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);