एन्कोडिंग की गहराई और कॉन्फ़िडेंस

डेप्थमैप को XMP प्रॉपर्टी के सेट के तौर पर क्रम से लगाया जाता है. सीरियलाइज़ेशन प्रोसेस के तहत, डेप्थमैप को पहले पारंपरिक इमेज फ़ॉर्मैट में बदला जाता है. एनकोडिंग पाइपलाइन में तीन चरण होते हैं (दूसरी इमेज देखें):

  • इनपुट फ़ॉर्मैट (जैसे, फ़्लोट या int32 वैल्यू) को पूर्णांक ग्रेस्केल इमेज फ़ॉर्मैट में बदलें. जैसे, बाइट (8 बिट) या शब्द (16-बिट).
  • स्टैंडर्ड इमेज कोडेक का इस्तेमाल करके कंप्रेस करें. जैसे, JPEG या PNG.
  • XMP प्रॉपर्टी को base64 स्ट्रिंग के तौर पर क्रम से लगाएं.
दूसरी इमेज. डेप्थमैप एन्कोडिंग पाइपलाइन की जानकारी.

पाइपलाइन में डेटा का नुकसान हो सकता है या नहीं भी हो सकता है.यह इस बात पर निर्भर करता है कि ओरिजनल डेप्थमैप में कितने बिट हैं और उसे सेव करने के लिए कितने बिट का इस्तेमाल किया गया है. उदाहरण के लिए, JPEG कोडेक के लिए 8 बिट और PNG कोडेक के लिए 8 या 16 बिट.

फ़िलहाल, दो अलग-अलग फ़ॉर्मैट इस्तेमाल किए जा सकते हैं: RangeLinear और RangeInverse. अगर डेप्थमैप को कोड में बदलने पर, उसकी सटीक जानकारी कम हो जाती है, तो RangeInverse फ़ॉर्मैट का इस्तेमाल करने का सुझाव दिया जाता है. उदाहरण के लिए, फ़्लोट को 8-बिट में बदलते समय. यह पास की डेप्थ वैल्यू को ज़्यादा बिट और दूर की वैल्यू को कम बिट असाइन करता है. यह उसी तरह काम करता है जिस तरह जीपीयू कार्ड में z-बफ़र काम करता है.

अगर डेप्थमैप में कॉन्फ़िडेंस मैप अटैच है, तो कॉन्फ़िडेंस मैप को भी इमेज के पुराने फ़ॉर्मैट में बदल दिया जाता है. इसके लिए, डेप्थमैप के लिए इस्तेमाल की गई पाइपलाइन का ही इस्तेमाल किया जाता है. कॉन्फ़िडेंस मैप को हमेशा RangeLinear फ़ॉर्मैट का इस्तेमाल करके एन्कोड किया जाता है. इसमें कॉन्फ़िडेंस रेंज को [0, 1] माना जाता है.

RangeLinear

मान लें कि d किसी पिक्सल की डेप्थ है. साथ ही, near और far, डेप्थ की कम से कम और ज़्यादा से ज़्यादा वैल्यू हैं. गहराई की वैल्यू को पहले [0, 1] रेंज में इस तरह से सामान्य किया जाता है

इसके बाद, इसे 8 या 16 बिट में बदलें.

इसके उलट, क्वांटाइज़ की गई डेप्थ d8bit दिए जाने पर, डेप्थ d को इस तरह से वापस पाया जा सकता है

RangeInverse

मान लें कि d किसी पिक्सल की डेप्थ है. साथ ही, near और far, डेप्थ की कम से कम और ज़्यादा से ज़्यादा वैल्यू हैं. गहराई की वैल्यू को पहले [0, 1] रेंज में इस तरह से सामान्य किया जाता है

इसके बाद, इसे 8 या 16 बिट में बदलें.

इसके उलट, सामान्य की गई गहराई dn दिए जाने पर, गहराई d को इस तरह से वापस पाया जा सकता है