Profundidad y confianza de la codificación

Un mapa de profundidad se serializa como un conjunto de propiedades XMP. Como parte del proceso de serialización, el mapa de profundidad se convierte primero en un formato de imagen tradicional. La canalización de codificación contiene tres pasos (ver la Figura 2):

  • Convierte el formato de entrada (por ejemplo, valores de número de punto flotante o int32) a un formato de imagen de escala de grises entero, p. ej., bytes (8 bits) o palabras (16 bits).
  • Comprima con un códec de imagen estándar, p.ej., JPEG o PNG.
  • Serializa como una propiedad XMP de string base64.
Figura 2: Descripción de la canalización de codificación del mapa de profundidad.

La canalización puede tener pérdidas o pérdidas, según la cantidad de bits del mapa de profundidad original y la cantidad de bits usados para almacenarla, p.ej., 8 bits para un códec JPEG y 8 o 16 bits para un códec PNG.

Actualmente, se admiten dos formatos diferentes: RangeLinear y RangeInverse. RangeInverse es el formato recomendado si el mapa de profundidad perderá precisión cuando se codifique, p.ej., al convertir de float a 8 bits. Asigna más bits a los valores de profundidad cercana y menos bits a los valores lejanos, de manera similar al funcionamiento del búfer z en las tarjetas de GPU.

Si el mapa de profundidad tiene un mapa de confianza adjunto, este también se convierte a un formato de imagen tradicional con una canalización similar a la que se usa para la profundidad. El mapa de confianza siempre se codifica con el formato RangeLinear, con el rango de confianza supuesto [0, 1].

Lineal

Sean d la profundidad de un píxel, y los valores de profundidad mínimos y máximos considerados cercanos y lejanos. El valor de profundidad se normaliza primero al rango [0, 1] como

cuantificar a 8 o 16 bits como

Por el contrario, dada la profundidad cuantizada d8bit, se puede recuperar profundidad d como

Invernadero

Sean d la profundidad de un píxel, y los valores de profundidad mínimos y máximos considerados cercanos y lejanos. El valor de profundidad se normaliza primero al rango [0, 1] como

cuantificar a 8 o 16 bits como

Por el contrario, dada la profundidad normalizada dn, uno puede recuperar profundidad d como