图像编码实验报告
- 格式:doc
- 大小:43.50 KB
- 文档页数:7
图像编码实验报告图像编码实验报告一、引言图像编码是一项重要的技术,它可以将图像数据进行压缩和传输,以节省存储空间和传输带宽。
本实验旨在探究图像编码的原理和方法,并通过实验验证不同编码算法的性能和效果。
二、实验目的1. 理解图像编码的基本原理和概念;2. 掌握JPEG和PNG两种常见的图像编码算法;3. 分析和比较不同编码算法的压缩率和图像质量。
三、实验过程1. 实验环境搭建在本实验中,我们使用MATLAB软件进行图像编码实验。
首先,安装MATLAB 并导入实验所需的图像处理工具箱。
2. 图像压缩选择一张分辨率较高的彩色图像作为实验对象。
首先,使用JPEG编码算法对图像进行压缩。
在压缩过程中,可以调整压缩比例参数,观察压缩后图像的质量变化。
然后,使用PNG编码算法对同一张图像进行压缩,并比较JPEG和PNG 两种算法的压缩率和图像质量。
3. 实验结果分析根据实验结果,我们可以得出以下结论:- JPEG算法在高压缩比下会出现明显的失真,但在适当的压缩比下可以获得较好的图像质量;- PNG算法在压缩过程中不会导致明显的失真,但压缩率相对较低。
四、实验讨论1. 图像编码的原理图像编码是将图像数据转换为二进制码流的过程。
常见的图像编码方法包括无损编码和有损编码。
无损编码可以完全还原原始图像,但压缩率较低;有损编码可以获得较高的压缩率,但会引入一定的失真。
2. JPEG编码算法JPEG是一种常用的有损图像编码算法。
它采用离散余弦变换(DCT)将图像从空间域转换为频域,并通过量化和熵编码实现压缩。
JPEG算法在高频部分进行较大幅度的量化,从而实现高压缩率,但也导致了明显的失真。
3. PNG编码算法PNG是一种无损图像编码算法。
它采用预测编码和差分编码的方法,将图像数据转换为无损的二进制码流。
PNG算法在压缩过程中不引入明显的失真,但压缩率相对较低。
五、实验总结通过本次实验,我们深入了解了图像编码的原理和方法,并通过实验验证了JPEG和PNG两种编码算法的性能和效果。
实验三图像编码一、实验内容:用Matlab语言、C语言或C++语言编制图像处理软件,对某幅图像进行时域和频域的编码压缩。
二、实验目的和意义:1. 掌握哈夫曼编码、香农-范诺编码、行程编码2.了解图像压缩国际标准三、实验原理与主要框架:3.1实验所用编程环境:Visual C++6.0(简称VC)3.2实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:(如图3.1)图3.1 位图的文件结构具体组成图:单色DIB 有2个表项16色DIB 有16个表项或更少 256色DIB 有256个表项或更少 真彩色DIB 没有调色板每个表项长度为4字节(32位) 像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍biSize biWidth biHeight biPlanes biBitCount biCompression biSizeImagebiXPelsPerMeter biYPelsPerMeter biClrUsedbiClrImportantbfType=”BM ” bfSizebfReserved1 bfReserved2 bfOffBits BITMAPFILEHEADER位图文件头 (只用于BMP 文件)BITMAPINFOHEADER位图信息头Palette 调色板DIB Pixels DIB 图像数据3.3 数字图像基本概念数字图像是连续图像(,)f x y 的一种近似表示,通常用由采样点的值所组成的矩阵来表示:(0,0)(0,1)...(0,1)(1,0)(1,1)...(1,1).........(1,0)(1,1)...(1,1)f f f M f f f M f N f N f N M -⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥----⎣⎦每一个采样单元叫做一个像素(pixel ),上式(2.1)中,M 、N 分别为数字图像在横(行)、纵(列)方向上的像素总数。
实验六 统计压缩编码一、实验目的:1,掌握不等长编码的基本原理及方法2,掌握衡量压缩效果的技术指标3,掌握Huffman 编码的方法二,实验条件1,MATLAB2,典型的灰度、彩色图像文件三,原理1.去除数据冗余度可以有效的压缩数据2.图像编码的主要技术指标:压缩比、客观评价值SNR 、主观评价值 四,实验内容:1,通过MATLAB 编程,对8*8图像子块实施Hiffman 编码并计算平均码长 2,计算上述编码的效率,压缩比并对相应数据作出解释。
五,实验步骤1,Huffman 编码的方法与步骤如下所示:(1)将概率按从小到大的顺序排列(2)给两个概率最小的信源符号1()P a 和2()P a 各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和最为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源,称为信源的第一次缩减信源,用S1表示。
(3)将缩减信源S1的符号仍按概率从大到小的顺序排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2。
(4)重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩的两个符号的概率之和为1。
然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。
2,假设这个8*8的字块是由0-5这六个像素组成,对这个字块进行概率统计,并按概率从小到大的顺序排列,如下所示:P=(0.25 0.25 0.2 0.15 0.1 0.05)则对于假设的字块进行Huffman编码的matlab程序如下所示:n=input('N=');%L=0; H=0;for i=1:nP(i)=input('P=');%输入像素概率分布s=s+P(i);endif s~=1error('不符合概率分布');endP=sort(P);p=P;mark=zeros(n-1,n); %mark为n-1行,n列矩阵,用来记录每行概率排列次序for i=1:n-1[P,num]=sort(P); %对输入元素排序并记录mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];P=[P(1)+P(2),P(3:n),1];endfor i=1:n-1table(i,:)=blanks(n*n); %blanks 创建空格串endtable(n-1,n)='1';table(n-1,2*n)='0'for i=2:n-1table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)==1))-(n-2):n*(find(mar k(n-i+1,:)==1))); %按mark的记录依次赋值table(n-i,n)='1';table(n-i,n+1:2*n-1)=table(n-i,1:n-1);table(n-i,2*n)='0';for j=1:i-1table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1));%mark的记录依次赋值endend%得到编码后的码字for i=1:nW(i,1:n)=table(1,n*(find(mark(1,:)==i)-1)+1:find(mark(1,:)==i)*n);l(i)=length(find(abs(W(i,:))~=32));%32表示空字符,要找不是空字符的个数,即为每个数编码的个数L=L+p(i)*l(i); %计算平均码长H=H-p(i)*log2(p(i));%计算信源熵endxiaolv=H/L; %计算编码效率disp('输出每个概率的编码');disp(W);disp('输出平均码长L:');disp(L);disp('输出编码效率xiaolv:');disp(xiaolv);3,计算结果如下:(1)输出每个灰度级的编码00010000001111001(2)计算其平均码长和编码效率平均码长L=2.4500编码效率xiaolv=0.9891图一运行及结果六,实验总结:在实验中,假设了灰度级为6,即像素值为0-5。
太原理工大学现代科技学院数字图像处理课程实验报告专业班级测控14-4学号 2014101874姓名杨东倡指导教师刘帆实验名称 实验三、图像压缩编码技术 同组人 专业班级 测控14-4 姓名 杨东倡 学号 2014101874 成绩 实验三、图像压缩编码技术 一、实验目的 1、理解有损压缩和无损压缩的概念; 2、理解图像压缩的主要原则和目的; 3、了解几种常用的图像压缩编码方式; 4、利用MATLAB 程序进行图像压缩编码。
二、实验原理 1、图像压缩原理 图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1)冗余度压缩方法,也称无损压缩、信息保持编码或熵编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类: (1)无损压缩编码种类 哈夫曼(Huffman )编码,算术编码,行程(RLE )编码,Lempel zev 编码。
(2)有损压缩编码种类 预测编码,DPCM ,运动补偿; 频率域方法:正交变换编码(如DCT),子带编码; 空间域方法:统计分块编码; 模型方法:分形编码,模型基编码; 基于重要性:滤波,子采样,比特分配,向量量化; (3)混合编码。
短时记忆的视觉编码实验报告短时记忆(short-term memory)是人类大脑中非常重要的一种记忆形式,它短暂地保存大脑接收的信息。
然而,短时记忆的容量和持续时间非常有限,经过短时间的编码后很快会被遗忘。
因此,了解短时记忆的视觉编码过程对于了解大脑记忆和信息处理的机制非常重要。
为了研究短时记忆的视觉编码过程,科学家们利用了各种不同的研究方法。
其中一种比较有代表性的实验是通过短暂呈现刺激来考察人们对于刺激的记忆。
在这种实验中,研究人员使用计算机屏幕呈现数个物体或者数字,持续时间通常是几毫秒或者几秒钟。
参与者在看完刺激之后需要回忆并即时报告自己所看到的物体或数字。
在这种实验中,研究人员可以通过不同的参数来改变刺激呈现和参与者回忆的情况。
例如,他们可以改变刺激的数量、形状、大小、持续时间以及报告的时限等等。
通过这些参数的变化,研究人员可以更好地理解人脑对于短时刺激的处理和记忆机制。
一些早期的实验表明,在高度注意状态下,人们能够记忆和回忆大约7个左右的物体或数字,这被称为短时记忆容量的极限。
然而,随着研究技术和方法的发展,这个数字被质疑,并且更多的研究表明人脑在短时记忆的编码和回忆过程中不仅仅受到容量的限制,还受到其他因素的影响,比如刺激的复杂度和规律性等等。
在最近的一些研究中,研究人员通过使用功能磁共振成像(fMRI)等技术来探究人脑在短时记忆编码过程中的神经机制。
他们发现,短时记忆编码的过程涉及到多个脑区的协同作用,包括视觉皮层、前额叶和颞顶叶等。
总之,短时记忆的视觉编码实验是研究记忆和大脑信息处理机制的一个重要手段。
这种实验以简单、规律化的形式呈现刺激,通过改变实验参数和使用不同的研究技术,揭示了人脑如何处理和存储短暂的信息。
这种研究对于理解大脑认知机制、发展认知科学等具有重要的意义和价值。
太原理工大学现代科技学院数字图像处理课程实验报告专业班级测控14-4学号2014101874姓名杨东倡指导教师刘帆实验名称 实验三、图像压缩编码技术 同组人 专业班级 测控14-4 姓名 杨东倡 学号 2014101874 成绩实验三、图像压缩编码技术一、实验目的 1、理解有损压缩和无损压缩的概念; 2、理解图像压缩的主要原则和目的; 3、了解几种常用的图像压缩编码方式; 4、利用MATLAB 程序进行图像压缩编码。
二、实验原理 1、图像压缩原理 图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1)冗余度压缩方法,也称无损压缩、信息保持编码或熵编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类: (1)无损压缩编码种类 哈夫曼(Huffman )编码,算术编码,行程(RLE )编码,Lempel zev 编码。
……………………………………装………………………………………订…………………………………………线…………………………(2)有损压缩编码种类预测编码,DPCM ,运动补偿;频率域方法:正交变换编码(如DCT),子带编码;空间域方法:统计分块编码;模型方法:分形编码,模型基编码;基于重要性:滤波,子采样,比特分配,向量量化;(3)混合编码。
实验报告1. 实验目的通过阅读 JPEG 编码器代码,了解编码原理、编码过程和代码实现。
2. 实验要求(1)详细阅读 JPEG 编码器代码,结合编码原理,了解整个代码实现的过程(2)输入 bmp 文件,在 VC6.0 下跑通代码,查看编码器的压缩倍数(3)对有些模块进行单步跟踪调试,详细了解其过程3. 实验原理JPEG 编码的基本过程如下(1)像素阵列分块(分为 8*8 小块)(2)进行 DCT 离散余弦变换(3)进行 Z 字形扫描,将二维阵列变为一维数列(4)进行量化(5)熵编码( Huffman 编码)(6)封装为 JPG 文件本次试验所用 bmp 转 jpg 编码器的编码步骤(1)读取 bmp 文件信息,创建并打开jpg 文件(2)8*8 分块及色彩空间变换( RGB 转 YCbCr )(3)快速离散余弦变换 FDCT(4)量化(5)Z 字形扫描(6)使用差分脉冲编码调制对直流系数DC 进行编码(7)使用游程长度编码对交流系数 AC 编码(8)霍夫曼熵编码4. 代码分析整个代码过程可分为三个部分( 1)文件操作( 2)对编码所用信息表进行初始化( int_all )( 3)主编码器进行编码(main_encoder)主函数分析int main(int argc, char *argv[]) {厂 char BMP_file name[64]; char JPG_file name[64];WORD width_orig in al,height_orig in al; //the orig inal image dime nsions,// before we made them divisible by 8 BYTE len_file name;bitstring fillbits; //filling bitstring for the bit alignment of the EOI(end of image) marker if (argc>1) {strcpy(BMP_file name,argv[1]);if (argc>2)strcpy(JPG_file name,argv[2]); else {// replace ".bmp" with ".jpg" strcpy(JPG_filename, BMP_filename); len _file name=strle n( BMP_file name);strcpy(JPG_file name+(len_file name-3),"jpg");〃 从后三位开始拷贝 jpg.elseexitmessage("S yn tax: enc fis.bmp [fis.jpg]"); 〃BMP_file name="";load_bitmap(BMP_filename, &width_original, &height_original); //加载 bmp 文件信息fp_jpeg_stream = fopen(JPG_filename,"wb"); //仓U 建 jpg 文件流init_all();〃初始化函数,初始化量化、霍夫曼及亮度色差转换表等,为编码做准备 f SOFOinfo.width = width_original;SOFOi nfo.height = height_origi nal; // 写入图像的宽和高writeword(0xFFD8); // SOI ,写入图像开始标志 write_A PP0i nfo();// write_comme nt("Cris made this JPEG with his own en coder");write_DQTinfo(); 〃写入量化表write_SOF0info(); //写入帧开始 write_DHT in fo();〃写入霍夫曼表 write_SOSinfo();/ /写入扫描开始信息// init global variables byte new = 0; // curre nt bytebytepos = 7; // bit position in this bytemain_encoder();// 主编码函数// Do the bit alig nment of the EOI marker if (bytepos >= 0)创建并打开jpg 文件写入jpg 文件信息。
编码器实验报告编码器实验报告引言在现代信息技术的发展中,编码器扮演着至关重要的角色。
编码器是一种将输入信息转换为特定格式的设备或程序,它可以将信息从一种形式转换为另一种形式,以便于存储、传输或处理。
本实验旨在探索不同类型的编码器以及它们在实际应用中的作用和效果。
一、数字编码器数字编码器是将模拟信号转换为数字信号的设备。
在本次实验中,我们使用了一种常见的数字编码器——脉冲编码器。
脉冲编码器通过将连续的模拟信号转换为离散的数字脉冲信号来实现。
在实验中,我们使用了编码器将音频信号转换为数字信号,并通过计算机进行处理和分析。
实验结果表明,数字编码器能够准确地捕捉到原始音频信号的细微变化,并将其转换为数字形式,方便后续的存储和处理。
二、图像编码器图像编码器是将图像信号转换为特定格式的设备或程序。
在本次实验中,我们使用了一种常见的图像编码器——JPEG编码器。
JPEG编码器通过对图像进行压缩,减少冗余信息的存储空间,从而实现图像的高效传输和存储。
实验结果表明,JPEG编码器能够在保持图像质量的同时,大幅度减少图像文件的大小,提高图像传输和存储的效率。
三、视频编码器视频编码器是将视频信号转换为特定格式的设备或程序。
在本次实验中,我们使用了一种常见的视频编码器——H.264编码器。
H.264编码器是一种高效的视频压缩技术,通过对视频信号进行压缩,减少冗余信息的存储空间,从而实现高质量视频的传输和存储。
实验结果表明,H.264编码器能够在保持视频质量的同时,大幅度减少视频文件的大小,提高视频传输和存储的效率。
四、语音编码器语音编码器是将语音信号转换为特定格式的设备或程序。
在本次实验中,我们使用了一种常见的语音编码器——MP3编码器。
MP3编码器通过对语音信号进行压缩,减少冗余信息的存储空间,从而实现高质量语音的传输和存储。
实验结果表明,MP3编码器能够在保持语音质量的同时,大幅度减少语音文件的大小,提高语音传输和存储的效率。
视觉编码保持实验报告(浙江大学心理与行为科学系,311010 )摘要:本实验旨在对Posner 等人的经典视觉编码保持实验进行验证,了解短时记忆中各种编码形式的特点,并进一步探讨短时记忆中各种形式编码的影响因素。
本实验利用反应时的减数法,对不同字母对的相同性进行判断从而进行研究,实验结果发现,在短时记忆中,视觉编码发生在前期较短时间,并迅速消退;之后听觉编码成为主要编码形式。
本实验与Posner实验结果存在一定差异,并针对差异进行了分析关键词:短时记忆视觉编码信息加工反应时减数法1 引言1.1反应时的减数法信息加工理论认为:信息在脑内要经过一系列操作加工,这些操作加工有明确的先后次序,在不同的加工阶段信息处于不同的状态,而这些都是在时间上进行的的,其特征必然能在反应时上表现出来。
减数法是一种用减法方法将反应时分解成各个成分,然后来分析信息加工过程的方法。
减数法的反应时实验逻辑是如果一种作业包含另一种作业所没有的某个特定的心理过程,且除此过程之外二者在其他方面均相同,那么这两种反应时的差即为此心理过程所需的时间。
如短时记忆编码中形同字母对与音同形异字母对反应时之差即代表着期间对字形的视觉编码。
1.2短时记忆短时记忆是指保持十几秒至一分钟以内的记忆,一般把它看作是处于感觉记忆和长时记忆之间的一个记忆阶段,一般包括两部分:一是直接记忆,即输入的信息没有经过进一步的加工。
它的容量相当有限,另一个是工作记忆,即输入的信息经过再编码,使其容量扩大。
近几十年来,记忆领域研究得较多的问题之一就是短时记忆的编码方式。
短时记忆的的编码方式可以分为听觉编码和视觉编码,其中1964年Conrad对短时记忆的听觉编码的相关研究,结果发现听觉编码是记忆的一种有效方式。
1969年,Posner等人对短时记忆的视觉编码进行了研究,并认为某些短时记忆信息可以有视觉编码和听觉编码两个连续的阶段,视觉编码实为存在。
相关研究表明造成学生对不同类别材料的记忆力差异是由记忆时的编码方式与加工程度不同而引起的。
图
像
压
缩
编
码(实验报告)
一、实验目的
1.理解图像压缩目的及意义;
2.理解有损压缩和无损压缩的概念;
3.了解几种常用的图像压缩编码方法;
4.利用MATLAB程序进行图像压缩。
二、实验原理
图像压缩主要目的是为了节省存储空间,提高存储、处理、传输速度。
虽然表示图像需要大量的数据,但数据是高度相关的,或者说存在冗余(Redundancy),去掉这些冗余信息可以有效地压缩图像,同时不会损坏图像的有效信息。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1)冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下几类:
(1)熵编码。
熵编码是纯粹基于信号统计特性的编码技术,是一种无损编码。
熵编码的基本原理是给出现概率较大的符号赋予一个短码字,而给出现概率较小的符号赋予一个长码字,从而使得最终的平均码长很小。
常见的熵编码有:哈夫曼(Huffman)编码,算术编码,行程(RLE)编码。
(2)预测编码。
预测编码是利用图像信号的空间或时间相关性,用已传输的像素对当前的像素进行预测,然后对预测值与真实值的差(预测误差)进行编码处理和传输。
常用的预测编码有差分脉码调制(DPCM)和运动补偿法。
(3)变换编码。
变换编码通常是将空间域上的图像经过正交变换映射到另一变换域上,使变换后的系数之间的相关性降低。
(4)混合编码。
混合编码是指综合了熵编码,变换编码或预测编码的编码方法。
有JBIG,H261,JPEG,MPEG等技术标准。
三、实验内容
本实验主要利用MATLAB程序进行离散余弦变换(DCT)压缩和行程编码(Run Length Encoding, RLE)。
1、离散余弦变换(DCT)图像压缩
离散余弦变换DCT在图像压缩中具有广泛的应用,它是JPEG、MPEG等数据压缩标准的重要数学基础。
和相同图像质量的其他常用文件格式(如GIF(可交换的图像文件格式),TIFF(标签图像文件格式),PCX(图形文件格式))相比,JPEG是目前静态图像中压缩比最高的。
JPEG比其他几种压缩比要高得多,而图像质量都差不多(JPEG处理的图像只有真彩图和灰度图)。
正是由于其高压缩比,使得JPEG被广泛地应用于多媒体和网络程序中。
JPEG 有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基本系统(Baseline)。
用DCT压缩图像的过程为:
(1)首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT变换。
(2)将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式。
用DCT解压的过程为:
(1)对每个8×8或16×16块进行二维DCT反变换。
(2)将反变换的矩阵的块合成一个单一的图像。
余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下的大多数的DCT系数值非常接近于0。
对于通常的图像来说,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。
所以,利用DCT变换进行图像压缩可以节约大量的存储空间。
压缩应该在最合理地近似原图像的情况下使用最少的系数。
使用系数的多少也决定了压缩比的大小。
在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。
在压缩过程的第2步,还可以采用RLE和Huffman编码来进一步压缩。
2、行程编码(RLE):
例如如下这幅的二值图像,
如果采用行程编码可以按如下格式保存
其中10和8表示图像的宽和高。
在这个小例子中行程编码并没有起到压缩图像的作用。
这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。
对于灰度图像和二值图像,用行程编码—般都有很高的压缩率。
行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。
很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等。
3. 图像压缩编码的MATLAB代码
(1)利用DCT变换进行图像压缩的MATLAB程序
RGB = imread('*.tif');
I = rgb2gray(RGB);
J = dct2(I);
imshow(log(abs(J)),[]), colormap(jet(64)), colorbar
J(abs(J) < 10) = 0;
K = idct2(J);
figure,imshow(I)
figure,imshow(K,[0 255])
(2)利用离散余弦变换进行JPEG图像压缩
I=imread(‘*.tif’); %读入原图像;
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 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]; %二值掩膜,用来压缩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(‘压缩图像’);%显示压缩后的图像。
对比原始图像和压缩后的图像,虽然舍弃了85%的DCT系数,但图像仍然清晰(当然有一些质量损失)
3)利用行程编码(RLE)进行图像压缩
I=checkerboard(10,2); %调入原图像
[m n]=size(I);
J=[];
for i=1:m
value=I(i,1);
num=1;
for j=2:n
if I(i,j)==value
num=num+1;
else
J=[J num value];
num=1;
value=I(i,j);
end
end
I=[J num value 0 0]; %添加的行判断位 0 0
end
disp(‘原图像大小:’)
whos(‘I’);
disp(‘压缩图像大小:’)
whos(‘J’);
disp(‘图像的压缩比:’) disp(m*n/length(J))。