12位灰度jpeg到8位灰度jpeg C/C++;

12位灰度jpeg到8位灰度jpeg C/C++;,c,C,作为一项任务,我需要在不使用任何库文件或头文件(math.h和stdio.h除外)的情况下将12位jpeg图像转换为BMP文件,甚至禁止使用string.h。我已经编写了大部分代码,现在我可以将8位jpeg转换为BMP,但我不知道12位jpeg是如何工作的,我不知道如何将12位jpeg文件转换为8位jpeg (我的源代码是c语言) 我需要一个了解12位jpeg如何工作的好来源 如果有可能的话,如果有人能帮助我进行转换,那就太好了。12位jpeg看起来就像8位jpeg。从压缩方面更容易了解它是如何

作为一项任务,我需要在不使用任何库文件或头文件(math.h和stdio.h除外)的情况下将12位jpeg图像转换为BMP文件,甚至禁止使用string.h。我已经编写了大部分代码,现在我可以将8位jpeg转换为BMP,但我不知道12位jpeg是如何工作的,我不知道如何将12位jpeg文件转换为8位jpeg

(我的源代码是c语言)

我需要一个了解12位jpeg如何工作的好来源
如果有可能的话,如果有人能帮助我进行转换,那就太好了。

12位jpeg看起来就像8位jpeg。从压缩方面更容易了解它是如何工作的,但一旦您了解到解压缩是简单的


对于12位JPEG,在进行DCT变换之前,DCT步骤从每个像素值中减去2^11。显然,DCT的结果会更大一些,但这没什么大不了的。您仍然可以选择最大的系数并存储这些系数,就像您对8位jpeg所做的那样。

您真的自己对jpeg解压缩进行了编码吗?那太令人印象深刻了。如果你能做到这一点,那么你应该能够很容易地理解如何处理任意深度的JPEG图像。当然,有了这些限制,这是一个疯狂的分配。但这不是一个很好的理由关闭它作为“主题外,库请求”。12位jpeg是一种非常奇特的格式,你确定你想要它吗?如果你的作业没有明确说明你必须做12位,你可能不会。基本图像处理部分对我来说并不新鲜,哈夫曼编码和DCT部分是我最大的问题,然后,我学习和阅读了很多示例代码,并创建了我的最终代码。我目前正在考虑将cromatic颜色值除以16得到0-255,但它似乎在一般情况下不起作用。JPEG压缩标准不是免费提供的。直接从标准集团处购买约70美元。如果您有用户访问权限,例如通过您的uni,那么您比我们大多数人更能阅读和理解该标准。如果没有,请你的教授给我讲讲。非常感谢,所以如果我把像素值从12位排列到8位就足够了。我担心我可能需要更换8x8 huffman块system@BerkTaskin:否,12位深度JPEG仍具有8x8 DCT。至于输出,我不知道您是否打算生成8位BMP,但如果是,那么您必须将值除以2^4