DCT的输入值是多少
What are the input values for DCT?
所以我正在尝试编写一个简单的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规格才能完成这项任务。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 如果我不知道每个列表中有多少个数字,我如何将给定数量的数字列表作为输入?
- 如何创建一个递归函数来显示有多少元音具有输入
- need else 参数只出现一次,无论在循环中输入多少字符串
- GCC通过输入源代码进行了多少次通过
- 根据输入文本对单词进行排序,具体取决于重复多少次
- 如何计算在Sentinel Loop C 中输入多少次输入
- DCT的输入值是多少
- 在计算使用了多少个数组索引的同时,如何填充一个来自用户输入的字符的数组?(使用cin.get)
- 当用户确定将输入多少个数字时,需要程序来乘以用户输入
- 如何显示用户花费的号码,即用户输入了多少时间
- 在不知道要输入多少个int的情况下,如何在c++的一行中输入多个int呢?
- c++中可以作为输入的字符数组的最大长度是多少?
- 控制台应用程序-用户可以为c++中的整数变量输入的最高值是多少