Profundidade e confiança da codificação

Um mapa de profundidade é serializado como um conjunto de propriedades XMP. Como parte do processo de serialização, o mapa de profundidade é convertido primeiro em um formato de imagem tradicional. O pipeline de codificação contém três etapas (veja a Figura 2):

  • Converta do formato de entrada (por exemplo, valores de ponto flutuante ou int32) para um formato de imagem de escala de cinza inteira, por exemplo, bytes (8 bits) ou palavras (16 bits).
  • Compacte usando um codec de imagem padrão, como JPEG ou PNG.
  • Serialize como uma propriedade XMP de string base64.
Figura 2. Descrição do pipeline de codificação de mapa de profundidade.

O pipeline pode ser sem perdas ou com perdas, dependendo do número de bits do mapa de profundidade original e do número de bits usados para armazená-lo, por exemplo, 8 bits para um codec JPEG e 8 ou 16 bits para um codec PNG.

No momento, dois formatos diferentes são compatíveis: RangeLinear e RangeInverse. RangeInverse é o formato recomendado se o mapa de profundidade perder a precisão quando codificado, por exemplo, ao converter de flutuante para 8 bits. Ele aloca mais bits aos valores de profundidade aproximada e menos bits aos valores distantes, de forma semelhante ao funcionamento do buffer z nos cartões GPU.

Se o mapa de confiança tiver um mapa de confiança anexado, ele também será convertido para um formato de imagem tradicional usando um pipeline semelhante ao usado para profundidade. O mapa de confiança é sempre codificado usando o formato RangeLinear, com o intervalo de confiança considerado [0, 1].

IntervaloLinear

Considere d ser a profundidade de um pixel e os valores de profundidade mínima e máxima considerados. O valor de profundidade é normalizado primeiro para o intervalo [0, 1] conforme

e quantificar para 8 ou 16 bits, conforme

Por outro lado, considerando a profundidade d8bit quantizada, é possível recuperar a profundidade d como

Intervalo inverso

Considere d ser a profundidade de um pixel e os valores de profundidade mínima e máxima considerados. O valor de profundidade é normalizado primeiro para o intervalo [0, 1] conforme

e quantificar para 8 ou 16 bits, conforme

Por outro lado, considerando o d de profundidade normalizado, é possível recuperar a profundidade d como