中国科学技术大学电子工程与信息科学系多媒体通信实验室(20220116修订) JPEG静图像压缩实验 一、实验目的 1了解数字图像压缩的一类方法。 2掌握2D快速DCT变换的算法。 二、实验原理 PEG标准是面向连续色调静止图像的图像压缩标准。它定义了多种类型的工作模式, 其中最基本的是基于8×8块的DCT变换的顺序编码。就是将一帧图像分为8×8的数据块单 元,按照从左至右、自上而下的顺序对“块流”,其编码、解码的框图如下: 8×8 ≥DCT变换≥量化≥熵编码>码字数据 原始图像数据 8X8 码字数据≥熵解码≥反量化≥IDCT变换 恢复图像数据 基于DCT的编码、解码框图 三、实验内容 按照如上框图实现一帧图像的压缩编码。 L.DCT变换 数字表达式为: 如果您在阅读过程中发现疏漏和错误,请联系network@ustc.edu.cn cxh(@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(20220116 修订) 如果您在阅读过程中发现疏漏和错误,请联系 network@ustc.edu.cn cxh@ustc.edu.cn JPEG 静图像压缩实验 一、实验目的 1 了解数字图像压缩的一类方法。 2 掌握2D快速DCT变换的算法。 二、实验原理 JPEG 标准是面向连续色调静止图像的图像压缩标准。它定义了多种类型的工作模式, 其中最基本的是基于8×8块的 DCT 变换的顺序编码。就是将一帧图像分为8×8的数据块单 元,按照从左至右、自上而下的顺序对“块流”,其编码、解码的框图如下: DCT变换 8×8 量化 熵编码 码字数据 码字数据 熵解码 反量化 IDCT变换 8×8 恢复图像数据 原始图像数据 基于DCT的编码、解码框图 三、实验内容 按照如上框图实现一帧图像的压缩编码。 1. DCT 变换 数字表达式为:
中国科学技术大学电子工程与信息科学系多媒体通信实验室(20220116修订) F(.y)-iC(c( 2交ccm2gmrr =0 16 16 cC(ru)co(cov 16 cos 16 0t=0 其中: cm.c-方 4,y=0 c(u),c(y)=1 其它 二维DCT变换从表达式看具有可分离性,即可以分解为行和列的一维DCT变换的组 合运算。另一种2D快速余弦变换是把8×8的块分成更小的子块,直接对二维数据块操作。 2.量化 量化的表达式为: F2(,y= Fu,y)×8 g_scale×Qw,v) 其中g_scale是量化因子。对DC系统,g_scale恒为8:对AC系数,它可以是l~ 30的整数。是上式四舍五入取整的结果,称为量化系数。Q仙以是量化矩阵。 按照表1所给的量化矩阵对DCT系统进行量化(所有的表在“PEG数据”中)。 3.熵编码 a.DC系统的编码。 DC系统编码的基本步骤为: 1)以初始值为128,对相邻块的DC系统作差分:DIFF=DC-DC-; 2)将差分值改写为〔size,amplitude)(〔尺寸,幅值))的符号对。 0 amplitude =0 size log((amplitude+1 amplitude≠0 3)对size采用Huffman编码,Huffman码表如表2。若amplitude非零,则将其编码为长度 是size的二进制数。如果amplitude为正数,则编码为其相应的二进制数:如果amplitude为负 数,则编码其绝对值相应的二进制数后再按位取反。 b.AC系数的编码。 AC系数编码的基本步骤为: 如果您在阅读过程中发现疏漏和错误,请联系network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(20220116 修订) 如果您在阅读过程中发现疏漏和错误,请联系 network@ustc.edu.cn cxh@ustc.edu.cn ( ) ( ) ( ) ( ) ( ) ( ) F u v C u C v f x y x u y v x y , = , cos cos + + = = 1 4 2 1 16 2 1 0 16 7 0 7 f( x y) C(u)C(v)F(u v) x u y v u v , , cos ( ) cos ( ) = + + = = 1 4 2 1 16 2 1 0 16 7 0 7 其中: ( ) ( ) ( ) ( ) 其它 1 = = 0 2 = 1 C u ,C v u,v C u ,C v 二维 DCT 变换从表达式看具有可分离性,即可以分解为行和列的一维DCT 变换的组 合运算。另一种 2D 快速余弦变换是把8×8的块分成更小的子块,直接对二维数据块操作。 2. 量化 量化的表达式为: ( ) ( ) ( ) Q u v F u v g scale Q u v F , , _ , = 8 其中 g_scale 是量化因子。对 DC 系统,g_scale 恒为8;对 AC 系数,它可以是1~ 30 的整数。是上式四舍五入取整的结果,称为量化系数。Q(u,v)是量化矩阵。 按照表1所给的量化矩阵对 DCT 系统进行量化(所有的表在“JPEG数据”中)。 3. 熵编码 a. DC 系统的编码。 DC系统编码的基本步骤为: 1)以初始值为128,对相邻块的DC 系统作差分:DIFFj=DCj-DCj-1; 2)将差分值改写为〔size,amplitude〕(〔尺寸,幅值〕)的符号对。 ( ) 0 = 0 = log +1 0 amplitude size amplitude amplitude 3)对size采用Huffman编码,Huffman码表如表2。若amplitude非零,则将其编码为长度 是size的二进制数。如果amplitude为正数,则编码为其相应的二进制数;如果amplitude为负 数,则编码其绝对值相应的二进制数后再按位取反。 b. AC 系数的编码。 AC系数编码的基本步骤为:
中国科学技术大学电子工程与信息科学系多媒体通信实验室(20220116修订) 1)以块为单位,从AC01开始,对块内的量化数据进行Z字形行程扫描。记下非零 值的大小和其间连续零的个数。 2)将扫描结果改写为〔runlength,size)〔amplitude)(〔行程长,尺寸)〔幅值))的符 号对:其中unlength表示该非零值和它前一个非零值之间零的个数,以EOB标识一个块 的扫描结果。 3)对(runlength,size)采用Huffman编码,Huffman码表如表3。若amplitude非零,则 将其编码为长度是size的二进制数。如果amplitude为正数,则编码为其相应的二进制数:如 果amplitude为负数,则编码其绝对值相应的二进制数后再按位取反。 三、实验要求 请按照实验内容部分的要求完成自己的PEG编码程序,可以参照模板程序进行编写(注 意:仅供参考,不得照抄)。以下是模板程序介绍。 1、模板程序的JPEG图像编码过程 输入源图像 8×8二维DCT变换 量化 量化表 直流分量预测编码 熵编码 熵编码表 ★ 加JPEG头 输出jpg文件 PEG编码原理图 如果您在阅读过程中发现疏漏和错误,请联系network@ustc.edu.en cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(20220116 修订) 如果您在阅读过程中发现疏漏和错误,请联系 network@ustc.edu.cn cxh@ustc.edu.cn 1)以块为单位,从 AC01 开始,对块内的量化数据进行 Z 字形行程扫描。记下非零 值的大小和其间连续零的个数。 2)将扫描结果改写为〔runlength,size〕〔amplitude〕(〔行程长,尺寸〕〔幅值〕)的符 号对;其中 runlength 表示该非零值和它前一个非零值之间零的个数,以 EOB 标识一个块 的扫描结果。 3)对〔runlength,size〕采用Huffman编码,Huffman码表如表3。若amplitude非零,则 将其编码为长度是size的二进制数。如果amplitude为正数,则编码为其相应的二进制数;如 果amplitude为负数,则编码其绝对值相应的二进制数后再按位取反。 三、实验要求 请按照实验内容部分的要求完成自己的JPEG编码程序,可以参照模板程序进行编写(注 意:仅供参考,不得照抄)。以下是模板程序介绍。 1、模板程序的 JPEG 图像编码过程 JPEG 编码原理图 输入源图像 8×8 二维 DCT 变换 量化 量化表 直流分量预测编码 熵编码 熵编码表 加 JPEG 头 输出.jpg 文件
中国科学技术大学电子工程与信息科学系多媒体通信实验室(20220116修订) 2、模板文件介绍 JPEG_sample_code_20220108.rar为示例程序(其中“jpeg参数表20220116.docx”为实 验用到的相关参数表),注释很详细,较容易理解。解压附件后,打开"jegr"文件夹中的 "jpeg_r.sln",运行后可以在与"jpeg_r.sln"处于同一文件夹中的"jpeg_r"文件夹中找到编码输出 文件"lady_pre.dat'"。"lady_pre.dat"文件中存放的就是编码之后的结果(未加PEG头)。其主 程序流程为: a.程序初始化,读取文件名称、原始图像等基本数据: b.以8×8为样本单位进行DCT变换: c.以8×8为样本单位进行量化: d.以8×8为样本单位进行Z型扫描: e.以8×8为样本单位进行编码。 将"lady pre.dat"文件加JPEG头即可得到JPEG图像。具体做法是将"lady pre..dat"文件拷 贝到"JPEG编码"文件夹下的"jpeg_r_followup'"文件夹,运行"GENJPG.exe",按照要求从键盘 输入"lady_pre.dat"和"**jpg"即可。注意,"GENJPG.exe"只能处理256×256的图像,如果 需要处理其他分辨率的图像,可以自行对源码进行修改。 请同学们在参考上述程序的基础上,编制自己的JPEG压缩程序,然后与示例程序的运 行结果进行比对,检查自己的程序是否正确运行。(可以使用OpenCV、MATLAB等工具读 取*jPg文件,获得各点像素值) 四、思考题 1.计算图像的压缩比,并比较原图像的效果。 2.改变g scale和量化矩阵中的元素,比较压缩比和恢复图像的效果。 3.DCT变换,量化后,数据的值域是多少?有没有可能超出码表所给幅值的范围? 如果您在阅读过程中发现疏漏和错误,请联系network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(20220116 修订) 如果您在阅读过程中发现疏漏和错误,请联系 network@ustc.edu.cn cxh@ustc.edu.cn 2、模板文件介绍 JPEG_sample_code_20220108.rar 为示例程序(其中“jpeg 参数表_20220116.docx”为实 验用到的相关参数表),注释很详细,较容易理解。解压附件后,打开"jpeg_r"文件夹中的 "jpeg_r.sln",运行后可以在与"jpeg_r.sln"处于同一文件夹中的"jpeg_r"文件夹中找到编码输出 文件"lady_pre.dat"。"lady_pre.dat"文件中存放的就是编码之后的结果(未加 JPEG 头)。其主 程序流程为: a. 程序初始化,读取文件名称、原始图像等基本数据; b. 以 8×8 为样本单位进行 DCT 变换; c. 以 8×8 为样本单位进行量化; d. 以 8×8 为样本单位进行 Z 型扫描; e. 以 8×8 为样本单位进行编码。 将"lady_pre.dat"文件加 JPEG 头即可得到 JPEG 图像。具体做法是将"lady_pre.dat"文件拷 贝到"JPEG 编码"文件夹下的"jpeg_r_followup"文件夹,运行"GENJPG.exe",按照要求从键盘 输入"lady_pre.dat"和"***.jpg"即可。注意,"GENJPG.exe"只能处理 256×256 的图像,如果 需要处理其他分辨率的图像,可以自行对源码进行修改。 请同学们在参考上述程序的基础上,编制自己的 JPEG 压缩程序,然后与示例程序的运 行结果进行比对,检查自己的程序是否正确运行。(可以使用 OpenCV、MATLAB 等工具读 取*.jpg 文件,获得各点像素值) 四、思考题 1. 计算图像的压缩比,并比较原图像的效果。 2. 改变 g_scale 和量化矩阵中的元素,比较压缩比和恢复图像的效果。 3. DCT 变换,量化后,数据的值域是多少?有没有可能超出码表所给幅值的范围?