目前,我正尝试在FFMPEG上使用RGB24对H264进行无损压缩。但是,H264压缩(RGB24 -> YUV444)中使用的颜色空间转换已经证明是有损的(我猜是因为量化错误)。在使用无损的RGB24压缩文件之前,我还能使用什么(例如程序)将我的H264文件无损地转换成YUV吗?
最终目标是压缩RGB24文件,然后解压缩它,解压缩后的文件与原始文件完全匹配。例如RGB24 -> YUV444 ->压缩YUV44 ->解压YUV444 -> RGB24。
这有可能吗?
发布于 2014-03-19 15:55:49
这是我回答的一个副本/粘贴:RGB-frame encoding - FFmpeg/libav
让我们来看看颜色空间的转换。
void YUVfromRGB(double& Y, double& U, double& V, const double R, const double G, const double B)
{
Y = 0.257 * R + 0.504 * G + 0.098 * B + 16;
U = -0.148 * R - 0.291 * G + 0.439 * B + 128;
V = 0.439 * R - 0.368 * G - 0.071 * B + 128;
}并插入一些虚拟值:
R = 255, G = 255, B = 255
Y = 235
R = 0, G = 0, B = 0
Y = 16如您所见,0 -> 255的范围压缩到16 -> 235。因此,我们已经证明在RGB颜色空间中有些颜色在(数字) YUV颜色空间中是不存在的。因此,根据定义,转换是有损的。
https://stackoverflow.com/questions/22496938
复制相似问题