अपने एआर फ़ाउंडेशन Android ऐप्लिकेशन में रॉ डेप्थ का इस्तेमाल करें

रॉ डेप्थ एपीआई, ऐसी कैमरा इमेज के लिए डेप्थ का डेटा उपलब्ध कराता है जो फ़ुल डेप्थ एपीआई के डेटा से ज़्यादा सटीक होती है. हालांकि, इसमें हर पिक्सल की जानकारी शामिल नहीं होती. रॉ डेप्थ इमेज और उनसे मेल खाने वाली कॉन्फ़िडेंस इमेज को भी प्रोसेस किया जा सकता है. इससे ऐप्लिकेशन, सिर्फ़ उस डेप्थ डेटा का इस्तेमाल कर पाएंगे जो उनके अलग-अलग इस्तेमाल के उदाहरण के लिए सटीक हो.

मेरे डिवाइस पर यह सुविधा काम नहीं करती

रॉ डेप्थ की सुविधा, डेप्थ एपीआई के साथ काम करने वाले सभी डिवाइसों पर उपलब्ध है. फ़ुल डेप्थ एपीआई की तरह रॉ डेप्थ एपीआई के लिए, काम करने वाले हार्डवेयर डेप्थ सेंसर की ज़रूरत नहीं होती. जैसे, फ़्लाइट का टाइम-ऑफ़-फ़्लाइट (ToF) सेंसर. हालांकि, रॉ डेप्थ एपीआई और फ़ुल डेप्थ एपीआई, दोनों ही ऐसे हार्डवेयर सेंसर का इस्तेमाल करते हैं जो डिवाइस पर काम करते हैं.

रॉ डेप्थ एपीआई बनाम पूरी डेप्थ एपीआई

रॉ डेप्थ एपीआई, ज़्यादा सटीक होने के साथ गहराई का अनुमान देता है. हालांकि, ऐसा हो सकता है कि रॉ डेप्थ वाली इमेज में, कैमरा इमेज के सभी पिक्सल के लिए गहराई के अनुमान शामिल न हों. इसके उलट, पूरी डेप्थ एपीआई हर पिक्सल के लिए अनुमानित डेप्थ की जानकारी देता है. हालांकि, डेप्थ के अनुमान को बेहतर तरीके से इस्तेमाल करने और इंटरपोलेशन की वजह से, हर पिक्सल की डेप्थ का डेटा कम सटीक हो सकता है. दोनों एपीआई में, डेप्थ इमेज का फ़ॉर्मैट और साइज़ एक जैसा है. सिर्फ़ कॉन्टेंट अलग होता है.

नीचे दी गई टेबल में, रॉ डेप्थ एपीआई और फ़ुल डेप्थ एपीआई के बीच के अंतर को दिखाया गया है. इसके लिए, किचन में मौजूद कुर्सी और टेबल की इमेज का इस्तेमाल किया गया है.

एपीआई रिटर्न कैमरे की इमेज डेप्थ इमेज कॉन्फ़िडेंस इमेज
रॉ डेप्थ एपीआई
  • गहराई वाली रॉ इमेज, जिसमें कैमरा इमेज के कुछ पिक्सल के लिए, कुछ पिक्सल के लिए बिलकुल सटीक अनुमान दिया गया हो.
  • एक कॉन्फ़िडेंस इमेज, जो रॉ डेप्थ इमेज के हर पिक्सल के लिए कॉन्फ़िडेंस इमेज देती है. जिन कैमरा इमेज पिक्सल का डेप्थ का अनुमान नहीं लगाया जाता उनका कॉन्फ़िडेंस लेवल शून्य होता है.
पूरी गहराई से एपीआई
  • सिंगल "स्मूद" डेप्थ इमेज, जिसमें हर पिक्सल के लिए डेप्थ का अनुमान होता है.
  • इस एपीआई के साथ कोई कॉन्फ़िडेंस इमेज नहीं दी गई है.
लागू नहीं

कॉन्फ़िडेंस इमेज

रॉ डेप्थ एपीआई से मिलने वाली कॉन्फ़िडेंस इमेज में, हल्के पिक्सल का कॉन्फ़िडेंस वैल्यू ज़्यादा होती है. इसमें, सफ़ेद पिक्सल और काले रंग के पिक्सल से कोई कॉन्फ़िडेंस वैल्यू नहीं मिलती. आम तौर पर, कैमरा इमेज में मौजूद उन इलाकों की रॉ डेप्थ कॉन्फ़िडेंस इन जगहों के मुकाबले ज़्यादा होती है जहां ऐसा नहीं होता. जैसे, पेड़. जैसे: खाली दीवार. बिना बनावट वाली सतहें आम तौर पर शून्य मानती हैं.

अगर टारगेट किए गए डिवाइस में, काम करने वाला हार्डवेयर डेप्थ सेंसर मौजूद है, तो इमेज में कैमरे के काफ़ी करीब मौजूद जगहों पर भरोसे की संभावना ज़्यादा होगी. भले ही, उनमें कोई बनावट न हो.

कंप्यूट कॉस्ट

रॉ डेप्थ एपीआई की कंप्यूट लागत, फ़ुल डेप्थ एपीआई के लिए कंप्यूट की कुल लागत का आधा होता है.

उपयोग के उदाहरण

रॉ डेप्थ एपीआई की मदद से, इमेज की गहराई से जुड़ी जानकारी इकट्ठा की जा सकती है. इससे सीन में मौजूद ऑब्जेक्ट की ज्यामिति के बारे में ज़्यादा जानकारी मिलती है. एआर डेप्थ का रॉ डेटा, एआर के अनुभवों को बनाते समय काफ़ी मददगार हो सकता है. इसमें ज्यामिति को समझने वाले टास्क के लिए, ज़्यादा सटीक जानकारी और डेप्थ की ज़रूरत होती है. इस्तेमाल के कुछ उदाहरण:

  • 3D रीकंस्ट्रक्शन
  • आकलन
  • आकार का पता लगाना

ज़रूरी शर्तें

पक्का करें कि आपको एआर के बुनियादी सिद्धांतों के बारे में पता हो साथ ही, आगे बढ़ने से पहले ARCore सेशन को कॉन्फ़िगर करने का तरीका जानें.

डेप्थ की सुविधा चालू करें

नए ARCore सेशन में, देखें कि उपयोगकर्ता के डिवाइस में 'डेप्थ' सुविधा काम करती है या नहीं. प्रोसेसिंग पावर कम होने की वजह से, ARCore के साथ काम करने वाले सभी डिवाइस, डेप्थ एपीआई के साथ काम नहीं करते. संसाधन सेव करने के लिए, ARCore पर डिफ़ॉल्ट रूप से 'डेप्थ' सेटिंग बंद होती है. अपने ऐप्लिकेशन में डेप्थ एपीआई इस्तेमाल करने के लिए, डेप्थ मोड चालू करें.

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.
}

नई रॉ डेप्थ इमेज पाएं

AROcclusionManager.TryAcquireEnvironmentDepthCpuImage() पर कॉल करें और AROcclusionManager.environmentDepthTemporalSmoothingRequested का इस्तेमाल करके सीपीयू पर सबसे नई रॉ डेप्थ इमेज पाएं.

नई रॉ डेप्थ कॉन्फ़िडेंस इमेज पाएं

सीपीयू पर कॉन्फ़िडेंस इमेज पाने के लिए, AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage() पर कॉल करें और AROcclusionManager.environmentDepthTemporalSmoothingRequested का इस्तेमाल करें.

// 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;
}