जियोस्पेशियल डेप्थ की मदद से रेंज बढ़ाएं

जियोस्पेशल डेप्थ हीरो

ARCore डैप्थ एपीआई, अब जियोस्पेशियल डेप्थ के साथ काम करता है. यह Streetscape Geometry के चालू होने पर, डेप्थ एपीआई की रेंज और स्पीड को अपने-आप बढ़ा देता है. जब VPS कवरेज वाले किसी स्थान पर और Streetscape ज्यामिति सक्षम हो, तो गहराई API से आउटपुट इमेज में क्षेत्र और मौजूदा स्थिति से 65 मीटर के बीच के क्षेत्र में वापस ली गई ज्यामिति शामिल होती है. ज्यामिति से मिले डेप्थ के इस डेटा को, लोकल डेप्थ ऑब्ज़र्वेशन के साथ मर्ज कर दिया जाता है. साथ ही, उपयोगकर्ता के किसी नई जगह पर जाने पर यह डेटा अपडेट हो जाता है.

ARCore depth API की मदद से, अब कैमरे से स्थानीय ऑब्ज़र्वेशन के साथ-साथ Streetscape Geometry से इमारतें और इलाके की जानकारी हासिल की जा सकती है. इन तस्वीरों को एक ही गहराई की इमेज में मर्ज किया जाता है.

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

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

परफ़ॉर्मेंस का असर

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

गहराई की सीमा

जियोस्पेशल डेप्थ के बिना, सामान्य डेप्थ वाली तस्वीरें करीब 20-30 मीटर की दूरी पर होती हैं. इससे डेप्थ के ऑब्ज़र्वेशन का घनत्व और सटीक होने की वजह, इससे ज़्यादा दूरी पर कम हो जाती है. जियोस्पेशियल डेप्थ की सुविधा चालू होने पर, आम तौर पर यह देखा जाता है कि किस जगह के सैंपल के लिए गहराई के नमूने लिए गए. इन वैल्यू का लेवल 65.535 मीटर से ज़्यादा नहीं हो सकता. भले ही, शुरुआत में थोड़ी-बहुत दूरी हो.

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

ARCore depth API का इस्तेमाल, पहले से मौजूद उन सभी उदाहरणों के लिए किया जा सकता है जिनके लिए यह सुविधा पहले से मौजूद है. जियोस्पेशियल डेप्थ की मदद से, वीपीएस की सुविधा वाली जगहों पर ली गई डेप्थ इमेज, पहले के मुकाबले ज़्यादा तेज़ी से लंबी दूरी के डेटा से भर जाएंगी. इससे, इस्तेमाल के उदाहरण के साथ, आउटडोर एनवायरमेंट की डेप्थ की जानकारी को टारगेट किया जा सकेगा. इस्तेमाल के कुछ उदाहरण:

  • वर्चुअल कॉन्टेंट और अन्य विज़ुअल इफ़ेक्ट को बड़े पैमाने पर उपलब्ध कराना
  • आउटडोर नेविगेशन
  • दूरी की माप

सीमाएं

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

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

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

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

नए ARCore सेशन में, यह पता करें कि उपयोगकर्ता के डिवाइस पर डेप्थ और जियोस्पेशियल एपीआई काम करता है या नहीं. प्रोसेसिंग पावर कम होने की वजह से, ARCore के साथ काम करने वाले सभी डिवाइस, डेप्थ एपीआई के साथ काम नहीं करते.

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

Java

Config config = session.getConfig();

// Check whether the user's device supports the Depth API.
boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC);
boolean isGeospatialSupported =
    session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED);
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.setDepthMode(Config.DepthMode.AUTOMATIC);
  config.setGeospatialMode(Config.GeospatialMode.ENABLED);
  config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
}
session.configure(config);

Kotlin

val config = session.config

// Check whether the user's device supports the Depth API.
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)
val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.depthMode = Config.DepthMode.AUTOMATIC
  config.geospatialMode = Config.GeospatialMode.ENABLED
  config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
}
session.configure(config)

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

Java

// Retrieve the depth image for the current frame, if available.
Image depthImage = null;
try {
  depthImage = frame.acquireDepthImage16Bits();
  // Use the depth image here.
} catch (NotYetAvailableException e) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
} finally {
  if (depthImage != null) {
    depthImage.close();
  }
}

Kotlin

// Retrieve the depth image for the current frame, if available.
try {
  frame.acquireDepthImage16Bits().use { depthImage ->
    // Use the depth image here.
  }
} catch (e: NotYetAvailableException) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
}

आगे क्या होगा