将 YUV 转换为 PNG 的损失

信息处理 图像压缩
2022-02-05 21:20:06

我有一张 YUV 420NV12 图像。我正在使用 ffmpeg 将 YUV 文件转换为 PNG,然后再转换回 YUV。

ffmpeg -s 640x480 -pix_fmt nv12 -i testold.yuv test-640x480 test.png
ffmpeg -i test.png -s 640x480 -pix_fmt nv12 testnew.yuv

当我比较两个 YUV 文件时,几乎没有区别。我希望 PNG 是一种无损压缩。两个文件不同的原因是什么?

1个回答

PNG 格式对于 RGB24 图像数据是无损的。然而,从 YUV 到 RGB24 的转换并不是无损的,因为这两种格式对色彩空间的量化不同。

为了看到这一点,以下动画 gif 是通过将您的两个ffmpeg操作来回应用 200 次并将生成的 200 个图像整理到 gif 中而制作的。

在此处输入图像描述

相比之下,以下 gif 是使用yuv444pYUV 格式而不是nv12. 这种格式不进行二次采样/尽可能多的量化。 在此处输入图像描述