Mapa głębi jest zserializowana jako zestaw właściwości XMP. W ramach procesu serializacji mapa głębi jest najpierw konwertowana na tradycyjny format obrazu. Potok kodowania zawiera 3 kroki (patrz rysunek 2):
- Konwertuj z formatu wejściowego (np. liczby zmiennoprzecinkowe lub int32) na format liczby całkowitej w skali szarości, np. bajty (8 bitów) lub słowa (16-bitowe).
- Kompresuj je za pomocą standardowego kodeka graficznego, np. JPEG lub PNG.
- Serializuję jako usługę ciągu XMP typu ciąg znaków base64.
Potok może być bezstratny lub stratny w zależności od liczby pierwotnych map głębi i liczby bitów, na których jest przechowywany, np. 8 bitów dla kodeka JPEG i 8 lub 16 bitów dla kodeka PNG.
Obecnie obsługiwane są 2 różne formaty: RangeLinear i RangeInverse. Parametr RangeInverse jest zalecanym formatem, jeśli po zdobyciu kodowania głębi głębi wystąpi dokładność, np. w przypadku konwersji z liczby zmiennoprzecinkowej na 8-bitowej. Przypisuje więcej bitów do wartości zbliżonych do głębokości, a mniej bitów do wartości skrajnych, podobnie jak działanie z-bufora na kartach GPU.
Jeśli mapa głębokości jest dołączona z mapą ufności, mapa ufności jest również konwertowana na tradycyjny format obrazu przy użyciu funkcji podobnego do potoku używanego w przypadku głębi. Mapa ufności jest zawsze kodowana w formacie RangeLinear, przy czym zakres ufności wynosi [0, 1].
Zakres liniowy
Musi to być głębokość piksela, a przy tym wartość minimalna i maksymalna. Wartość głębokości jest najpierw normalizowana do zakresu [0, 1] jako
następnie kwitujesz do 8 lub 16 bitów jako
I na odwrót – kwadratowa głębokość 8-bitowa pozwala przywrócić głębokość d.
Odmiana zakresu
Musi to być głębokość piksela, a przy tym wartość minimalna i maksymalna. Wartość głębokości jest najpierw normalizowana do zakresu [0, 1] jako
następnie kwitujesz do 8 lub 16 bitów jako
I na odwrót – przy znormalizowanej głębokości d głębokość może odzyskać d