Eine Tiefenkarte wird als Gruppe von XMP-Attributen serialisiert. Im Rahmen der Serialisierung wird die Tiefenkarte zuerst in ein herkömmliches Bildformat konvertiert. Die Codierungspipeline umfasst drei Schritte (siehe Abbildung 2):
- Konvertieren Sie das Eingabeformat (z.B. float- oder int32-Werte) in ein Ganzzahl-Graustufenbildformat, z.B. Byte (8 Bit) oder Word (16 Bit).
- Komprimieren Sie die Bilder mit einem Standard-Bildcodec wie JPEG oder PNG.
- Als Base64-String serialisieren.

Die Pipeline kann verlustfrei oder verlustbehaftet sein, je nach Anzahl der Bits der ursprünglichen Tiefenkarte und der Anzahl der Bits, die zum Speichern verwendet werden, z.B. 8 Bit für einen JPEG-Codec und 8 oder 16 Bit für einen PNG-Codec.
Derzeit werden zwei verschiedene Formate unterstützt: RangeLinear und RangeInverse. RangeInverse ist das empfohlene Format, wenn die Tiefenkarte beim Codieren an Genauigkeit verliert, z.B. bei der Konvertierung von Float in 8-Bit. Es werden mehr Bits für die nahen Tiefenwerte und weniger Bits für die fernen Werte zugewiesen, ähnlich wie der Z-Buffer auf Grafikkarten funktioniert.
Wenn der Tiefenkarte eine Vertrauenswürdigkeitskarte angehängt ist, wird auch die Vertrauenswürdigkeitskarte in ein herkömmliches Bildformat konvertiert. Dabei wird eine ähnliche Pipeline wie für die Tiefe verwendet. Die Konfidenzkarte wird immer im Format RangeLinear codiert, wobei der Konfidenzbereich als [0, 1] angenommen wird.
RangeLinear
Sei d die Tiefe eines Pixels und „near“ und „far“ die minimalen und maximalen Tiefenwerte, die berücksichtigt werden. Der Tiefenwert wird zuerst auf den Bereich [0, 1] normalisiert:
RangeInverse
Sei d die Tiefe eines Pixels und „near“ und „far“ die minimalen und maximalen Tiefenwerte, die berücksichtigt werden. Der Tiefenwert wird zuerst auf den Bereich [0, 1] normalisiert: