【发布时间】:2014-07-14 13:47:52
【问题描述】:
我正在使用 jpeg 编码器库 (Jpegant) 将原始 YCbCr 图像压缩为 C 中的 Jpeg。该库适用于具有单独 Y Cb 和 Cr 组件的 YCbCr 图像。同样在库中,Y、Cb、Cr流分别被编码,生成的字节在header之后写入Jpeg文件。
现在我想使用相同的库仅将 Y 流编码为灰度 Jpeg 图像。 我做的第一步是删除 Cb 和 Cr 编码。所以只有 Y 流被编码并写入文件。 生成的文件不是灰度图像,它只是垃圾。
我尝试通过在 Cb 和 Cr 中发送零流来做同样的事情,这给了我想要的东西,所以我认为问题不在于编码,而在于标题。我使用的标头在此处描述https://github.com/t27/vt-fox-1/tree/master/STM32L1_Code/encoder#basic-output-file
我在 SOF 和 SOS 部分修改了流的数量(在上述文件中注释为“nrofcomponents”)。我还从 SOF、SOS 和 DHT 部分中删除了相关的色度表/数据。我将 Y 子采样设置为 0x11。每个部分的长度也进行了修改。我也使用了 jpegsnoop,即使这样也没有错误。
唯一的问题是大多数jpeg查看器都说我的文件无效,无法显示。
我还应该在标题中更改什么?
PS:我正在创建一个 16*8(w*h) 像素阵列并一次编码 2 个 8*8 的矩阵,我已将我的 RSI 设置为 Imagewidth/16。
【问题讨论】:
-
尝试运行
jhead -v -v -v file看看jhead是否可以告诉您文件编码有什么问题。 -
@MarkSetchell jhead 使用上述命令给出的输出如下所示 pastebin.com/E8pJEDmx 我认为其中没有任何错误...
-
如何使用 ImageMagick 的
convert yourYchannel.jpg y.png来查看 ImageMagick 是否会告诉您错误并无法转换,或者是否正确转换并确认您的数据流已正确编码? -
imageMagick 说这个pastebin.com/99arb7G8 我会检查这个。我正在创建一个 16*8(w*h) 像素阵列并一次编码 2 个 8*8 的矩阵,我已将我的 RSI 设置为 Imagewidth/16
标签: image encoding jpeg grayscale