Ham Depth API, tam Depth API verilerinden daha yüksek doğrulukta olan bir kamera resmi için derinlik verileri sağlar ancak her pikseli her zaman kapsamaz. Ham derinlikli resimler, eşleşen güven görüntüleriyle birlikte daha da işlenebilir. Böylece uygulamalar, yalnızca kendi kullanım alanları için yeterli doğrulukta derinlik verilerini kullanabilir.
Cihaz uyumluluğu
Ham Derinlik, Depth API'yi destekleyen tüm cihazlarda kullanılabilir. Tam Derinlik API'sinde olduğu gibi, Ham Derinlik API'si de uçuş zamanı (ToF) sensörü gibi desteklenen bir donanım derinlik sensörü gerektirmez. Bununla birlikte, hem Raw Depth API hem de Full Depth API, bir cihazda desteklenen donanım sensörlerinden yararlanır.
Ham Depth API - Full Depth API karşılaştırması
Ham Derinlik API'si daha yüksek doğrulukla derinlik tahminleri sağlar, ancak ham derinlikli resimler, kamera görüntüsündeki tüm pikseller için derinlik tahminleri içermeyebilir. Buna karşılık, tam Derinlik API'si her piksel için tahmini derinlik sağlar, ancak derinlik tahminlerinin yumuşatılması ve interpolasyonu nedeniyle piksel başına derinlik verilerinin doğruluğu daha düşük olabilir. Derinlikli resimlerin biçimi ve boyutu her iki API'de de aynıdır. Yalnızca içerik farklı.
Aşağıdaki tabloda, mutfaktaki bir sandalye ve masa resmi kullanılarak Ham Depth API ile Full Depth API arasındaki farklar gösterilmektedir.
API | İlerlemeler | Kamera resmi | Derinlik resmi | Güven resmi |
---|---|---|---|---|
Ham Derinlik API'si |
|
|||
Tam Derinlik API'sı |
|
Yok |
Güven resimleri
Ham Derinlik API'si tarafından döndürülen güven görüntülerinde, daha açık pikseller daha yüksek güven değerlerine sahiptir; beyaz pikseller tam güveni, siyah pikseller güveni temsil etmez. Genel olarak, kamera görüntüsünde ağaç gibi daha fazla dokuya sahip bölgeler (ör. ağaç) olmayan bölgelere (ör. boş duvar) göre daha yüksek ham derinlik güvenine sahiptir. Dokusuz yüzeyler genellikle sıfır güven sağlar.
Hedef cihazda desteklenen bir donanım derinlik sensörü varsa görüntünün kameraya yeterince yakın olan alanları dokusuz yüzeylerde bile daha yüksek olabilir.
İşlem maliyeti
Ham Depth API'nin işlem maliyeti, Full Depth API'nin işlem maliyetinin yaklaşık yarısıdır.
Kullanım alanları
Ham Derinlik API'sı ile sahnedeki nesnelerin geometrisinin daha ayrıntılı bir temsilini sağlayan derinlikli resimler elde edebilirsiniz. Ham derinlik verileri, geometriyi anlama görevleri için daha yüksek derinlik doğruluğu ve ayrıntısının gerekli olduğu AR deneyimleri oluştururken faydalı olabilir. Kullanım alanlarından bazıları şunlardır:
- 3D rekonstrüksiyon
- Ölçüm
- Şekil algılama
Ön koşullar
Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.
Derinliği Etkinleştir
Yeni bir ARCore oturumunda, kullanıcının cihazının Derinliği destekleyip desteklemediğini kontrol edin. ARCore uyumlu cihazların tümü, işlem gücü kısıtlamaları nedeniyle Depth API'yi desteklemez. Kaynakları kaydetmek için, derinlik ARCore'da varsayılan olarak devre dışı bırakılır. Uygulamanızın Depth API'yi kullanması için derinlik modunu etkinleştirin.
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.
}
En yeni işlenmemiş derinlikli resmi edinin
CPU'daki en son ham derinlikli görüntüyü elde etmek için AROcclusionManager.TryAcquireEnvironmentDepthCpuImage()
numaralı telefonu arayın ve AROcclusionManager.environmentDepthTemporalSmoothingRequested
aracını kullanın.
En yeni ham derinlik güven görüntüsünü edinin
CPU'daki güven görüntüsünü elde etmek için AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage()
numaralı telefonu arayın ve AROcclusionManager.environmentDepthTemporalSmoothingRequested
aracını kullanın.
// 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;
}