数据压缩原理 实验五 JPEG原理分析及JPEG解码器的调试

实验原理

JPEG编码的过程如下图所示。解码是编码的逆过程。
jpeg编码

JPEG文件解码流程:
①读入文件的相关信息
②初步了解图像数据流的结构
③颜色分量单元的内部解码
④直流系数的差分编码
⑤反量化&反zig-zag编码
⑥反离散余弦变换

JPEG文件格式:
JPEG文件格式

实验流程

1.读取文件
2.解析文件
SOI、APP0、DQT、SOF0、DHT、SOS
3.根据每个分量的水平和垂直采样因子计算最小编码单元的大小,并得到每个最小编码单元内8×8宏块的个数
4.对每个最小编码单元解码
5.解析到EOI结束
6.将Y、Cb、Cr转换为所需的色彩空间保存

代码分析

main函数

int main(int argc, char *argv[])
{
  int output_format = TINYJPEG_FMT_YUV420P;
  char *output_filename, *input_filename;
  clock_t start_time, finish_time;
  unsigned int duration;
  int current_argument;
  int benchmark_mode = 0;

  Q_table = fopen("Q_table.txt","w");       //量化表、DC AC表
  DC_table = fopen("DC_table.yuv","w");
  AC_table = fopen("AC_table.yuv","w");

#if TRACE
  p_trace = fopen(TRACEFILE,"w");               //路径文件
  if (p_trace == NULL)
  {
      printf("trace file open error!");
  }
#endif
  if (argc < 3)
    usage();

  current_argument = 1;
  while (1)
   {
     if (strcmp</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值