多媒体信息处理综合课程设计.docx
《多媒体信息处理综合课程设计.docx》由会员分享,可在线阅读,更多相关《多媒体信息处理综合课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
多媒体信息处理综合课程设计
兰州交通大学
《多媒体信息处理综合课程设计》
JPEG编解码方法设计与实现
学院
专业:
班级:
姓名:
2014年1月
...................................................................................................................3
.设计目的1.
兰州交通大学
2.实验设备及材料........................................................................................................3
3.设计要求....................................................................................................................3
4.原理............................................................................................................................3
4.1JPEG..................................................................................................................3
4.2JPEG压缩中图像文件的格式.........................................................................4
4.3JPEG编码原理..................................................................................................5
4.3.1离散余弦变换........................................................................................6
4.3.2量化........................................................................................................6
4.3.3行程编码和熵编码................................................................................7
5.程序设计....................................................................................................................9
6.实验结果..................................................................................................................18
7.总结..........................................................................................................................20
兰州交通大学
1.设计目的
1.掌握JPEG编解码的基本原理和方法。
2.学习使用程序设计环境。
3.使用设计框架构造应用程序。
4.掌握JPEG编码、解码实现。
2.实验设备及材料
1.PC机一台
2.MATLAB
3.设计要求
拍摄BMP图像,利用算法程序将摄入的图像进行编码,产生JPEG压缩图像,生成解压缩图像送显示设备显示,对视觉压缩结果进行评价并计算压缩比。
4.原理
4.1JPEG
JPEG(JointPhotographicExpertsGroup)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO
10918-1(JPEG)就是该委员会制定的。
由于JPEG优良的品质,使他在短短几年内的图像都采用了80%网站上被广泛应用于互联网和数码相机领域,获得了成功,
兰州交通大学
JPEG压缩标准。
JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。
.jpeg/.jpg是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。
尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。
但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。
而且JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:
1到40:
1之间,压缩比越大,品质就越低;相反地,品质就越高。
比如可以把1.37Mb的BMP位图文件压缩至20.3KB。
当然也可以在图像质量和文件尺寸之间找到平衡点。
JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像
4.2JPEG压缩中图像文件的格式
由于图像数据文件的格式有很多,如GIF、TIFF、PCX、TGA、BMP、JPEG等。
而现在实现的是BMP和JPEG的相互转换,所以要具体介绍BMP和JPEG文件的格式。
)色彩模型,将各种颜色视为为红,BlueGreenRed(RGB图像采用BMP.
兰州交通大学
绿,蓝(R,G,B)三个部分的组合。
由于一幅图像中许多像素对应的颜色是相同的,BMP图像中采用了一个表:
表中的每一行记录一种颜色的R,G,B值。
这样,当表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值,这个表在BMP图像中称为调色板。
有一种图,它的颜色数高达256×256×256种,也就是说包含上述提到的R,G,B颜色表示方法中所有的颜色,这种图叫做真彩色图(TrueColor)。
真彩色图并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。
表示真彩色图时,每个象素直接用R,G,B三个分量字节表示,而不采用调色板技术。
4.3JPEG编码原理
JPEG的压缩编码过程大致分成三个步骤:
1、使用正向离散余弦变换把空间域表示的图变换成频率域表示的图;2、使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的;3、使用霍夫曼可变字长编码器对量化系数进行编码。
下面依次介绍压缩过程中应用到的技术。
兰州交通大学
4.3.1离散余弦变换
离散余弦变换是压缩编码的基础。
在JPEG中,首先将图像分割成8x8像素的小块,然后进行余弦变换,其变换式为(M=N=8):
对于每个8×8二维原图像采样数据块,64点阵的离散函数FDCT把它们作为输入信号,然后分解成64个正交基信号,每个正交基信号对应于64个二维空间频率中的一个,这些空间频率是由输入信号的频谱组成。
FDCT的输出是64个基信号的幅值(即DCT系数),每个系数值由64点阵输入信号唯一地确定,即离散余弦变换的变换系数。
在频域平面上变换系数是二维频域变量u和v的函数。
因为在一幅图像中像素之间的灰度或色差信号变化缓慢,在8×8子块中像素之间的相关性很强,所以通过离散余弦正变换处理后,在空间频率低频范围内集中了数值大的系数,这就为数据压缩提供了可能。
4.3.2量化
为了达到压缩数据的目的,对经过FDCT变换后的频率系数进行量化处理。
量化处理是一个多到一的映射,它是造成DCT编/解码信息损失的根源,是图像质标准中采用线性均匀量化器。
JPEG量下降的最主要原因。
在.
兰州交通大学
量化定义为,对64个DCT变换系数除以量化步长,然后四舍五入取整。
量化步长是量化表的元素,量化表元素随DCT变换系数的位置而改变。
不同频率的余弦函数对视觉的影响不同,量化处理是在一定的主观保真度图像质量的前提下,可据不同频率的视觉阈值来选择量化表中元素值的大小。
4.3.3行程编码和熵编码
JPEG压缩的最后一步是对量化后的系数进行熵编码。
这一步采用通用的无损数据压缩技术,对图像质量没有影响。
在熵编码之前,需要把64个DCT系数转换为一串中间符号。
其中直流系数和交流系数的编码方式不同。
坐标u=v=0的值是直流分量(即DC系数)。
直流系数表示当前分块中64个象素的平均值,相邻分块的直流系数具有很强的相关性,因此在编码时只需记录与前一分块的直流系数的差值,即直流系数的“中间符号”采用差分脉冲编码(DPCM),它是64个图像的采样平均值。
DC系数的编码方法:
第1块图像的DC系数是“真值”,以后各块的DC是与前1块DC系数的“差值”:
Diff=DC(i)-DC(i-1)
兰州交通大学
其余63个AC系数编码是从左上方开始,沿箭头方向,对63个交流系数用“之”字型扫描,让它变成一维数组。
这样做的目的是将低频系数放在前面,高频系数放在后面。
因为高频系数中有很多0,为了节约空间,所以交流系数的“中间符号”用零行程码表示。
接下来对中间符号进行熵编码,这一步的目的是利用符号的统计特性,进一步提高压缩率。
JPEG标准规定的熵编码方式有两种:
Huffman编码和自适应二进制算术编码。
这两种编码各有优劣:
“正宗”的Huffman编码过程要对输入序列进行两遍扫描,第一遍统计各个符号出现的概率,构造Huffman树,得到码书;第二遍用码书对符号进行编码。
这么做的话,时间空间开销都较大。
两遍扫描意味着要把整幅图像的“中间符号”都记录下来,不能“随到随编”。
而且要把码书传给解码器,这会增加压缩文件的大小。
.
兰州交通大学
JPEG的实际实现一般支持两种Huffman方式,一种是前述的“正宗”Huffman编码(称为optimized方式),另一种则采用JPEG标准AnnexK中给出的缺省码书。
采用缺省码书的好处是输入序列只用扫描一遍,空间和实际开销都较小;缺点是,由于码书不是根据当前图像的统计信息得到的,那么压缩率会比“正宗”Huffman编码低一些。
不过由于Huffman编码对概率误差不敏感,因此实践中常常采用缺省码书进行编码。
算术编码和Huffman编码都是变长码,符号出现概率越高,码字越短。
不同之处在于,Huffman编码每个符号对应的码字是确定的,每个码字的bit数为整数。
算术编码的基本思想是用一个精度足够高的属于(0,1)的实数来表示整个输入序列,输入序列中每个符号对应的码字是不确定的,总体上每个符号对应的码字长度等于其信息熵(均以bit计),码字平均长度可能是小数。
算术编码的压缩率通常高于Huffman编码。
算术编码的另一个好处是,它很容易做成自适应的,因此只需扫描一遍输入序列,空间开销小很多。
5.程序设计
1、读入图像:
clear
I=imread('1.jpg');%读入原图像;
R=I(:
:
1);
将原图像转为双精度数据类型;%R1=im2double(R);
兰州交通大学
2、进行DCT矩阵变换(重复三次),并显示原图像大小、压缩图像大小、压缩比:
T=dctmtx(8);%产生二维DCT变换矩阵
L=blkproc(R1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T'是DCT函数P1*x*P2的参数
Mask=[10100000
11001000
11000000
00000000
00000000
00000000
00000000
00000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个
L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数
[mn]=size(L2);
J=[mn];
fori=1:
m
value=L2(i,1);
num=1;
forj=2:
n
L2(i,j)==value
if
兰州交通大学
num=num+1;
else
J=[Jnumvalue];
num=1;
value=L2(i,j);
end
end
J=[Jnumvalue];
end
disp('原图像大小')
whos('L2');
disp('压缩图像大小:
')
whos('J');
disp('图像的压缩比:
')
disp(m*n/length(J))%解压缩
t1=J
(1);
t2=J
(2);
K(1:
t1,1:
t2)=0;
i1=1;
j1=1;
fori=3:
2:
length(J)
c1=J(i);
兰州交通大学
c2=J(i+1);
forj=1:
c1
K(i1,j1)=c2;
j1=j1+1;
ifj1>t2
i1=i1+1;
j1=1;
end
end
end
R2=blkproc(K,[8,8],'P1*x*P2',T',T);%逆DCT,重构图像
G=I(:
:
2);
G1=im2double(G);%将原图像转为双精度数据类型;
T=dctmtx(8);%产生二维DCT变换矩阵
L=blkproc(G1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T'是DCT函数P1*x*P2的参数
Mask=[10100000
11001000
11000000
00000000
00000000
0
0000000
兰州交通大学
00000000
00000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个
L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数
[mn]=size(L2);
J=[mn];
fori=1:
m
value=L2(i,1);
num=1;
forj=2:
n
ifL2(i,j)==value
num=num+1;
else
J=[Jnumvalue];
num=1;
value=L2(i,j);
end
end
J=[Jnumvalue];
end
disp('原图像大小')
whos('L2');
兰州交通大学
disp('压缩图像大小:
')
whos('J');
disp('图像的压缩比:
')
disp(m*n/length(J))%解压缩
t1=J
(1);
t2=J
(2);
K(1:
t1,1:
t2)=0;
i1=1;
j1=1;
fori=3:
2:
length(J)
c1=J(i);
c2=J(i+1);
forj=1:
c1
K(i1,j1)=c2;
j1=j1+1;
ifj1>t2
i1=i1+1;
j1=1;
end
end
end
,重构图像DCT逆%blkproc(K,[8,8],'P1*x*P2',T',T);G2=
兰州交通大学
B=I(:
:
3);
B1=im2double(B);%将原图像转为双精度数据类型;
T=dctmtx(8);%产生二维DCT变换矩阵
L=blkproc(B1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T'是DCT函数P1*x*P2的参数
Mask=[10100000
11001000
11000000
00000000
00000000
00000000
00000000
00000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个
L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数
[mn]=size(L2);
J=[mn];
fori=1:
m
value=L2(i,1);
num=1;
forj=2:
n
L2(i,j)==value
if
兰州交通大学
num=num+1;
else
J=[Jnumvalue];
num=1;
value=L2(i,j);
end
end
J=[Jnumvalue];
end
disp('原图像大小')
whos('L2');
disp('压缩图像大小:
')
whos('J');
disp('图像的压缩比:
')
disp(m*n/length(J))%解压缩
t1=J
(1);
t2=J
(2);
K(1:
t1,1:
t2)=0;
i1=1;
j1=1;
fori=3:
2:
length(J)
c1=J(i);
兰州交通大学
c2=J(i+1);
forj=1:
c1
K(i1,j1)=c2;
j1=j1+1;
ifj1>t2
i1=i1+1;
j1=1;
end
end
end
3、显示图像:
B2=blkproc(K,[8,8],'P1*x*P2',T',T);%逆DCT,重构图像
A(:
:
1)=R2;
A(:
:
2)=G2;
A(:
:
3)=B2;
Subplot(1,2,1);
imshow(I);title('原图像');%显示原图像
Subplot(1,2,2);
imshow(A);title('压缩图像');%显示压缩后的图像。
对比原始图像和压缩后的图像。
.
兰州交通大学
6.实验结果
压缩前图像压缩后图像
uiopen('c:
\User\Adminstrator\Desktop\1.jpg'.1)
原图像大小;
NameSizeBytesClass
1350*480840000doublearray
Grandtotalis168000elementsusing840000bytes
压缩图像大小;
NameSizeBytesClass
M1*48530356500doublearray
Grandtotalis48530elementsusing356500bytes
图像压缩比:
2.3562
压缩后图像压缩前图像
兰州交通大学
uiopen('c:
\User\Adminstrator\Desktop\2.jpg'.2)
原图像大小;
NameSizeBytesClass
1480*240545280doublearray
Grandtotalis115200elementsusing545280bytes
压缩图像大小;
NameSizeBytesClass
M1*26500205200doublearray
Grandtotalis26500elementsusing205200bytes
图像压缩比:
2.6573
压缩前图像压缩后图像
uiopen('c:
\User\Adminstrator\Desktop\3.jpg'.3)
原图像大小;
NameSizeBytesClass
1450*260604500doublearray
Grandtotalis117000elementsusing604500bytes
兰州交通大学
压缩图像大小;
NameSizeBytesClass
M1*29920226040doublearray
Grandtotalis29920elementsusing226040bytes
图像压缩比:
2.6743
7.总结
当图像的压缩比增大时,也即压缩率减小时,图像的质量也将降低。
基于DCT变换的JPEG图像压缩方法简单,方便,是一种非常有用的图像压缩方法,随着科学技术的发展,图像压缩技术越来越引起人们的关注。
因此基于DCT变换的JPEG图像压缩方法有着广阔的前景。
优点:
摄影作品或写实作品支持高级压缩。
利用可变的压缩比可以控制文件大小。
支持交错(对于渐近式JPEG文件)。
广泛支持Internet标准。
缺点:
有损耗压缩会使原始图片数据质量下降。
当您编辑和重新保存JPEG文件时,JPEG会混合原始图片数据的质量下降。
这种下降是累积性的。
JPEG不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片