Ham Depth API, kamera görüntüleri için tam Depth API verilerinden daha yüksek doğruluk oranına sahip derinlik verileri sağlar ancak her pikseli her zaman kapsamaz. Ham derinlikli görüntüler ve eşleşen güven resimleri de daha ayrıntılı şekilde işlenebilir. Böylece uygulamalar, yalnızca kendi kullanım alanları için yeterli doğrulukta olan derinlik verilerini kullanabilir.
Cihaz uyumluluğu
Ham Derinlik, Depth API'yi destekleyen tüm cihazlarda kullanılabilir. Tam Depth API gibi ham Depth API de, uçuş süresi (ToF) sensörü gibi desteklenen bir donanım derinlik sensörü gerektirmez. Ancak hem Raw Depth API hem de Full Depth API, cihazlarda desteklenen tüm donanım sensörlerinden yararlanır.
Ham Depth API ile full Depth API karşılaştırması
Ham Depth API, daha yüksek doğrulukla derinlik tahminleri sağlar ancak ham derinlikli görüntüler, kamera görüntüsündeki tüm pikseller için derinlik tahminlerini içermeyebilir. Buna karşılık, full Depth API 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 görüntülerin biçimi ve boyutu her iki API'de de aynıdır. Yalnızca içerik farklıdır.
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 | İadeler | Kamera resmi | Derinlik resmi | Güven resmi |
---|---|---|---|---|
Ham Depth API'sı |
|
![]() |
![]() |
![]() |
Full Depth API'sı |
|
![]() |
![]() |
Yok |
Güven resimleri
Ham Depth API tarafından döndürülen güven görüntülerinin güvenirlik değeri daha yüksektir. Beyaz pikseller tam güveni, siyah pikseller ise güvenilirliği temsil eder. Genel olarak, kamera görüntüsünde daha fazla dokuya sahip olan bölgelerin (ör. ağaç) ham derinlik güveni, boş duvar gibi olmayan bölgelere göre daha yüksek olur. Dokusuz yüzeyler genellikle sıfır güvenir.
Hedef cihazda desteklenen bir donanım derinlik sensörü varsa, dokusuz yüzeylerde bile resmin kameraya yeterince yakın olan alanlarına duyulan güven daha yüksek olabilir.
İşlem maliyeti
Ham Depth API'nin işlem maliyeti, tam Depth API'nin işlem maliyetinin yaklaşık yarısıdır.
Kullanım alanları
Ham Depth API ile sahnedeki nesnelerin geometrisinin daha ayrıntılı bir şekilde gösterildiği derinlikli görüntüler elde edebilirsiniz. Ham derinlik verileri, geometriyi anlama görevleri için daha fazla derinlikte doğruluğun ve ayrıntının gerekli olduğu AR deneyimleri oluştururken faydalı olabilir. Bazı kullanım alanları şunlardır:
- 3D rekonstrüksiyon
- Ölçüm
- Şekil algılama
Ön koşullar
Temel artırılmış gerçeklik kavramlarını anladığınızdan emin olun ve devam etmeden önce ARCore oturumunun nasıl yapılandırılacağı hakkında daha fazla bilgi edinin.
Derinliği etkinleştir
Yeni bir ARCore oturumunda, kullanıcı cihazının Derinliği destekleyip desteklemediğini kontrol edin. İşlem gücü kısıtlamaları nedeniyle ARCore uyumlu cihazların hepsi Depth API'yi desteklemez. Kaynaklardan tasarruf etmek için ARCore'da derinlik varsayılan olarak devre dışıdı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 ham derinlik görüntüsünü edinin
AROcclusionManager.TryAcquireEnvironmentDepthCpuImage()
çağırın ve CPU'da en son ham derinlikli görüntüyü almak için AROcclusionManager.environmentDepthTemporalSmoothingRequested
kullanın.
En son ham derinlik güven görüntüsünü edinin
AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage()
çağırın ve CPU'ya ilişkin güven resmini elde etmek için AROcclusionManager.environmentDepthTemporalSmoothingRequested
işlevini 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;
}