Image processing JPEG压缩:实现哈夫曼编码

Image processing JPEG压缩:实现哈夫曼编码,image-processing,encoding,jpeg,huffman-code,Image Processing,Encoding,Jpeg,Huffman Code,我正在努力实现一个JPEG编码器,它应该只支持一种JPEG格式: 基线JPEG 3个通道(Y、Cr、Cb) 4:2:0二次抽样 交织模式 我完成了最初的步骤(颜色转换、子采样、DCT、量化和Z字形重新排序),现在我坚持使用哈夫曼编码 假设我有一个32x16像素的小图像。这将导致两个MCU,其中每个MCU的编码如下: 在Huffman编码之前使用两个MCU my数组的值如下所示: +-------+-------+-------+-------+------+------+-------+-

我正在努力实现一个JPEG编码器,它应该只支持一种JPEG格式:

  • 基线JPEG
  • 3个通道(Y、Cr、Cb)
  • 4:2:0二次抽样
  • 交织模式
我完成了最初的步骤(颜色转换、子采样、DCT、量化和Z字形重新排序),现在我坚持使用哈夫曼编码

假设我有一个32x16像素的小图像。这将导致两个MCU,其中每个MCU的编码如下:

在Huffman编码之前使用两个MCU my数组的值如下所示:

+-------+-------+-------+-------+------+------+-------+-------+-------+-------+------+------+
| Y00_0 | Y10_0 | Y01_0 | Y11_0 | Cb_0 | Cr_0 | Y00_1 | Y10_1 | Y01_1 | Y11_1 | Cb_1 | Cr_1 |
+-------+-------+-------+-------+------+------+-------+-------+-------+-------+------+------+
其中每个单元由1个直流值和63个交流值组成

我正在努力将哈夫曼编码应用于这些值。据我所知,之前实际的哈夫曼编码DPCM应用于DC值,而RLE应用于AC值。但这是JPEG中使用的改进哈夫曼编码的内部步骤,还是以前可以进行的实际预处理


此外,我是否必须对每个8x8块进行独立编码,或者将所有DC值合并到一个流中,将所有AC值合并到另一个流中,并在多个8x8 AC值块上应用RLE?

DC和AC前缀代码在熵编码段中交错。查看现有的编码器或解码器可能会有所帮助。例如,DC和AC前缀码在熵编码段中交织。查看现有的编码器或解码器可能会有所帮助。例如