用于逐步JPEG压缩的代码

时间:2013-08-10 20:50:32

标签: image jpeg emgucv steganography image-conversion

JPEG压缩步骤如下:

原始图片数据 - >前向DCT - >量化 - >熵编码 - > JPEG图片

有许多转换器和API,转换过程是单个API调用。我无法找到一步一步的代码。我的问题是,我在哪里可以找到每个步骤的代码,或者我可以逐个执行这些单独的步骤并生成标准的JPEG图像?我正在使用EmguCV进行图像隐写项目。

1 个答案:

答案 0 :(得分:3)

  

我在哪里可以找到每个步骤的代码

如果C库可能是您的候选者,您应该看一下用{C}编写的jpec轻量级JPEG编码器 - 请注意它只支持灰度图像。

主编码功能(jpec_enc_run)易于阅读,并通过内部功能提供上述每个步骤:

/* open = write JPEG headers */
jpec_enc_open(e);

while (jpec_enc_next_block(e)) {
  /* compute the DCT for the current 8x8 block */
  jpec_enc_block_dct(e);

  /* quantize the DCT coefficients for the current block */
  jpec_enc_block_quant(e);

  /* re-order the quantized coefficients with the zig-zag pattern */
  jpec_enc_block_zz(e);

  /* perform entropy coding of the current block and write to the global buffer*/
  e->hskel->encode_block(e->hskel->opq, &e->block, e->buf);
}

/* close = write JPEG end of image marker */
jpec_enc_close(e);
  

我可以逐个执行这些单独的步骤并生成标准的JPEG图像

这与jpec没有开箱即用,但您应该能够非常容易地为此目的修改它(通过公开和/或调整低级内部函数)。