3

JPEG压缩步骤如下:

原始图像数据-> 正向 DCT -> 量化 -> 熵编码 -> JPEG 图像

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

4

1 回答 1

4

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

如果 C 库可能适合您,您应该看看jpec一个用 C 编写的轻量级 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 没有开箱即用的功能,但您应该能够很容易地为此目的修改它(通过公开和/或调整低级内部函数)。

于 2013-08-12T07:45:53.470 回答