深度地圖會序列化為一組 XMP 屬性。在序列化過程中,深度圖會先轉換為傳統圖像格式。編碼管道包含三個步驟 (見圖 2):
- 從輸入格式 (例如浮點或 int32 值) 轉換為整數灰階圖片格式,例如位元組 (8 位元) 或字詞 (16 位元)。
- 使用標準圖片轉碼器壓縮,例如 JPEG 或 PNG。
- 序列化為 Base64 字串 XMP 屬性。
管道可以是無損或有損,具體取決於原始深度圖的位元數和用於儲存的位元數,例如 JPEG 編碼器為 8 位元,PNG 編碼器為 8 或 16 位元。
目前支援兩種不同格式:RangeLinear 和 RangeInverse。如果深度對應在編碼時會失去精確度 (例如從浮點數轉換為 8 位元時),建議使用 RangeInverse 格式。這會將更多位元分配給近距離深度值,並將較少位元分配給遠距離值,與 GPU 卡中的 Z 緩衝區運作方式類似。
如果深度圖附有信心度地圖,信心度地圖也會使用類似於深度圖的管道,轉換為傳統圖片格式。信賴度地圖一律採用 RangeLinear 格式編碼,信賴度範圍假設為 [0, 1]。
RangeLinear
假設 d 是像素的深度,而 near 和 far 是考慮的最小和最大深度值。深度值會先正規化為 [0, 1] 範圍,如下所示:
RangeInverse
假設 d 是像素的深度,而 near 和 far 是考慮的最小和最大深度值。深度值會先正規化為 [0, 1] 範圍,如下所示: