视音频课程设计.docx

上传人:b****2 文档编号:2242699 上传时间:2022-10-28 格式:DOCX 页数:18 大小:2.39MB
下载 相关 举报
视音频课程设计.docx_第1页
第1页 / 共18页
视音频课程设计.docx_第2页
第2页 / 共18页
视音频课程设计.docx_第3页
第3页 / 共18页
视音频课程设计.docx_第4页
第4页 / 共18页
视音频课程设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

视音频课程设计.docx

《视音频课程设计.docx》由会员分享,可在线阅读,更多相关《视音频课程设计.docx(18页珍藏版)》请在冰豆网上搜索。

视音频课程设计.docx

视音频课程设计

 

《视音频信号处理课程设计》

(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

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

当前位置:首页 > 人文社科 > 法律资料

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

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