Głębokość kodowania i pewność siebie

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.
Rysunek 2. Opis potoku kodowania głębi.

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