CSP-JPEG 解码-202212-3

本文详细介绍了JPEG解码过程,包括关键信息提取、Z字形扫描、离散余弦变换、量化矩阵的使用以及解码步骤。通过实例解析了40分的基础实现,并探讨了完整100分的解码算法,涉及离散余弦逆变换的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、题目信息提取

链接

题目关键信息:

问题描述

二、初步理清问题 &&分析要用到的STL等结构

四、整合问题思路

三、基础-40分

40分代码

五、完整-100分


一、题目信息提取

链接

计算机软件能力认证考试系统


首先从题目本身出发,一起提取关键信息


题目关键信息:

  1. 一张灰度图片,可以被视为由多个像素点组成
  2. 每个像素点对应一个 0 到 255 之间的数值
  3. 最小编码单元:JPEG 编码算法将图片分割为 8*8的小块
  4. 每个小块进行如下的计算:
  • 减去 128,数值都在 -128 到 127
  • 对矩阵进行离散余弦变换(DCT),所得矩阵的左上方的数字的绝对值较大,右下方的数字的绝对值较小,甚至接近 0。
  • 量化操作:除一个数字,取整数。量化操作的数字越大,矩阵中的数据就越少,但是压缩后的图片质量也会越差。
  • 扫描数据:Z 字形扫描:从左上角开始,排成一个数组,不存储结尾连续的 0
  • 扫描数据采用哈夫曼编码进行压缩,并置于必要的数据结构中

问题描述

目的:解码最小单元

步骤:(对照题目中的例子看)

  1. 读量化矩阵Q
  2. 初始化全0矩阵M
  3. 按照Z字形遍历M,将扫描数据写入
  4. 与量化矩阵Q逐项相乘
  5. 离散余弦逆变换,得M‘’
  6. 每个元素+128,大于255取255,小于0,取0

二、初步理清问题 &&分析要用到的STL等结构

我们需要完成的任务可以归纳成以下几个:

  1. 如何用Z字形访问矩阵M

       因为第一次访问的就是(0,0),第二次就是(0,1)……每次访问的下标是固定的

所以先开始初始化一个访问顺序,path[64]存每一步要访问的(i,j),所以用数据结构vector<pair<i

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blossom๑.๑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值