信息科学与工程学院课程设计报告(2010—2011学年第一学期)课程名称:综合课程设计____班级:电子0702学号:07姓名:指导教师:2010年11月课程设计报告-1-课程设计题目:基于MATLAB的JPEG压缩编码目的与任务:1.从BMP格式图像的文件中(未压缩)读出图像,并能显示。2.将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。3.要求能读出jpg文件,并显示在界面上内容和要求:把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件并显示出来。课程设计报告-2-设计内容一、设计思路本次设计中将JPEG图像编码过程分为四个部分,即:颜色模式转换及采样,DCT变换,量化,编码。首先对BMP图像进行读取,得到RGB三基色数据,由于人眼对图片上的亮度Y的变化远比色度UV的变化更敏感,因此要对RGB进行色彩转换,通过RGB到YUV的转换公式,将RGB转化为YcbCr色彩空间,得到亮度分量Y和色差分量UV。此后,对得到的YUV数据进行DCT,通过此步骤可以降低图像数据的相关性。然后,对变换后的数据进行量化,量化采用数据与标准量化表相除的方法。由于量化表在高频的位置取了较大的值,数据的高频部分便得到了许多的“0”值。之后,进行Zigzag扫描,将量化后的数据中更多的“0”值排列到数据的末端。然后进行Huffman编码,最终形成压缩后的二进制数据码流,完成图像压缩编码。课程设计报告-3-二、系统框图根据设计思想画出系统流程图如下简单说明:要将一幅彩色图像进行压缩编码,首先将图像RGB分量转化为亮度分量和色差分量,然后将图像分成8×8的象素块,用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行Zig-Zag扫描和Huffman编码,实现了图像压缩。开始输入一幅原始图像根据量化表,对变换系数进行量化分成8*8像素块,分别做DCT变换对经扫描得到的DC和AC系数分别进行Huffman熵编码得到整个图像编码后的比特序列,并计算压缩比特率对DC和AC系数分别进行Huffman熵编码结束对量化后的变化系数进行Zig—Zag扫描课程设计报告-4-三、程序模块框图1.基于DCT变换基于DCT变换的程序流程图此部分可分为三个过程:原始图像的载入,颜色模式转换及采样以及DCT变换(1)图像文件的读取。MATLAB中利用函数imread来实现图像文件的读取操作。其语法格式为:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[…]=imread(filename)开始载入原始图像是YUV??RGB-YUV设置压缩比设置原始图像已对原始图像进行8*8分块?对图像进行分块显示压缩后的图像进行DCT反变换重排系数块设置压缩比保留系数求出DCT系数的排列矩阵进行DCT变换结束NYYN课程设计报告-5-Filename:图像文件名;fmt:图像文件格式。(2)颜色模式转换及采样(3)DCT变换对整幅图像进行DCT变换,具体程序实现:RGB=imread(autumn.BMP);%从内存中读取BMP格式的真彩色图像I=rgb2gTay(RGB);%将真彩色图像RGB转换为灰度级亮度图像II=im2double(I);%将I变换为双精度格式I1=idct2(I);%对I进行二维DCT,返回的I1包含DCT系数12=idct2(I1);%求二维DCF逆变换,重构图像subplot(2,2,1);imshow(I);subplot(2,2,2);imshow(I2);subplot(2,2,3);imsho'a,(I1);subplot(2,2,4);imshow(abs(I—I2);figrue,mesh(I1);title('变换谱三维彩色图')_colorbar(vert)%在垂直轴旁增加一颜色等级条课程设计报告-6-2.量化量化过程的程序流程图图像文件的显示。在MATLAB中,可以调用image函数来显示图像,其语法格式为:Image(C)image是用来显示附标图像,即显示的图像上有x、y坐标轴的显示,可以看到图像的像素大小。量化过程是控制JPEG压缩比的关键。这个步骤除掉了一些高频量,损失了很高细节。但事实上人眼对高空间频率远没有低频敏感。所以处理后的视觉损失很小。另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程。大量的图象信息被包含在低空间频率中。经过量化处理后,在高空间频率段,将出现大量连续的零。开始结束计算矢量距离的子函数进行分块处理设置码书的大小设置码字的大小求出图像像素的行数和列数装入和显示原始图像课程设计报告-7-3.“Z”字扫描Zig-Zag程序流程图矢量中有许多连续的0,可以使用RLE来压缩掉这些0。假设有一组矢量(64个的后63个,已按z字形扫描得到)是57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,0,0,0,……,0经过RLC压缩后就是(0,57);(0,45);(4,23);(1,-30);(0,-16);(2,1);EOB,EOB是一个结束标记,表示后面都是0了,用(0,0)表示EOB.但是,如果这组数字不以0结束,那么就不需要EOB。开始产生顺序递增地址数据写入数据存储器是否写满一个数据块?扫描地址表输出符合Zig-Zag顺序的地址数据按扫描顺序输出数据结束NY课程设计报告-8-4.huffman编码Huffman编码程序流程图在初始化时候可以用以下程序:data=double(image);[w,h]=size(data);hist=imhist(image);hist=hist.*1.0./(w*h);哈夫曼编码部分:开始结束装入Huffman数据使左分支编码为1,右分支编码为0将消息添加到队列的最后为N-1消息重新进行排列做准备遍历至原始消息,即叶子节点,输出读码字分别遍历左右分支节点获得Huffman码字将最后两个出现概率最小的消息合成一个消息将N个消息进行排序初始化原始消息数排序列表初始化码字初始化为0课程设计报告-9-fori=1:numres{i}=blanks(260);cd=blanks(260);start=num;c=i;p=ht(c).pare;while(p0)if(ht(p).lch==c)cd(start)='0';elsecd(start)='1';endc=p;p=ht(c).pare;start=start-1;end课程设计报告-10-四、设计总结本设计主要介绍了JPEG的编码。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件。论文叙述的图像压缩编码算法,采用了JPEG的核心离散余弦变换算法。DCT是正交变换,它可以将8*8图像的空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,因此它在软件中容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。在这次课程设计的整个过程中,收获主要有以下几点:1)开始编程前,一定要了解系统意图,做好规划。2)很好地实现了理论知识与实践的结合。把以往所学的专业知识和编程思想应用到了实际设计当中,比较顺利地解决了综合设计中遇到的一些问题。同时对所学的理论知识也有了更深刻、更系统的了解。同时也增强了运用所学知识解决实际问题的能力。3)通过这次课程设计,很好的领会了程序设计的思想。4)这次课程设计中,虚心向老师和其它同学请教,与其团结协作,很好地培养了我的团队精神和协作能力。通过学习和交流,看到了别人的优点,也发现了自己的不足,以后要进一步完善自己,总的说来,通过这次课程设计锻炼了自己查阅资料、阅读和使用软件的能力,对各种软件的应用和操作能力,以及编程能力。确实学到不少知识,得到很好的锻炼。课程设计报告-11-指导教师意见内容及要求评定等级优良中及格不及格独立完成全部工作量课程设计报告质量课程设计内容创新性出勤率综合得分教师评语:指导教师:年月日课程设计报告-12-《综合课程设计》教学大纲教学环节名称综合课程设计英文名称CourseDesign课程编码周数3周学分3学分理论基础电子技术基础、电子线路、微机系统原理与接口技术、单片机原理等。教学目的对大学期间所学的电子专业基础知识和专业知识进行一次综合运用,为下一步毕业实习和毕业设计做好准备。学生通过本课程设计可以进一步理解电子技术、电路理论、微机等方面的相关知识,并可综合运用这些知识解决一定的实际问题,使学生在所学知识的综合运用能力上以及分析问题、解决问题能力上得到一定的提高。知识、素质和能力要求基本素质、能力要求:掌握专业基础理论以及系统设计的能力。综合素质、能力要求:要求具备综合运用已有知识,设计完整实用电路系统的能力。创新素质、能力要求根据设计要求,创新设计出具有特色的系统的能力。教学内容、方法及课时安排教学内容方法及课时安排课程设计动员,提出要求,布置任务,学生查阅资料;选择总体方案,设计单元电路;选择元器件,计算参数;考核;审图,画出总体电路图,完成设计报告。教师指导,学生完成设计任务。第一周:动员,提出要求,布置任务。查阅资料,选择总体方案。第二周:设计单元电路,选择元器件,计算参数。第三周:审图,画出总体电路图,考核,完成实习报告。优良中及格不及格考核评分标准整体设计思路正确;单元电路设计正确;原理说明正确;参考文献完备;设计报告清晰。整体设计思路正确;单元电路设计基本正确;原理说明正确;参考文献较完备;设计报告合格。整体电路设计完整;原理说明基本正确;参考文献较完备;设计报告合格。整体电路设计尚存问题;原理说明不够清晰;列出参考文献;设计报告合格。电路设计不完整;原理说明不清楚;参考文献不具备;设计报告不合格。