رمزگذاری عمق و اطمینان

نقشه عمقی به عنوان مجموعه ای از ویژگی های XMP سریال می شود . به عنوان بخشی از فرآیند سریال سازی، نقشه عمقی ابتدا به فرمت تصویر سنتی تبدیل می شود. خط لوله رمزگذاری شامل سه مرحله است (شکل 2 را ببینید):

  • از قالب ورودی (مثلاً مقادیر float یا int32) به یک قالب تصویر با مقیاس خاکستری عدد صحیح، به عنوان مثال بایت (8 بیت) یا کلمات (16 بیت) تبدیل کنید.
  • فشرده سازی با استفاده از یک کدک تصویر استاندارد، به عنوان مثال JPEG یا PNG.
  • سریال به عنوان ویژگی XMP رشته base64.
شکل 2. شرح خط لوله رمزگذاری نقشه عمقی.

بسته به تعداد بیت های نقشه عمقی اصلی و تعداد بیت های استفاده شده برای ذخیره آن، خط لوله می تواند بدون تلفات یا تلفات باشد، به عنوان مثال 8 بیت برای کدک JPEG و 8 یا 16 بیت برای کدک PNG.

دو فرمت مختلف در حال حاضر پشتیبانی می شوند: RangeLinear و RangeInverse . در صورتی که نقشه عمقی هنگام کدگذاری دقت خود را از دست بدهد، به عنوان مثال هنگام تبدیل از شناور به 8 بیت، فرمت پیشنهادی RangeInverse است. بیت‌های بیشتری را به مقادیر عمق نزدیک و بیت‌های کمتری را به مقادیر دور اختصاص می‌دهد، به روشی مشابه با نحوه عملکرد z-buffer در کارت‌های GPU.

اگر نقشه عمق دارای یک نقشه اطمینان ضمیمه شده باشد، نقشه اطمینان نیز با استفاده از خط لوله مشابهی که برای عمق استفاده می شود، به فرمت تصویر سنتی تبدیل می شود. نقشه اطمینان همیشه با استفاده از فرمت RangeLinear کدگذاری می‌شود و محدوده اطمینان [0، 1] در نظر گرفته می‌شود.

محدوده خطی

فرض کنید d عمق یک پیکسل و نزدیک و دور حداقل و حداکثر عمق در نظر گرفته شود. مقدار عمق ابتدا در محدوده [0، 1] به عنوان نرمال می شود

سپس به 8 یا 16 بیت کوانتیزه کنید

برعکس، با توجه به عمق کوانتیزه d 8bit ، می توان عمق d را به عنوان بازیابی کرد

RangeInverse

فرض کنید d عمق یک پیکسل و نزدیک و دور حداقل و حداکثر عمق در نظر گرفته شود. مقدار عمق ابتدا در محدوده [0، 1] به عنوان نرمال می شود

سپس به 8 یا 16 بیت کوانتیزه کنید

برعکس، با توجه به عمق نرمال شده d n ، می توان عمق d را به عنوان بازیابی کرد