




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像压缩实验指导书 数字图像处理上机实验指导书童立靖北方工业大学计算机学院童立靖北方工业大学计算机学院tong_lijing163.北北方工业大学xx-10-22第2页/共9页实验四图像压缩 一、实验目的、要求与环境1.1目的通过实验,了解数字图象压缩的一般方法,掌握图像压缩的编程方法,了解图象压缩效果的评价方法。 1.2要求对自选的图象进行离散余弦变换,将其进行图象压缩处理,自行设计量化矩阵,与编码方法,并计算压缩比,提交实验报告。 进度较快的同学,可以设计三种不同的量化矩阵或编码方法,完成三种不同程度的压缩,对比解压缩后的图像质量,并进行分析。 (给分较高)1.3环境Windows XP操作系统Microsoft VisualC+6.0(SP6)自带8位灰度图像文件lena-gray.bmp 二、实验步骤1.准备相关图像文件。 2在XP操作系统上,打开Microsoft VisualC+6.0(SP6),编写相关程序,完成对离散余弦变换系数的量化矩阵设计与编码方法。 4对程序进行相关调试,修改程序,去除其中的BUG。 5.利用自己准备的图像的文件,和编写的程序,将给定的图象进行压缩处理。 6截屏,保留实验结果。 7.计算压缩比,进行实验结果分析。 8.撰写并提交实验报告。 三、注意事项1.实验任务Windows下完成图像压缩的程序编写。 2.去多模式教学网上下载程序框架DCT-Quantify8-Frame.rar。 3.图像高度、宽度须是8的倍数。 BMP格式,8位灰度图像。 4.对于一幅彩色图像,可以在photoshop中,图像=模式=灰度=扔掉文件=存储为=保存=选择8位深度=确定。 5.实验完成时间先在课下完成程序编写,然后课上完成验机。 第15周的周 一、第15周的周五,二次实验课。 6.请记录实验报告中相应的贴图可以用屏幕拷贝,然后再用Photoshop中的工具中修剪一下。 7.请每位同学用自己的图像文件进行实验若2位同学使用的图像文件一样,两位均依抄袭计0分。 北北方工业大学xx-10-22第4页/共9页8.请每位同学自己编写程序若2位同学编写的程序发现抄袭,两位均计0分。 9.来后请签到。 10.做完后请验机验机在课内完成,由于同学较多,请大家尽可能提前验机,以免最后大家等待的时间较长。 11.课后完成实验报告。 12.实验报告若发现2位同学的实验报告抄袭,两位均计0分。 13.实验报告模板去多模式教学网上下载42实验报告模板-图像压缩xx0128.doc,然后填入自己的上机相关内容14.第实验报告,每位同学在第16周周一,由课代表按学号排序上交,逾期不收(因为一周内课程成绩必须要上报到教务处)。 周周一,由课代表按学号排序上交,逾期不收(因为一周内课程成绩必须要上报到教务处)。 四、框架程序1.量化表为double QuantTbl88=/012345670,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/0;实验时请根据需要修改量化表。 2.请补充下列程序目标是?BOOL CBMPEdit:DCTQuantify()把double*pFuvArray(height*width)中的DCT系数(已完成8*8的DCT变换),按照量化表double QuantTbl88进行量化,到_int8*pQuantResult(height*width);?BOOL CBMPEdit:DCTWrite()把量化后的系数_int8*pQuantResult(height*width)有选择的存入文件,使用CFile?BOOL CBMPEdit:IDCTRead()在DCT反变换时,把文件读入内存中的_int8*pQuantResult(height*width),使用CFile,注意数据位置的控制。 ?BOOL CBMPEdit:IDCTQuantify()把内存中的_int8*pQuantResult(height*width)进行反量化,存入double*pFuvArray(height*width)3.可以分3步完成1.把double*pFuvArray(height*width)中的DCT系数存入磁盘文件,再把文件读入内存中double*pFuvArray(height*width)。 验证程序正确性。 2.修改量化表数值为非0,进行量化与反量化的过程。 3.修改量化表数值为部分为0,存储时舍弃量化表中为0位置的频谱数据,进行压缩编码存储。 4.CFile文件类的使用向文件写入数据示例CFile QuantFile(quantify.txt,CFile:modeCreate|CFile:modeReadWrite);QuantFile.Write(pQuantResult,n);QuantFile.Close();从文件读取数据示例CFile QuantFile(quantify.txt,CFile:modeReadWrite);QuantFile.Read(pQuantResult,n);QuantFile.Close();sprintf(oneline,%d,%d,%10d,%10lf,%10lfrn,u,v,p,r,Q);北北方工业大学xx-10-22第6页/共9页5.各编写函数的功能BOOL CBMPEdit:DCTQuantify()int height=m_BmpInfo.bmiHeader.biHeight;int width=m_BmpInfo.bmiHeader.biWidth;pQuantResult=new_int8height*width;/add yourcode here/对DCT系数进行量化/对DCT的系数pFuvArray进行量化/即对pFuvArray中的数据除以量化表QuantTbl,/需要考虑量化表8*8的位置对应,以及量化表中为0数据的量化处理/量化结果放入量化结果缓冲区pQuantResultreturn TRUE;BOOL CBMPEdit:DCTWrite()/add yourcode here/把量化后的系数写入文件。 /可有所选择/把量化后的数据pQuantResult写入文件/对于量化表QuantTbl中为0的数据的对应位置,无需存储。 /向文件写入数据示例/CFile QuantFile(quantify.txt,CFile:modeCreate|CFile:modeReadWrite);/QuantFile.Write(pQuantResult,n);/QuantFile.Close();return TRUE;BOOL CBMPEdit:IDCTRead()/add yourcode here/把写入系数的文件读入内存/把文件中的数据读入量化结果缓冲区pQuantResult/对于量化表QuantTbl中为0数据所对应的位置,补入0。 /从文件读取数据示例/CFile QuantFile(quantify.txt,CFile:modeReadWrite);/QuantFile.Read(pQuantResult,n);/QuantFile.Close();return TRUE;BOOL CBMPEdit:IDCTQuantify()/add yourcode here/对量化后的系数进行反量化处理/对文件读入的数据pQuantResult进行反量化/即对pQuantResult中的数据乘以量化表QuantTbl/需要考虑量化表8*8的位置对应。 /反量化结果放入pFuvArray中return TRUE;可根据需要自行调整设计。 6.关键数据结构的说明*pImageData图像原始数据缓冲区指针。 *pData图像显示缓冲区指针。 *pDCTResultD图像DCT变换后用于显示的数据缓冲区指针。 *pIDCTResult对DCT变换结果进行IDCT变换的结果数据缓冲区指针。 HGLOBAL m_hgImageData;/图像数据句柄HGLOBAL m_DCTResultD;/DCT变换结果显示缓冲区句柄HGLOBAL m_IDCTResult;/IDCT反变换结果缓冲区句柄HGLOBAL m_Error;/IDCT反变换结果-原图句柄double*pFuvArray;/DCT变换结果缓冲区double*pImage8;/8*8变换图像缓冲区北北方工业大学xx-10-22第8页/共9页double*pFuv8;/8*8变换频谱缓冲区_int8*pQuantResult;/DCT量化结果7.菜单DCT变换的接口void CMy02testView:OnDCTTransform()/TODO:Add yourmand handlercode hereCMy02testDoc*pDoc=GetDocument();pDoc-m_BMP.DCTTransform();pDoc-m_BMP.DCTQuantify();pDoc-m_BMP.DCTWrite();pDoc-m_BMP.PlayBmpDCT(m_pMemDC,CPoint(0,0);Invalidate(FALSE);8.菜单DCT反变换的接口void CMy02testView:OnIDCTTransform()/TODO:Add yourmand handlercode hereCMy02testDoc*pDoc=GetDocument();pDoc-m_BMP.IDCTRead();pDoc-m_BMP.IDCTQuantify();pDoc-m_BMP.IDCTTransform();pDoc-m_BMP.PlayBmpIDCT(m_pMemDC,CPoint(0,0);Invalidate(FALSE);9.菜单残差的接口void CMy02testView:OnError()/TODO:Add yourmand handlercode hereCMy02testDoc*pDoc=GetDocument();pDoc-m_BMP.Error();pDoc-m_BMP.PlayBmpError(m_pMemDC,CPoint(0,0);Invalidate(FALSE);10.相关函数说明主要功能函数BOOL CBMPEdit:LoadBmpFile(const CString&sBmpFileName)主要功能读入BMP文件。 在此函数中,读入原来图像的数据,并把图像原始数据存入数据缓冲区。 主要功能函数BOOL CBMPEdit:PlayBmp(CDC*pDC,const CPoint&StartPoint)主要功能把图像数据写入CDC,供显示用。 在此函数中,把读入的原始图像数据区里的数据写到pDC-GetSafeHdc(),即CDC里。 主要功能函数BOOL CBMPEdit:DCTTransform()主要功能DCT变换。 在此函数中,取出图像数据缓冲区的数据,并对其进行DCT变换。 主要功能函数BOOL CBMPEdit:IDCTTransform()主要功能IDCT变换。 在此函数中,取出图像DCT变换结果缓冲区的数据,并对其进行IDCT变换。 主要功能函数BOOL CBMPEdit:Play
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园性防侵害安全知识培训课件
- 校园安全知识培训课件讲话稿
- 校园安全知识培训课件简讯
- 函数高三试题及答案
- 法语时态试题及答案
- 校园保安消防知识培训课件
- 圆周运动试题及答案
- 公务员汉服试题及答案
- 面试题及答案之javagc
- 数学泸州版试题及答案
- 2025年秋招:新媒体运营笔试题目及答案
- 工作总结及工作思路(输电运维班)
- 气管及支气管内插管
- 感染性休克的护理诊断与措施
- Unit 14 I remember meeting all of you in Grade 7(大单元教材分析)教学课件 人教新目标九年级英语全册
- 2025年高处吊篮安装拆卸工(建筑特殊工种)证考试题库
- 2025年新云南会计灵活用工协议书
- 2024年扬州市辅警真题
- 2025内蒙古森工集团招聘工勤技能人员3100人笔试参考题库附带答案详解析集合
- 登销记以及运统46系统运用21课件
- 数学用表A4(锐角三角函数)
评论
0/150
提交评论