图像压缩实验指导书Word下载.docx

上传人:b****4 文档编号:16038528 上传时间:2022-11-17 格式:DOCX 页数:8 大小:17.95KB
下载 相关 举报
图像压缩实验指导书Word下载.docx_第1页
第1页 / 共8页
图像压缩实验指导书Word下载.docx_第2页
第2页 / 共8页
图像压缩实验指导书Word下载.docx_第3页
第3页 / 共8页
图像压缩实验指导书Word下载.docx_第4页
第4页 / 共8页
图像压缩实验指导书Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

图像压缩实验指导书Word下载.docx

《图像压缩实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《图像压缩实验指导书Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

图像压缩实验指导书Word下载.docx

1.准备相关图像文件。

2.在XP操作系统上,打开MicrosoftVisualC++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分。

8.请每位同学自己编写程序:

若2位同学编写的程序发现抄袭,两位均计0分。

9.来后请签到。

10.做完后请验机:

验机在课内完成,由丁同学较多,请大家尽可能提前验机,以免最后大家等待的时间较长。

11.课后完成实验报告。

12.实验报告:

若发现2位同学的实验报告抄袭,两位均计0分。

13.实验报告模板:

去多模式教学网上下载《42实验报告模板-图像压缩20150128.do。

然后填入自己的上机相关内容

14.实验报告,每位同学在第16周周一,由课代表按学号排序上交,逾期不收(因为一周内课程成绩必须要上报到教务处)。

四、框架程序

1.量化表为:

doubleQuantTbl[8][8]=(

//0

1

2

3

45

6

7

0,

//7

//6

//5

//4

1,

//3

//2

//1

2,

//0};

实验时请根据

需要修改量化表。

2.请补充卜夕0程序:

目标是

BOOLCBMPEdit:

:

DCTQuantify()

把double

*pFuvArray

(height*width

)中的DC岸数(已完成8*8的DCT

变换),按照量化表doubleQuantTbl[8][8]进行量化,到__int8*pQuantResult(height*width);

DCTWrite()

把量化后的系数__int8*pQuantResult(height*width)有选择的存入文件,使用CCBMPEdit:

IDCTRead()

在DCT反变换时,把文件读入内存中的__int8*pQuantResult

(height*width),使用CFile,注意数据位置的控制。

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文件类的使用:

向文件写入数据示例:

C("

quantify.txt"

C);

Quantte(pQuantResult,n);

Quant();

从文件读取数据示例:

Quant(pQuantResult,n);

sprintf(oneline,"

%d,%d,%10d,%10lf,%10lf\r\n”,u,v,p,r,Q);

5.各编写函数的功能

intheight=m_BmpInfo.bmiHeader.biHeight;

intwidth=m_BmpInfo.bmiHeader.biWidth;

pQuantResult=new__int8[height*width];

//addyourcodehere

//对DCT系数进行量化

〃对DCT的系数pFuvArray[]进行量化

〃即对pFuvArray[]中的数据除以量化表QuantTbl[][],

〃需要考虑量化表8*8的位置对应,以及量化表中为0数据的量化处理

〃量化结果放入量化结果缓冲区pQuantResult[]

returnTRUE;

}

//把量化后的系数写入文件。

//可有所选择

//把量化后的数据pQuantResult[]写入文件

//对于量化表QuantTbl[][]中为0的数据的对应位置,无需存储。

//向文件写入数据示例:

//C("

C);

//Quant(pQuantResult,n);

//Quant();

//把写入系数的文件读入内存

//把文件中的数据读入量化结果缓冲区pQuantResult[]

//对于量化表QuantTbl[][]中为0数据所对应的位置,补入0。

//从文件读取数据示例:

//Quant(pQuantResult,n);

{

//对量化后的系数进行反量化处理

//对文件读入的数据pQuantResult[]进行反量化

//即对pQuantResult[]中的数据乘以量化表QuantTbl皿

//需要考虑量化表8*8的位置对应。

//反量化结果放入pFuvArray口中

可根据需要自行调整设计。

6.关键数据结构的说明

*pImageData:

图像原始数据缓冲区指针。

*pData:

图像显示缓冲区指针。

*pDCTResultD:

图像DCT变换后用丁显示的数据缓冲区指针。

*pIDCTResult:

对DCT变换结果进行IDCT变换的结果数据缓冲区指针。

HGLOBALm_hgImageData;

//图像数据句柄

HGLOBALm_DCTResultD;

//DCT^换结果显示缓冲区句柄

HGLOBALm_IDCTResult;

//IDCT反变换结果缓冲区句柄

HGLOBALm_Error;

//IDCT反变换结果-原图句柄

double*pFuvArray;

//DCT变换结果缓冲区

double*pImage8;

//8*8变换图像缓冲区

double*pFuv8;

//8*8变换频谱缓冲区

__int8*pQuantResult;

//DCT量化结果

2020-6-24第8页/共10页

7.菜单DCT变换的接口

voidCMy02testView:

OnDCTTransform()

//TODO:

Addyourcommandhandlercodehere

CMy02testDoc*pDoc=GetDocument();

pDoc->

m_BMP.DCTTransform();

m_BMP.DCTQuantify();

m_BMP.DCTWrite();

m_BMP.PlayBmpDCT(m_pMemDC,CPoint(0,0));

Invalidate(FALSE);

8.菜单DCT反变换的接口

OnIDCTTransform()

m_BMP.IDCTRead();

m_BMP.IDCTQuantify();

m_BMP.IDCTTransform();

m_BMP.PlayBmpIDCT(m_pMemDC,CPoint(0,0));

9.菜单残差的接口

OnError()

m_BMP.Error();

m_BMP.PlayBmpError(m_pMemDC,CPoint(0,0));

10.相关函数说明

主要功能函数:

LoadBmpCString&

sBmp)

主要功能:

读入BMP文件。

在此函数中,读入原来图像的数据,并把图像原始数据存入数据缓冲区。

PlayBmp(CDC*pDC,constCPoint

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1