DCT的输入值是多少

What are the input values for DCT?

本文关键字:多少 输入 DCT      更新时间:2023-10-16

所以我正在尝试编写一个简单的bmp到jpeg图像转换程序。如您所知,jpeg压缩、DCT、量化和熵编码有三个主要步骤。我想将在每个中间阶段计算的值写入一个文件。

现在我的问题是,在我将每个像素的RGB值转换为YUV格式并将其存储到3个单独的2-D阵列中之后,是否在每个阵列上计算DCT?因此,给我3个不同的数组应用DCT?如果这是正确的,那么下一步将是量化对应于Y、U和V的每个阵列。然后必须对这些2-D阵列中的每个阵列应用熵编码。

这3个数组是如何组合/写入一个文件的,以便它们可以作为.jpeg文件读取?

首先,我建议您下载jpeg规范。

您必须为每个颜色通道独立计算DCT:因此,对于YUV颜色空间,您必须为每一个Y8x8块计算一个DCT,一个用于U通道,另一个用于V通道。

大多数情况下,U和V通道是二次采样的:这意味着每个U和V有2或4个Y块。

应用DCT后,您可以量化每个DCT:不同的通道通常需要不同的量化表(jpeg规范建议使用正确的表)。

然后使用霍夫曼算法对量化结果进行编码:您可以将交错(一到4个Y块后面跟着1个U和1个V块)或线性模式(首先是所有Y块,然后是所有U和V块)中的每个颜色通道转储到jpeg流。

jpeg流可以包含RST标签,RST标签在字节丢失的情况下重新同步解码。

但你确实需要具备jpeg规格才能完成这项任务。