我正在使用jpeg编码器库(Jpegant)将原始YCbCr图像压缩为Jpeg。该库适用于YCbCr图像,该图像具有单独的Y Cb和Cr组件。同样在库中,Y,Cb和Cr流是分开编码的,生成的字节在标题后写入Jpeg文件。将原始灰度图像编码为JPEG,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)像素数组,并一次编码8 * 8的2个矩阵,我已将RSI设置为Imagewidth/16。
尝试运行'jhead -v -v -v file'来查看'jhead'是否可以告诉你任何与你的文件编码有关的错误。 –
@MarkSetchell输出jhead给出的上述命令如图所示pastebin.com/E8pJEDmx 我不认为这里面有任何错误... –
如何使用ImageMagick的'convert yourYchannel.jpg y.png'来查看ImageMagick是否告诉你什么是错误的,无法正确转换或转换,并确认你的数据流是正确编码的? –