JPEG 原理分析及 JPEG 解码器的调试

本文深入探讨JPEG图像压缩技术,从JPEG编码流程的彩色空间转换、下采样、DCT变换到量化和编码,再到解码过程,详细阐述了JPEG文件格式。同时,文章还介绍了实验中涉及的任务,包括生成YUV文件、输出量化矩阵和霍夫曼码表,以及分析DC和AC图像的概率分布,揭示了蚊子噪声现象。
摘要由CSDN通过智能技术生成

实验原理

JPEG简介

JPEG是数字图像的有损压缩的常用方法,特别是对于由数码摄影产生的图像。JPEG(Joint Photographic Experts Group)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO 10918-1(JPEG)就是该委员会制定的。由于JPEG优良的品质,使他在短短几年内获得了成功,被广泛应用于互联网和数码相机领域,网站上80%的图像都采用了JPEG压缩标准。

JPEG编解码流程

图片来自维基百科

编码流程

这里写图片描述

彩色空间转换

首先,图像应该从RGB转换成不同的颜色空间,称为Y’CBCR(或非正式地,YCbCr)。它具有三个分量Y’,CB和CR:Y’分量表示像素的亮度,CB和CR分量表示色度

下采样

由于人眼对亮度比对色度更加敏感的视觉特性,因此通过降低Cb和Cr分量的空间分辨率(称为“下采样”)来进行编码。 4:4:4(无下采样),4:2:2(在水平方向上减少2倍),或(最常见)4:2: 0(在水平和垂直两个方向上减少2倍)。

分块

下采样后,每个通道必须分为8×8块。 取决于色度下采样,产生大小为8×8(4:4:4 - 无下采样),16×8(4:2:2)或最通常为16×16(4:4)的最小编码单元(MCU)2:0)。 在视频压缩中,MCU被称为宏块。本实验中采取的是8×8的宏块。

零偏置level offset

对于灰度级是 2n 的像素,通过减去 2(n1) ,将无符号 的整数值变成有符号数。 对于n=8,即将0~255的值域,通过减去128,转换为值 域在-128~127之间的值。目的:使像素的绝对值出现3位10进制的概率大大 减少。

8×8的离散余弦变换

将每个8×8的块进行DCT变换。DCT的变换公式:
这里写图片描述

量化

1.采用中平型均匀量化器量化
2.步距是按照系数(所在的位置 、颜色分量 )来确定。
因为人眼对亮度信号比对色差信号更敏感,因此使用了两 种量化表:亮度量化值和色差量化值。
3. 根据人眼的视觉特性(对低频敏感,对高频不太敏感)对 低频分量采取较细的量化,对高频分量采取较粗的量化(如果原始图象中细节丰富,则去掉的数据较多,量化后的系数与 量化前差别;反之,细节少的原始图象在压缩时去掉的数据少些)
真正的量化表=缩放因子×基本量化表
质量因子≤ 50:缩放因子= 50 / 质量因子;
质量因子> 50:缩放因子 = 2 – 质量 因子/ 50

DC系数的差分编码

8×8图像块经过DCT变换之后得到的DC直流系数有两个特点 :1.系数的数值比较大2.相邻8×8图像块的DC系数值变化不大:冗余
根据这个特点,JPEG算法使用了差分脉冲调制编码 (DPCM)技术,对相邻图像块之间量化DC系数的差值 DIFF进行编码:
这里写图片描述

AC系数的Z字扫描

由于经DCT变换后 ,系数大多数集中 在左上角,即低频 分量区,因此采用Z 字形按频率的高低 顺序读出,可以出 现很多连零的机会 。可以使用游程编 码。尤其在最后, 如果都是零,给出 EOB (End of Block) 即可。
这里写图片描述

AC系数的游程编码

在JPEG和MPEG编码中规定为:(run, level)
表示连续run个0,后面跟值为level的系数
如:0,2,0,0,3,0,-4,0,0,0,-6,0,0,5,7
表示为(1, 2), (2, 3) ,…
编码:
Run: 最多15个,用4位表示RRRR
Level:类似DC
分成16个类别,用4位表示SSSS表示类别号
类内索引  对(RRRR, SSSS)联合用Huffman编码
对类内索引用定长码编码

解码流程

解码Huffman数据
解码DC差值
重构量化后的系数
DCT逆变换
丢弃填充的行/列
反0偏置
对丢失的CbCr分量差值(下采样的逆过程)
YCbCr to RGB

JPEG文件格式

这里写图片描述

名称 标记 全称
SOI 0xFF, 0xD8 Start Of Image
SOF0 0xFF, 0xC0 Start Of Frame (baseline DCT)
DHT 0xFF, 0xC4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值