数字图像处理与应用——图像和视频压缩技术

图像压缩JPEG标准

JPEG是应用最广泛的静态图像压缩标准。

  • JPEG是针对标准彩色图像和灰度图像压缩的程序;
  • JPEG针对真实环境中的压缩效果较好,对工程图、卡通图、其他非真实感的图像压缩效果较差(原因在于其中利用到DCT线性变换,而DCT变换主要针对自然图像);
  • JPEG即可以是有损压缩,也可以是无损压缩;
    有损压缩:实际上是基于DCT变换的方法(与原始图像相比,在像素级别是不同的,但人眼的视觉系统看不出差异);
    无损压缩:基于预测方法,不能使用DCT变换(DCT变换的数学公式中有些无理数,一般计算机计算位数有限,在一定的位数上面会做截断,必然会导致像素级别上的差异)。

压缩与解压缩

以上为压缩的大致流程。

以上为解压缩的大致流程。

前处理

Color sub-sampling

  • 彩色图像:RGB空间 ==> YUV空间(Y表示亮度分量,U与V是两个色差的分量);
  • 之后对U、V进行采样(该步实际已经在做压缩。Why 只对色差分量做采样?人眼的视觉系统对亮度分量比较敏感,对两个色差分量并不敏感 ==> 尽量保持亮度分量不变,色差分量砍数据);
  • 对于16x16的图像块,经过操作之后,会包含6个8x8的块(1个16x16的亮度分量块,2个8x8的色差分量块,亮度分量是U、V的两倍大小 ==> 共形成4个8x8的亮度块,因此共组成6个8x8的块)。

Level shifting:

  • 每个像素减去128,将(0, 255) ==> (-128, 127)(Why?自然灰度图中间的灰度值出现概率大,即靠近128的值非常多,减去128之后,图像中的大多数值会接近0,而在压缩的过程中,最希望看到的就是0,0可以采用巧妙的方式去处理,不会占用存储空间)。

2D DCT

图像块的尺寸是8x8,做8x8的DCT变换;

  • 经过8x8DCT变换之后,8x8的图像块(共64个数字) ==> 得到的仍是64个数字,但空间已经发送了变化,前者表示像素点的灰度值,变换后表示该图像块在不同空间频率上的投影值,得到64个空间频率值,即在两个不同的domain当中,前者空间域,后者频率域,通常称为输入8x8图像块的“频谱”。

输入的8x8图像块,与上图中每一个子图像块做内积(点对点相乘再相加,最终得到标量),最终得到64个系数,表示该图像块在不同空间频率域上的投影,即频谱。

DCT变换在压缩中起什么作用?

  • 自然图像中,图像块中的点与点之间的灰度变化不是那么剧烈,变换相对光滑、缓慢,DCT变换刚好可以把这种光滑、缓慢的变换趋势,可以将该信号的能量集中在少数几个所谓的低频率的成分上。
  • 理论上,DCT变化是一种无损变换,但实际上由于DCT变换包含一个“cosine”,是一个无理数,计算机只能计算有限位的数,但这一阶段不会有任何的信息丢失,信息丢失主要是在量化阶段。

量化:将视觉上不重要的信息丢失掉。

  • 从数学角度:多对一的映射(0-1之间,0.9经过量化为0.5,0.1经过量化为0.5,即一个线段变成了一个点,自然信息必然丢失 ==> 引入量化误差(量化噪声))

对于8x8的图像块,除第一个系数之外,将其他的系数按照第一个系数做变换,也进行了一定程度的压缩。

其他63个系数称为交流分量(AC Coefficients)

人眼视觉系统对低频信号更敏感。

  • (a)灰度值变换平滑,需要减去128(在空间域当中);
  • (b)做DCT变换,变为64个系数(在频域当中,直流分量占绝大部分235.6,右下角数值都很小);
  • (c)量化表:右下角的值比左上方的值更大
    (用(b)中的每个元素除以(c)中的每个元素);
  • (d)量化之后绝大多数数值都变成了0(类似于稀疏矩阵),直流分量单独处理;
  • (e)去量化:(d)与量化表相乘,非零时才会有数值;
  • (f)DCT的逆变换,像素级的灰度值会有细微的变化,人眼视觉系统无法感知差异,即在压缩后节省了很多存储空间,但图像视觉质量不变。

视频压缩MPEG标准

静态图像压缩 vs 视频序列压缩

  •  从一帧的角度看,两者相同;
  • 视频帧与帧之间时域的相关性大,利用时域的冗余性做更大强度的压缩;

不考虑时域的冗余性(AVI格式实际上为帧内编码),即每一帧独立地按照图像JPEG标准进行编码。 

相邻两帧相减,大部分像素值为0。

运动补偿

  • \hat{x}为基于前一帧的预测帧。
  • 注意,参考帧\tilde{x}\left ( t-1 \right )是解码后的前一帧,并非原始帧。

 不做运动补偿与做运动补偿的差异

运动补偿后的残差量相比直接相减更小,更有利于做压缩,原因在于0出现更多。 

MPEG编码的大致流程

  • 对于第一帧,没有参考帧,直接按照JPEG的方法进行压缩(流程中上半部蓝色支路);
  • 黄色支路:Q^{-1}去量化 ==> DCT逆变换 ==> 得到\tilde{x}\left ( t \right )

Why 不与前一帧的raw对比?解码端接收到的是第二帧的压缩帧,而不是第二帧的原始帧,若接收端已有第二帧的原始帧,就无需压缩了。

MPEG解码的大致流程

帧分三类:

  • 帧内编码;
  • 预测帧;
  • 双向预测帧。

一种典型的帧安排:

  • P_{1}P_{2}是来自于I_{1}的前向预测的帧,B_{1}B_{2}可以双向的进行估计,即其来自I_{1}P_{1}的插值;
  • 每隔一段时间会插入一个I帧,阻断误差的弥漫,I帧类似基石,后续的帧均要以其为标准来进行编码。

 I帧即为JEPG编码。

P帧的每一块都要在前一帧参考帧中寻找匹配块,二者相减获得残差,对残差进行编码。

B帧的参考帧有两个,最后编码的也是残差。

Reference

中国大学MOOC 数字图像处理与应用  浙江大学  陆系群

数字图像处理与应用_浙江大学_中国大学MOOC(慕课)数字图像处理与应用,spContent=深刻理解图像处理原理,生动展现图像处理过程,灵活应用图像处理方法,中国大学MOOC(慕课)https://www.icourse163.org/course/ZJU-1206408807?from=searchPage

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栗子不哭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值