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

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

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

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

रॉ डेप्थ एपीआई बनाम फ़ुल डेप्थ एपीआई

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

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

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

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

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

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

लागत का हिसाब लगाएं

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

इस्तेमाल के उदाहरण

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

  • 3D रीकंस्ट्रक्शन
  • मापें
  • आकार का पता लगाने की सुविधा

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

आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.

गहराई की सुविधा चालू करें

नए ARCore सेशन में, देखें कि उपयोगकर्ता के डिवाइस में डेंसिटी की सुविधा काम करती है या नहीं. प्रोसेस करने में कम समय लगता है, इसलिए ARCore के साथ काम करने वाले सभी डिवाइस depth API के साथ काम नहीं करते हैं. संसाधनों को सेव करने के लिए, 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;
}