资源描述:
《图像压缩实验指导书》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数字图像处理上机实验指导书童立靖北方工业大学计算机学院tong_lijing@163.com像压缩一、实验目的、要求与环境1.1目的:通过实验,了解数字阁象压缩的一般方法,掌握阁像压缩的编程方法,了解阁象压缩效果的评价方法。1.2要求:对自选的图象进行离散余弦变换,将其进行图象压缩处理,自行设计量化矩阵,与编码方法,并计算压缩比,提交实验报告。进度较快的M学,可以设计三种不同的量化矩阵或编码方法,完成三种不同程度的压缩,对比解压缩后的图像质量,并进行分析。(给分较高)1.3环境:WindowsXP操作系统MicrosoftVi
2、sualC++6.0(SP6)白带8位灰度图像文件:lena-gray.bmp:二、实验步骤1.准备和关图像文件。2.在XP操作系统上,打开MicrosoftVisualC++6.0(SP6),编写相关程序,完成对离散余弦变换系数的量化矩阵设计与编码方法。4.对程序进行相关调试,修改程序,去除其中的BUG。5.利用自匕准备的图像的文件,和编写的程序,将给定的图象进行压缩处理。6.截屏,保留实验结果。7.计算压缩比,进行实验结果分析。8.撰写并提交实验报告。三、注意事项1.实验任务:Windows下完成图像压缩的程序编写。2.去
3、多模式教学网上卜'载程序框架:DCT-Quantify8-Frame.raro3.图像高度、宽度须是8的倍数。BMP格式,8位灰度图像。4.对于一幅彩色图像,可以在photoshop中,图像=》模式=》灰度=》扔掉文件=》存储为=》保存=》选择8位深度=》确定。5.实验完成时间:先在课下完成程序编写,然后课上完成验机。第15周的周一、第15周的周五,二次实验课。6.请记录实验报告中相应的贴图:口J*以用屏幕拷贝,然后再用Photoshop屮的T具屮修剪一下。7.请每位同学用自己的图像文件进行实验:若2位同学使用的图像文件一样,
4、两位均依抄袭计0分。1.请每位同学自己编写程序:若2位同学编写的程序发现抄袭,两位均计0分。2.来后请签到。3.做完后请验机:验机在课内完成,由于同学较多,请大家尽可能提前验机,以免最后大家等待的时间较长。4.课后完成实验报告。5.实验报告:若发现2位同学的实验报告抄袭,两位均计0分。6.实验报告模板:去多模式教学网上下载《42实验报告模板-图像压缩20150128.doc》,然后填入自己的上机相关内容7.实验报告,每位同学在第16周周一,由课代表按学号排序上交,逾期不收(因为一周内课程成绩必须要上报到教务处)。四、框架程序1
5、.量化表为:doubleQuantTbl
6、8I
7、8
8、={//o12345670,0,0,0,0,0,0,0,"70,0,0,0,0,0,0,0,"60,0,0,0,0,0,0,0,"50,0,0,0,0,0,0,0,"41,1,1,1,0,0,0,0,//31,1,1,1,0,0,0,0,"21,1,1,1,0,0,0,0,"12,1,1,1,0,0,0,0//o实验时请根据需要修改量化表。2.请补充下列程序:目标是:•BOOLCBMPEdit::DCTQuantify()把double*pFuvArray(height*wi
9、dth)中的DCT系数(已完成8*8的DCT变换),按照量化表doubleQuantTbl[8][8]进行量化,到_int8*pQuantResult(height氺width);•BOOLCBMPEdit::DCTWrite()把量化/5的系数_int8^pQuantResult(height*width)有选择的存入文件,使用CFile•BOOLCBMPEdit::IDCTRead()在DCT反变换吋,把文件读入内存屮的_int8^pQuantRcsult(height*width),使用CFile,注意数掘位置的控制。•
10、BOOLCBMPEdit::IDCTQuantify()把内存中的_int8*pQuantResu1t(height*width)进行反暈化,存入double*pFuvArray(height氺width)2.可以分3步完成:1.把double*pFuvArray(height*width)中的DCT系数存入磁盘文件,再把文件读入内存中double^pFuvArray(height*width)。验证程序正确性。2.修改量化表数值为非0,进行量化与反量化的过程。3.修改量化表数值为部分为0,存储吋舍弃量化表屮为0位置的频谱数据
11、,进行压缩编码存储。4.CFile文件类的使用:向文件写入数据示例:CFileQuantFile("quantify,txt",CFile::modcCrcatc
12、CFi1c::modcRcadWritc);QuantEile.Write(pQuantResult,n);Qu