将 12 位整数 (12i) 或 16 位整数 (16i) 转化为 16 位浮点数 (16f) 编码(或者反向转化)通常很有用或者非常必要。像这样在编码之间来回转化时,变换应尽可能无损以避免图像质量下降,这一点非常重要。
在 Flame Premium 和 Smoke 中,通常需要在导入过程中将 16i 媒体升级到 16f,以最大程度提高合成和其他操作的精度。如果需要转化回 16i 进行输出,应该仅在能够确保处理过程中导出时可以保持最大精度的情况下才执行此操作。
同样,在 Flame Reactor 中使用 12i 媒体时,它将会升级到 16f。
从 16i 对数编码转化
有多种 16 位整数对数编码,但几乎没有标准。因此,很难就如何转化这些图像给出通用性的建议。
若要将 16i 图像从对数空间转化为场景线性,可通过以下选项完成:
- 如果您知道图像在 ADX16 颜色空间中,则可以使用 film/ADX/ 目录中的 ADX16_to_ACES 变换,该变换会考虑胶片通道串扰并提供更精确的颜色。或者,您也可以使用 film/LogLin/ 目录中的 Log_to_Lin--adx16 变换,这是一个简单的 1D-LUT 样式变换,其可反转程度略高一些,可以在来回转化过程中轻松地转化回 16i。
- 或者,请尝试 film/LogLin 目录中的其他 Log_to_Lin 变换之一。但请注意,这些变换针对每个通道独立操作。这意味着它们在颜色复制方面不太精确,但可反转程度更高,在来回转化过程中出现的错误要比 ADX 变换更少。
从 12i 和 16i 视频编码转化
bitdepth/ 目录中提供了一些特殊变换,可将 12i 或 16i 图像从视频类空间转化为场景线性 16f,然后转化回 16i,同时尽可能地保留原始值。
- 12i_to_16f 和 16f_to_12i 变换旨在提供无损的来回转化。
- 16i_to_16f 和 16f_to_16i 变换旨在将量化损失降到最低,来回转化时的最大错误为 65535 中的 2 个代码值。
但是,由于 12i_to_16f 和 16i_to_16f 与典型的反向色调贴图大不相同,您应分别使用 16f_to_12i 或 16f_to_16i 作为显示变换以及输出变换(如果在来回转化过程中转化回 12i 或 16i)。
此外,请注意,这些变换不适合与所有操作配合使用。例如,对于调整大小和包括空间过滤的其他操作,其在场景线性空间中的结果与视频空间中的结果大相径庭。特别是,Lanczos 过滤器具有较大的负系数,可能会导致一些瑕疵,例如,在高对比度边缘出现环或光晕。在这些情况下,您应考虑使用其他变换来执行转化:
- 使用 log-to-linear 变换(如 film/LogLin/ 目录中的 Log_to_Lin--jzp)进行导入,并使用其反向变换(如 Lin_to_Log--jzp)进行查看和导出。
- 使用某一变换(如 gamma/ 目录中的 remove_2.40_gamma)进行导入,并使用其反向变换(如 apply_2.40_gamma)进行查看和导出。这样可以最大程度地减少光晕,但会在来回转化时导致精度受损更严重。