Kodlama derinliği ve güvenilirlik

Derinlik haritası, bir dizi XMP özelliği olarak serileştirilir. Serileştirme sürecinde derinlik haritası önce geleneksel bir resim biçimine dönüştürülür. Kodlama işlem hattı üç adımdan oluşur (bkz. Şekil 2):

  • Giriş biçiminden (ör. kayan veya int32 değerleri) tam sayı gri tonlamalı resim biçimine (ör. bayt (8 bit) veya kelime (16 bit)) dönüştürün.
  • JPEG veya PNG gibi standart bir resim codec'i kullanarak sıkıştırın.
  • Base64 dizesi XMP özelliği olarak serileştirin.
Şekil 2. Derinlik haritası kodlama ardışık düzeninin açıklaması.

Orijinal derinlik haritasının bit sayısına ve bunu depolamak için kullanılan bit sayısına bağlı olarak (ör. JPEG codec için 8 bit, PNG codec için 8 veya 16 bit) işlem hattı kayıpsız ya da kayıplı olabilir.

Şu anda iki farklı biçim desteklenmektedir: RangeLinear ve RangeInverse. Derinlik haritası kodlanırken (ör. kayan sayıdan 8 bit'e dönüştürülürken) hassasiyetini kaybedecekse RangeInverse biçimi önerilir. GPU kartlarındaki z-arabelleğinin çalışma şekline benzer şekilde, yakın derinlik değerlerine daha fazla bit, uzak değerlere ise daha az bit ayırır.

Derinlik haritasına güven haritası eklenmişse güven haritası da derinlik için kullanılan benzer bir işlem hattı kullanılarak geleneksel bir resim biçimine dönüştürülür. Güven haritası her zaman RangeLinear biçiminde kodlanır ve güven aralığının [0, 1] olduğu varsayılır.

RangeLinear

d, bir pikselin derinliği, near ve far ise dikkate alınan minimum ve maksimum derinlik değerleri olsun. Derinlik değeri önce [0, 1] aralığına normalleştirilir.

ardından 8 veya 16 bit olarak nicelendirin.

Bunun tersine, nicelenmiş derinlik d8bit verildiğinde derinlik d şu şekilde kurtarılabilir:

RangeInverse

d, bir pikselin derinliği, near ve far ise dikkate alınan minimum ve maksimum derinlik değerleri olsun. Derinlik değeri önce [0, 1] aralığına normalleştirilir.

ardından 8 veya 16 bit olarak nicelendirin.

Bunun tersine, normalleştirilmiş derinlik dn verildiğinde derinlik d şu şekilde elde edilebilir: