একটি ডেপথম্যাপ XMP বৈশিষ্ট্যের একটি সেট হিসাবে ক্রমিক করা হয়। সিরিয়ালাইজেশন প্রক্রিয়ার অংশ হিসাবে, ডেপথম্যাপটি প্রথমে একটি ঐতিহ্যগত চিত্র বিন্যাসে রূপান্তরিত হয়। এনকোডিং পাইপলাইনে তিনটি ধাপ রয়েছে (চিত্র 2 দেখুন):
- ইনপুট বিন্যাস (যেমন ফ্লোট বা int32 মান) থেকে একটি পূর্ণসংখ্যা গ্রেস্কেল চিত্র বিন্যাসে রূপান্তর করুন, যেমন বাইট (8 বিট) বা শব্দ (16-বিট)।
- একটি স্ট্যান্ডার্ড ইমেজ কোডেক ব্যবহার করে কম্প্রেস করুন, যেমন JPEG বা PNG।
- একটি base64 স্ট্রিং XMP সম্পত্তি হিসাবে সিরিয়ালাইজ করুন।
পাইপলাইনটি ক্ষতিহীন বা ক্ষতিকর হতে পারে, মূল ডেপথম্যাপের বিটের সংখ্যা এবং এটি সংরক্ষণ করতে ব্যবহৃত বিটের সংখ্যার উপর নির্ভর করে, যেমন একটি JPEG কোডেকের জন্য 8 বিট এবং একটি PNG কোডেকের জন্য 8 বা 16 বিট।
দুটি ভিন্ন ফরম্যাট বর্তমানে সমর্থিত: RangeLinear এবং RangeInverse । RangeInverse হল প্রস্তাবিত বিন্যাস যদি এনকোড করার সময় ডেপথম্যাপ নির্ভুলতা হারাবে, যেমন ফ্লোট থেকে 8-বিটে রূপান্তর করার সময়। এটি কাছাকাছি গভীরতার মানগুলিতে আরও বিট এবং দূরের মানগুলিতে কম বিট বরাদ্দ করে, একইভাবে জিপিইউ কার্ডগুলিতে জেড-বাফার কীভাবে কাজ করে।
যদি ডেপথম্যাপে একটি সংযুক্ত কনফিডেন্স ম্যাপ থাকে, তাহলে কনফিডেন্স ম্যাপটিকে গভীরতার জন্য ব্যবহৃত একটি পাইপলাইনের অনুরূপ ব্যবহার করে একটি ঐতিহ্যবাহী চিত্র বিন্যাসে রূপান্তরিত করা হয়। কনফিডেন্স ম্যাপ সবসময় রেঞ্জলিনিয়ার ফরম্যাট ব্যবহার করে এনকোড করা হয়, কনফিডেন্স রেঞ্জ [0, 1] বলে ধরে নেওয়া হয়।
রেঞ্জলিনিয়ার
ধরা যাক d একটি পিক্সেলের গভীরতা, এবং কাছাকাছি এবং দূরে সর্বনিম্ন এবং সর্বাধিক গভীরতার মান বিবেচনা করা হয়। গভীরতার মান প্রথমে [0, 1] পরিসরে স্বাভাবিক করা হয়
তারপর 8 বা 16 বিট হিসাবে পরিমাপ করুন বিপরীতভাবে, পরিমাপকৃত গভীরতা d 8 বিট দেওয়া হলে, কেউ গভীরতা d পুনরুদ্ধার করতে পারেরেঞ্জইনভার্স
ধরা যাক d একটি পিক্সেলের গভীরতা, এবং কাছাকাছি এবং দূরে সর্বনিম্ন এবং সর্বাধিক গভীরতার মান বিবেচনা করা হয়। গভীরতার মান প্রথমে [0, 1] পরিসরে স্বাভাবিক করা হয়
তারপর 8 বা 16 বিট হিসাবে পরিমাপ করুন বিপরীতভাবে, স্বাভাবিককৃত গভীরতা d n দেওয়া হলে, কেউ d হিসাবে গভীরতা পুনরুদ্ধার করতে পারে