基于DCT变换的数字图像压缩(实验4报告)
多媒体技术实验报告
学院:城南学院通信1202班
姓名
学号
指导老师:***
时间:2015/12/09
实验四:数字图像压缩
1.实验目的
1)理解有损压缩和无损压缩的概念;
2)理解图像压缩的主要原则和目的;
3)了解几种常用的图像压缩编码方式;
4)利用MATLAB程序进行图像压缩。
2. 实验原理
1)图像压缩原理
图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
①冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
②信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
本实验主要利用MA TLAB程序进行离散余弦变换(DCT)压缩和行程编码(Run Length Encoding,RLE)。
2)离散余弦变换(DCT)图像压缩原理
离散余弦变换DCT在图像压缩中具有广泛的应用,它是JPEG、MPEG等数据压缩标准的重要数学基础。
用DCT压缩图像的过程为:
①首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT
变换。
②将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式。
用DCT解压的过程为:
①对每个8×8或16×16块进行二维DCT反变换。
②将反变换的矩阵的块合成一个单一的图像。
余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下的大多数的DCT系数值非常接近于0。
对于通常的图像来说,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。
所以,利用DCT 变换进行图像压缩可以节约大量的存储空间。
压缩应该在最合理地近似原图像的情况下使用最少的系数。
使用系数的多少也决定了压缩比的大小。
在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。
在压缩过程的第2步,还可以采用RLE和Huffman编码来进一步压缩。
3. 实验步骤
1)在matlab命令窗口中直接输入dctdemo选图像flower如图所示:
在右上角8*8 DCT系数图下,调节系数选择滑块。
保留系数为白色,置零系数为黑色。
按Apply键,比较原始图象、恢复图象、误差图象,观察原始图象与恢复图象的均方误差,改变系数选择滑块的位置,重做上步。
2)利用离散余弦变换进行JPEG图像压缩。
●使用函数dctmtx()产生DCT变换矩阵
T=dctmtx(8);%产生二维8*8 DCT变换矩阵;
●使用blkproc ()函数对图像进行分块处理
先使用rgb2gray()函数将原始图像转换成灰度图;再使用blkproc ()函数对图像进行分块处理。
B=blkproc(I,[8,8],'P1*x*P2',T,T');
%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ];
B2=blkproc(B,[8 8],'P1.*x',mask) ; %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T) ; %重构图像
4. 实验代码
I1=imread('D:\Backup\我的文档\503-100\lena.jpg');
I=rgb2gray(I1);
I=im2double(I);
T=dctmtx(8);
B=blkproc(I,[8,8],'P1*x*P2',T,T');
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
figure,subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2);
imshow(I2);
title('压缩图像');
5. 实验结果
6. 思考题
1)图像中哪些信息是主要的,哪些信息是次要的?
低频部分是主要的,高频部分是次要的。
2)思考保留系数的多少与压缩比、恢复图象质量的关系。
保留系数越多,压缩比越小,图像质量越好。
图像压缩实验报告
竭诚为您提供优质文档/双击可除图像压缩实验报告篇一:实验三图像压缩实验三图像压缩一、实验目的1.理解有损压缩和无损压缩的概念;2.理解图像压缩的主要原则和目的;3.了解几种常用的图像压缩编码方式。
4.利用mATLAb程序进行图像压缩。
二、实验仪器1计算机;2mATLAb等程序;3移动式存储器(软盘、u盘等)。
4记录用的笔、纸。
三、实验原理1.图像压缩原理图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1).冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:(1)无损压缩编码种类哈夫曼(huffman)编码,算术编码,行程(RLe)编码,Lempelzev编码。
(2)有损压缩编码种类预测编码,Dpcm,运动补偿;频率域方法:正交变换编码(如DcT),子带编码;空间域方法:统计分块编码;模型方法:分形编码,模型基编码;基于重要性:滤波,子采样,比特分配,向量量化;(3)混合编码。
有JbIg,h261,Jpeg,mpeg等技术标准。
基于DCT的数字图像压缩及Matlab实现
实验三基于DCT的数字图像压缩及Matlab实现兰州大学信息学院08级通信工程一班赵军伟一、课程设计的目的和要求等内容实验目的:掌握基于DCT变换的图像压缩的基本原理及其实现步骤;通过使用MATLAB,对同一幅原始图像进行压缩,进一步掌握DCT和图像压缩。
实验要求:1、学生在实验操作过程中自己动手独立完成,2人为1组。
2、上机过程中由指导老师检查结果后方可做其他内容。
3、完成实验报告:按照实验的每个题目的具体要求完成二、基本原理或方法(一)图像压缩基本原理图像数据压缩的目的是在满足一定图像质量的条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量,在信息论中称为信源编码。
图像压缩是通过删除图像数据中冗余的或者不必要的部分来减小图像数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。
压缩技术分为无损压缩和有损压缩两大类,前者在解码时可以精确地恢复原图像,没有任何损失;后者在解码时只能近似原图像,不能无失真地恢复原图像。
假设有一个无记忆的信源,它产生的消息为{ai},1≤i≤N,其出现的概率是已知的,记为P(ai)。
则其信息量定义为:由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然。
信源的平均信息量称为“熵”(entropy),可以表示为:对上式取以2为底的对数时,单位为比特(bits):根据香农(Shannon)无噪声编码定理,对于熵为H的信号源,对其进行无失真编码所可能达到的最低比特数为,这里为一任意小的正数,因此可能达到的最大压缩比为:其中B是原始图像的平均比特率。
在图像压缩中,压缩比是一个重要的衡量指标。
可以定义压缩比为:(二)图像压缩的基本模型图像编码包括两个阶段,前一个阶段就是利用预测模型或正交模型对图像信号进行变换;后一个阶段是利用已变换信号的统计特性,对其分配适当的代码来进行编码传输。
编码器与解码器的结构分别如图(a)、(b)。
基于DCT的图像压缩及Matlab实现(4)
摘要:基于DCT图像压缩编码技术提出了用Marlab实现离散余弦变换的图像压缩方法,该方法具有方法简单、速度快、误差小的优点,免去了大量的矩阵计算,既保证具有较高的压缩比,又保证了较好的图像质量。
关键词:DCT; 图像压缩;Matlab中图分类号:TN 919.81文献标识码:B文章编号:1673-5382(2007)02-0058-04白淑岩(烟台职业学院 基础部,山东 烟台 264000)1 引言图像数据的一个显著特点就是信息量大。
组成图像的各像素之间,无论是在行方向还是在列方向上都存在着一定的相关性。
应用某种编码方法提取或者减少这种相关性,就可以达到压缩数据的目的。
从信息论观点看,描述图像信源的数据是由有效信息量和冗余量两部分组成,去除冗余量能够节省图像存储和传输中的开销,同时又不损害图像信源的有效信息量。
保证重构图像的质量。
所谓的图像压缩编码技术就是对要处理的图像源数据按一定的规则进行变换和组合,从而达到以尽可能少的代码(符号)来表示尽可能多的数据信息,目前的编码技术很多,其中应用最广泛的方法之一就是基于离散余弦(DCT)的混合编码技术。
DCT变换是最小均方误差条件得出的较优的正交变换,已经成为许多图像编码国际标准DCT变幻的数字图像压缩技术中的核心。
DCT的变换和是余弦函数,计算速度快,有利于图像压缩和其他处理。
2 基于DCT的图像压缩编码理论算法2.1 基于DCT的图像压缩编码算法表述在编码过程中,首先将输入图像分解为8*8大小的数据块,然后用正向二维DCT把每个块砖变成64个DCT系数值,其中1个数值是直流(DC)稀疏,即8*8控与图像子块的平均值,其余的63个是交流(AC)稀疏,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行解码,然后求逆量化把DCT系数转化为8*8样本橡块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像,这样就完成了图像的压缩和解压缩过程。
数字图像处理 实验四dct编码
实验程序和结果:实验所使用的图像:1、利用Huffman进行JPEG图像压缩编码程序:I=imread('F\.jpg');pix(256)=struct('huidu',0.0,...%灰度值'number',0.0,...%对应像素的个数'bianma','');%对应灰度的编码[m n l]=size(I);fid=fopen('huffman.txt','w');%huffman.txt是灰度级及相应的编码表fid1=fopen('huff_compara.txt','w');%huff_compara.txt是编码表huf_bac=cell(1,l);for t=1:l%初始化结构数组for i=1:256pix(i).number=1;pix(i).huidu=i-1;%灰度级是0—255,因此是i-1pix(i).bianma='';end%统计每种灰度像素的个数记录在pix数组中for i=1:mfor j=1:nk=I(i,j,t)+1;%当前的灰度级pix(k).number=1+pix(k).number;endend%按灰度像素个数从大到小排序for i=1:255for j=i+1:256if pix(i).number<pix(j).numbertemp=pix(j);pix(j)=pix(i);pix(i)=temp;endendend%因为有的灰度值在图像中可能没有对应的像素值,所以要%找出在图像中存在像素的灰度级的个数,并保存在num中for i=256:-1:1if pix(i).number ~=0break;endendnum=i;count(t)=i;%记录每层灰度级%定义用于求解的矩阵clear huffmanhuffman(num,num)=struct('huidu',0.0,...'number',0.0,...'bianma','');huffman(num,:)=pix(1:num);%矩阵赋值for i=num-1:-1:1p=1;%算出队列中数量最少的两种灰度的像素个数的和sum=huffman(i+1,i+1).number+huffman(i+1,i).number;for j=1:i%如果当前要复制的结构体的像素个数大于sum就直接复制if huffman(i+1,p).number>sumhuffman(i,j)=huffman(i+1,p);p=p+1;else%如果当前要复制的结构体的像素个数小于或等于sum就插入和的结构体%灰度值为-1标志这个结构体的number是两种灰度像素的和huffman(i,j).huidu=-1;huffman(i,j).number=sum;sum=0;huffman(i,j+1:i)=huffman(i+1,j:i-1);break;endendend%开始给每个灰度值编码for i=1:num-1obj=0;for j=1:iif huffman(i,j).huidu==-1obj=j;break;elsehuffman(i+1,j).bianma=huffman(i,j).bianma;endendif huffman(i+1,i+1).number>huffman(i+1,i).number%说明:大概率的编0,小概率的编1,概率相等的,标号大的为1,标号小的为0 huffman(i+1,i+1).bianma=[huffman(i,obj).bianma '0'];huffman(i+1,i).bianma=[huffman(i,obj).bianma '1'];elsehuffman(i+1,i+1).bianma=[huffman(i,obj).bianma '1'];huffman(i+1,i).bianma=[huffman(i,obj).bianma '0'];endfor j=obj+1:ihuffman(i+1,j-1).bianma=huffman(i,j).bianma;endendfor k=1:count(t)huf_bac(t,k)={huffman(num,k)}; %保存endend%写出灰度编码表for t=1:lfor b=1:count(t)fprintf(fid,'%d',huf_bac{t,b}.huidu);fwrite(fid,' ');fprintf(fid,'%s',huf_bac{t,b}.bianma);fwrite(fid,' ');endfwrite(fid,'%');%先写灰度值,再写灰度级所对应的哈夫曼编码,并用将每个层级的灰度隔开end%按原图像数据,写出相应的编码,也就是将原数据用哈夫曼编码替代for t=1:lfor i=1:mfor j=1:nfor b=1:count(t)if I(i,j,t)==huf_bac{t,b}.huiduM(i,j,t)=huf_bac{t,b}.huidu;%将灰度级存入解码的矩阵fprintf(fid1,'%s',huf_bac{t,b}.bianma);fwrite(fid1,' ');%用空格将每个灰度编码隔开break;endendendfwrite(fid1,',');%用空格将每行隔开endfwrite(fid1,'%');%用%将每层灰度级代码隔开endfclose(fid);fclose(fid1);M=uint8(M);save('M')%存储解码矩阵编码结果:Huffman编码表:Huffman代码:Huffman解码程序:function huf_decode%哈夫曼编码解码load MI=imread('F:\Heat.jpg');subplot(1,2,1),imshow(I),title('原图')%读出原图subplot(1,2,2),imshow(M),title('huffman解码后的图')%读出解码后的图解码结果:2、利用行程编码进行图像压缩的MATLAB程序function yc%行程编码算法%读图I=imread('zbz.jpg');[m n l]=size(I);fid=fopen('yc.txt','w');%yc.txt是行程编码算法的灰度级及其相应的编码表%行程编码算法sum=0;for k=1:lfor i=1:mnum=0;J=[];value=I(i,1,k);for j=2:nif I(i,j,k)==valuenum=num+1;%统计相邻像素灰度级相等的个数if j==nJ=[J,num,value];endelse J=[J,num,value];%J的形式是先是灰度的个数及该灰度的值 value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%记录Y中每行行程行程编码数sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中 endend%输出相关数据[m1,n1,l1]=size(Y);disp('原图像大小:')whos('I');disp('压缩图像大小:')whos('Y');disp('图像的压缩比:');disp(m*n*l/sum);%将编码写入yc.txt中for k=1:l1for i=1:m1for j=1:col(i,k)fprintf(fid,'%d',Y(i,j,k));fwrite(fid,' ');endendfwrite(fid,' ');endsave('Y')%存储,以便解码用save('col')fclose(fid);结果:编码代码:function yc_decode%行程编编码解码load Y %下载行程编码Yload col %下载Y中每行行程行程编码数[m,n,l]=size(Y);for k=1:lfor i=1:mp=1;for j=1:2:col(i,k)d=Y(i,j,k);%灰度值的个数for c=p:p+d-1X(i,c,k)=Y(i,j+1,k);%将d个灰度值存入X中endp=p+d;endendendI=imread('zbz.jpg');subplot(1,2,1),imshow(I),title('原图')%读出原图subplot(1,2,2),imshow(X),title('行程编码解码后的图')%读出解码后的图解码后:3、利用DCT进行图像压缩的MATLAB程序I=imread(‘rice.png’); %读入原图像;I=im2double(I); %将原图像转为双精度数据类型;T=dctmtx(8); %产生二维DCT变换矩阵B=blkproc(I,[8 8],’P1*x*P2’,T,T’); %计算二维DCT,矩阵T 及其转置T’是DCT函数P1*x*P2的参数Mask=[ 1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个B2=blkproc(B,[8 8],’ P1.*x.’,mask); %只保留DCT变换的10个系数I2= blkproc(B2,[8,8],’P1*x*P2’,T’,T); %逆DCT,重构图像Subplot(1,2,1);Imshow(I);title(‘原图像’); %显示原图像Subplot(1,2,2);Imshow(I2);title(‘压缩图像’);%显示压缩后的图像实验结果:。
数字图像处理基于dct的图像压缩
数字图像处理基于DCT的图像压缩姓名:张凯学号:104753130780专业:空间技术处理及应用技术基于DCT的图像压缩算法介绍DCT变换的全称是离散余弦变换(Discrete Cosine Transform),离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的。
通过数字信号处理的学习我们知道实函数的傅立叶变换获得的频谱大多是复数,而偶函数的傅立叶变换结果是实函数。
以此为基础,使信号函数成为偶函数,去掉频谱函数的虚部,是余弦变换的特点之一。
它可以将将一组光强数据转换成频率数据,以便得知强度变化的情形。
若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。
压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值在第一个矩阵内。
理论背景视频信号的频谱线在0-6MHz范围内,而且1幅视频图像内包含的大多数为低频频谱线,只在占图像区域比例很低的图像边缘的视频信号中才含有高频的谱线。
因此,在视频信号数字处理时,可根据频谱因素分配比特数:对包含信息量大的低频谱区域分配较多的比特数,对包含信息量低的高频谱区域分配较少的比特数,而图像质量并没有可察觉的损伤,达到码率压缩的目的。
然而,这一切要在低熵(Entropy)值的情况下,才能达到有效的编码。
能否对一串数据进行有效的编码,取决于每个数据出现的概率。
每个数据出现的概率差别大,就表明熵值低,可以对该串数据进行高效编码。
反之,出现的概率差别小,熵值高,则不能进行高效编码。
视频信号的数字化是在规定的取样频率下由A/D转换器对视频电平转换而来的,每个像素的视频信号幅度随着每层的时间而周期性地变化。
每个像素的平均信息量的总和为总平均信息量,即熵值。
由于每个视频电平发生几乎具有相等的概率,所以视频信号的熵值很高。
熵值是一个定义码率压缩率的参数,视频图像的压缩率依赖于视频信号的熵值,在多数情况下视频信号为高熵值,要进行高效编码,就要将高熵值变为低熵值。
数据压缩实验报告4 (2)
桂林理工大学实验报告(2013~ 2014 学年度第一学期)班级: 学号 : 姓名: 实验名称: 实验四图像DCT变换编码与压缩日期: 2013年12月12日一、实验题目:图像DCT变换编码与压缩二、实验目的:(1)掌握离散余弦变换DCT的实现方法, 了解DCT的幅度分布特性, 从而加深对DCT变换的认识。
(2)掌握图像DCT变换编码的实现方法, 从而加深对变换编码压缩图像原理的理解。
三、实验内容:编程实现图像DCT变换编码。
四、预备知识:(1)熟悉DCT原理。
(2)熟悉变换编码原理。
(3)熟悉在MA TLAB环境下对图像文件的I/O操作。
五、实验原理:变换编码是在变换域进行图像压缩的一种技术。
图2.2.1显示了一个典型的变换编码系统。
压缩图像输入图像N×N图2.2.1 变换编码系统在变换编码系统中, 如果正变换采用DCT变换就称为DCT变换编码系统。
DCT用于把一幅图像映射为一组变换系数, 然后对系数进行量化和编码。
对于大多数的正常图像来说, 多数系数具有较小的数值且可以被粗略地量化(或者完全抛弃), 而产生的图像失真较小。
DCT是仅次于K-L变换的次最佳正交变换, 且以获得广泛应用, 并成为许多图像编码国际标准的核心。
离散余弦变换的变换核为余弦函数, 计算速度快, 有利于图像压缩和其他处理。
对于N×N的数字图像, 二维DCT变换的正反变换可表示为:11001100(21)(21)(,)()()(,)cos cos222(21)(21)(,)()()(,)cos cos22N Nx yN Nu vx u y vF u v c u c v f x yN Nx u y vf x y c u c v F u vN N Nππππ--==--==++=++=∑∑∑∑(2.2.1)其中,00()()1,1,2,...,1u vc u c vu v N⎧==⎪==⎨=-⎪⎩或MA TLAB图像处理工具箱实现离散余弦变换有两种方法:(1)使用函数dct2, 该函数用一个基于FFT的算法来提高当输入较大的方阵时的计算速度。
基于DCT变换的图像压缩技术的研究
本科毕业设计论文题目:基于DCT变换的图像压缩技术的研究专业名称:学生姓名:指导教师:毕业时间:毕业一、题目基于DCT变换的图像压缩技术的研究二、指导思想和目的要求指导思想:图像信息给人们以直观、生动的形象,成为人们获取外部信息的重要途径。
然而数字图像具有极大的数据量。
在目前的计算机系统条件下,若图像信息不经过压缩,则会占用信道,传输速率变慢,而且传输成本变得昂贵,这对图像的储存、传输及使用都非常不利,同时也阻碍了人们对图像的有效获取和使用。
因此,图像压缩技术的重要性也越来越高,在学习、生产、生活等方面的作用也越来越显著,对图像进行压缩成为图像研究领域的重要课题。
目的要求:基于DCT变换的图像压缩技术,首先介绍图像压缩的基本原理及方法,然后了解离散余弦变换的性质以及JPEG图像压缩算法,最后从DCT 变换、量化以及熵编码三个过程进行详细论述,利用MATLAB仿真软件实现基于DCT变换的图像压缩,去除冗余数据,节约文件所占的码字,降低原始图像数据量,解决图像数据量巨大的问题,以达到对图像进行压缩的目的。
三、主要技术指标图像的质量评价方法主要有两种:一种是主观评价,另一种是客观评价。
主观评价直接反映人眼的视觉感受,主要从亮度、色调、饱和度和细节分辨等方面入手,但因观察者个体差异、人力成本较高等原因而存在许多不足之处。
通常客观评价的方法应用更广泛。
常用的客观评价方法和标准有压缩比(CR)和峰值信噪比(PSNR)两种。
再根据不同的量化系数得到不同的压缩比和峰值信噪比。
x,和标准图像f0()y x,的大小是M⨯N,常用客观评价指标定设待评价图像f()y义如下:x,/f0()y x,不同的量化系数压缩比也不同(量化系数分压缩比:r=f()y别为:1、3、5、10、15等)由于量化系数不同得到的峰值信噪比也不同,根据均方差得出峰值信噪比。
均方差: MSE =()[]()[]}{()[]∑∑∑∑-=-=-=-=-10102010x 10y 20,,,M x N y M N y x f y x f Q y x f Q 式中,运算符Q []∙表示在计算前,为使计算值与人眼视觉感受一致而进行的某种预处理,如对数处理、幂处理等。
基于改进的DCT变换的图像压缩算法研究
基于改进的DCT变换的图像压缩算法研究图像压缩是数字图像处理的重要研究领域之一。
图像压缩是指将数字图像的数据量缩小,以节省存储空间和传输代价。
图像压缩技术包括有损压缩和无损压缩两种。
有损压缩是在压缩过程中有一部分数据丢失,可以达到更高的压缩比,但会影响图像的质量。
而无损压缩则是在不丢失数据的情况下,压缩图像的数据量,但压缩比相对较小。
在数字图像中,我们可以用离散余弦变换(DCT)进行图像压缩。
DCT变换是将图像从空间域转换到频域的一种方法。
通过DCT变换,我们可以得到图像的频域系数,可以过滤掉一些高频的小波,达到图像压缩的目的。
但是DCT变换在压缩过程中存在问题,传统的DCT变换容易造成“块效应”现象,也就是说在压缩过程中,图像被分成若干个块,而每一块单独进行压缩,导致压缩后的图像存在明显的方块状失真。
因此,我们需要对DCT变换进行改进,以避免“块效应”现象。
改进后的DCT变换被称为改进算法DCT-IV变换。
改进算法DCT-IV变换通过交错扫描和直接DCT变换两种方法对块进行编码,有效地避免了“块效应”现象。
改进算法DCT-IV变换的编解码复杂度较传统DCT变换略高,但是在图像处理方面,具有更好的压缩性能和更高的视觉感受质量。
改进算法DCT-IV变换还具有更好的数据利用率和压缩能力,特别是当需要压缩高质量图像时,改进算法DCT-IV 变换将表现出更为先进的压缩性能。
但是,改进算法DCT-IV变换也存在一些问题。
首先,改进算法DCT-IV变换需要一定的计算量,特别是当需要处理大型图像时,需要更长的计算时间;其次,改进算法DCT-IV变换的压缩比相对于传统DCT变换而言并不是太高。
为了解决这些问题,研究人员正在发展新的基于改进的DCT变换的图像压缩算法。
这些算法采用改进算法DCT-IV变换的基础思想,对该算法进行了优化,以达到更高的压缩比和更高的图像品质。
例如,信噪比改进算法DCT(ISBDCT)就是这样一种基于改进的DCT变换的图像压缩算法。
数字图像处理 图像压缩
实验报告实验名称实验二图像压缩课程名称数字图像处理A姓名成绩班级学号日期地点(1)掌握离散余弦变换DCT的实现方法,了解DCT的幅度分布特性,从而加深对DCT 变换的认识;(2)掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解;(3)使用DCT变换编码编写程序实现图像压缩;2.实验环境(软件条件)Windws2000/XPMATLAB 7.03.实验方法根据如图2.1所示的典型变换编码系统,采用DCT变换对256×256大小、256级灰度的数字图像lena.bmp(如图2.2所示)进行如下处理:图2.1 典型变换编码系统图2.2 实验图像lena.bmp(1)对图像进行8×8分块处理并作DCT变换,观察图像8×8子块的DCT系数的分布,并分析其特点;(2)对DCT系数进行量化及反量化处理,求反量化系数的逆DCT变换,重新显示重建图像、误差图像和误差图像的直方图;(3)将量化步长分别增大为初始值的2倍、4倍、8倍后再进行DCT变换编码,显示不同量化步长条件下的重建图像、误差图像以及误差图像的直方图。
分析重建图像质量和量化步长的关系。
结果图原图像经dct 变化的图像对经DCT 变化后的图像进行量化反量化的图像050100150200250200040006000原图像经dct 变化的图像对经DCT 变化后的图像进行量化反量化的图像05010015020025020004000原图像经dct 变化的图像对经DCT 变化后的图像进行量化反量化的图像05010015020025020004000原图像经dct 变化的图像对经DCT 变化后的图像进行量化反量化的图像050100150200250200040005.实验结论结果图离散余弦变换的变换核为余弦函数。
余弦变换除了具有一般的正交变换性质外,它的变换矩阵的基向量能较好的描述图像信号和人类语音信号的相关特征,因此被应用与图像压缩编码的语音信号处理等领域。
基于DCT变换的数字图像压缩(实验4报告)
多媒体技术实验报告学院:城南学院通信1202班姓名学号指导老师:***时间:2015/12/09实验四:数字图像压缩1.实验目的1)理解有损压缩和无损压缩的概念;2)理解图像压缩的主要原则和目的;3)了解几种常用的图像压缩编码方式;4)利用MATLAB程序进行图像压缩。
2. 实验原理1)图像压缩原理图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
①冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
②信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
本实验主要利用MA TLAB程序进行离散余弦变换(DCT)压缩和行程编码(Run Length Encoding,RLE)。
2)离散余弦变换(DCT)图像压缩原理离散余弦变换DCT在图像压缩中具有广泛的应用,它是JPEG、MPEG等数据压缩标准的重要数学基础。
用DCT压缩图像的过程为:①首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT变换。
②将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式。
用DCT解压的过程为:①对每个8×8或16×16块进行二维DCT反变换。
