视音频课程设计.docx
- 文档编号:2242699
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:18
- 大小:2.39MB
视音频课程设计.docx
《视音频课程设计.docx》由会员分享,可在线阅读,更多相关《视音频课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
视音频课程设计
《视音频信号处理课程设计》
(2013/2014-1第19周)
指导教师:
肖荣、张海翔
浙江理工大学信息学院
2014年1月
视音频信号处理课程设计
任务书
一、设计目的:
1.掌握视音频系统方案设计的一般方法,主要包括系统分析、系统设计的组织和实施。
2.掌握音频信号处理和图像数据处理方法和技术。
3.掌握视频的预测编码处理的编程技术,并能独立完成一般小型视音频信号处理系统的程序设计、调试运行等工作。
3.培养把所学知识运用到具体实践对象,并能提出详细解决方案的能力。
二、任务要求:
1.请设计一种处理视频(连续图像)数据的压缩和解压算法,并编程实现,实现语言为C/C++。
2.图像的原始数据文件为BMP文件,图像数据请自行获取,所处理的图像帧数不能少于10帧。
输出的编码文件格式请自行定义。
3.压缩算法的环节必须包括运动估计和运动补偿、熵编码,变换编码(比如DCT变换)为建议环节,不是必须环节。
4.解压算法需要能够从压缩数据恢复图像数据。
5.请计算你所完成压缩算法的压缩性能(压缩比)以及图像质量(PSNR)。
三、结果形式:
1、算法流程设计:
关于所设计的视频压缩解压算法流程的详细描述。
2、算法源代码。
3、原始图像文件。
4、算法性能分析报告:
主要包括压缩算法的压缩性能(压缩比)以及图像质量的实验计算结果。
5、上机正常运行。
四、成绩考核:
1.课程设计态度(30分)。
2.递交的课程设计报告(60分)。
3、上机运行情况(10分)。
评分按任务项具体要求的基本要求为标准,总分100分。
总成绩折合以五级制成绩计(优秀、良好、中、及格、不及格)。
要求同学们独立完成,发现抄袭的,经查实后以0分计。
五、工作进度:
(共1周)
时间
实践内容
授课地点
指导教师
日期
周次
星期
1.6
19
一
视音频系统方案设计
10-308
张海翔/肖荣
1.7
19
二
音频信号处理
10-308
张海翔/肖荣
1.8
19
三
图像数据处理
10-308
张海翔/肖荣
1.9
19
四
视频的预测编码处理
10-308
张海翔/肖荣
1.10
19
五
视音频系统整体设计
10-308
张海翔/肖荣
1.10
19
五
答辩、考核
10-308
张海翔/肖荣
《视音频信号处理课程设计》设计报告
目录
一、算法流程设计:
5
二、算法源代码:
5
三、原始图像文件:
5
四、算法性能分析:
5
五、结果分析、结论与体会:
5
六、参考文献及资料:
5
1、算法流程设计:
视像数据的压缩算法
MPEG-1视像(MPEG-1Video)压缩视像数据的基本方法可以归纳成两个要点
在空间方向上,采用与JPEG类似的算法来去掉空间冗余数据
在时间方向上,采用移动补偿(motioncompensation)算法来去掉时间冗余数据
视像数据结构
把视像片段看成由一系列静态图像(picture)组成的视像序列(sequence)
把视像序列分成许多像组(groupofpicture,GOP)
把像组中的每一帧图像分成许多像片(slice),每个像片由16行组成
把像片分成16行×16像素/行的宏块(macroblock,MB)
把宏块分成若干个8行×8像素/行的图块(block)
使用子采样格式为4:
2:
0时,一个宏块由4个亮度(Y)图块和两个色度图块(Cb和Cr)组成
预测图像P的压缩编码算法
算法原理
预测图像P的编码以宏块(MB)为基本编码单元,一个宏块定义为像素的图块,一般取16×16
预测图像P使用两种类型的参数表示
当前要编码的图像宏块与参考图像的宏块之间的差值
宏块的移动矢量(motionvector,MV)
BMP文件组成
BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
1.BMP文件头
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
2.位图信息头
3.颜色表
颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。
4.位图数据
位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。
具体流程
1.进行主框架的搭建,即main函数的编写,获取视频的帧数及相应的图片,并声明bmp图片的读入和写出的函数、残差计算运动估计函数以及游程编码和解码函数,并在main函数相关位置调用readwrite()函数。
2.bmp图片的读写函数的功能进行编写,在本函数中设立一个switch语句进行用户操作判断,若用户选择压缩操作,则将指定文件读入,并进行运动估计及游程编码的操作,最后将压缩后的信息写在.raw文件中。
3.编写差值计算函数,即diff()函数,在函数中,第一帧图像的残差值为自身,而后的图片的残差图像为当前图像与前一帧图像的差值,
4.将所得到的残差值进行编码,由于残差值有较多的0,则这里使用游程编码,并将结构写入到.raw文件中。
5.编写游程解码函数,通过编码得到的文件中的数据进行解码,得到解码后的bmp图像。
流程图:
压缩操作解压操作退出操作
2、算法源代码:
main函数:
(程序入口)
intmain()
{
intxsize=512;//图像宽
intysize=257*3;//图像高
unsignedchar*image;//用于存放读入的图片
unsignedchar*header;//记录文件头
image=(unsignedchar*)malloc((size_t)xsize*ysize);
header=(unsignedchar*)malloc(54);
if(image==NULL)
return-1;
if(header==NULL)
return-1;
readwrite_bmp(image,header,xsize,ysize);//文件的读入
free(image);
free(header);
return0;
}
Readwrite_bmp函数:
(进行操作判断,压缩操作时读入位图信息)
intreadwrite_bmp(unsignedchar*image,unsignedchar*header,intxsize,intysize)
{
inti;
intchoice=-1;
FILE*fp,*ifp;
charfname_bmp[20];
unsignedchar*pre;
pre=(unsignedchar*)malloc((size_t)xsize*ysize);//分配空间
for(i=0;i unsignedchar*temp; temp=(unsignedchar*)malloc((size_t)xsize*ysize); for(i=0;i while(choice) { printf("**********************************************\n"); printf("*请选择操作: *\n"); printf("*1、图像压缩;*\n"); printf("*2、图像解压;*\n"); printf("*3、退出;*\n"); printf("**********************************************\n\n"); scanf("%d",&choice); switch(choice) { case1: ifp=fopen("test.rmvb","wb"); for(i=0;i<10;i++)//图像序列 { sprintf(fname_bmp,"xj%d.bmp",i);//把格式化的数据写入某个字符串中当前文件名 if(! (fp=fopen(fname_bmp,"rb"))) return-1; fread(header,sizeof(unsignedchar),54,fp);//读取文件的header信息 fread(image,sizeof(unsignedchar),(size_t)(long)xsize*ysize,fp);//读取图片信息存入image数组中 diff(ifp,header,temp,pre,image,xsize,ysize);//调用运动估计函数 fclose(fp); } fclose(ifp); break; case2: runlength_de(pre,temp,header,xsize,ysize);//解压 break; case3: exit(0); break; default: break; } } free(pre); free(temp); return0;} Diff()函数: (将各图像进行残差计算) voiddiff(FILE*ifp,unsignedchar*header,unsignedchar*temp,unsignedchar*pre,unsignedchar*now,intxsize,intysize) { inti,j; unsignedchar*diff; /*for(i=0;i { for(j=0;j { for(intk=3;k>0;k--){ for(intm=i-k;m for(intn=j-k;n if(m! =i||n! =j){ cnt= } } } }*/ diff=(unsignedchar*)malloc((size_t)xsize*ysize);//空间申请 for(i=0;i { for(j=0;j { diff[i*ysize+j]=now[i*ysize+j]-pre[i*ysize+j]; pre[i*ysize+j]=now[i*ysize+j];//对每张图片计算其残差图像。 首张图片的残差图像为其本身,后续图片的残差图像为当前图像与前一帧图像的差值。 } } runlength_en(ifp,diff,header,xsize,ysize); free(diff); } Runlength_en()函数: (将所得到的残差值进行游程编码) int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音频 课程设计