1、数 字 视 频 实 验 报 告班 级:电信科 0801 班学 号:姓 名:实 验 报 告 二一、 实验名称:视频信号的运动估计和运动补偿算法二、实验目的在视频编码和处理系统中,运动估计和运动补偿技术对降低视频序列时间冗余度、提高编码效率起着非常关键的作用。运动估计的准确程度将直接决定视频编码器的编码效率。它极大地消除了视频序列的帧间相关性。运动估计算法的复杂性将直接决定视频压缩编码系统的复杂性,如何提高运动估计的效率,使运动估计算法的搜索过程更快速、更高效一直是人们研究的热点。掌握运动估计的块匹配算法,以及快速运动估计算法。三、实验内容:1、 分析基于块匹配的全搜索运动估计算法程序,画出mot
2、ionEstAnalysis.m 和 motionEstES.m文件流程图2、 编程补充完成costFuncMAD.m 文件中最小绝对误差计算函数costFuncMAD()和imgPSNR.m文件中峰值信噪比PSNR计算函数imgPSNR()的程序,最终输出运动矢量场; 3、 掌握运动补偿算法,编程实现motionComp.m文件中对目标帧的运动补偿重构函数 motionComp() ;4、 了解多种快速运动估计算法,例如三步法搜索法、二维对数法、菱形搜索法等。5、 总结实验结果,比较各种搜索算法的性能和所需时间。四、实验原理在帧间预测编码中,由于活动图像邻近帧中的景物存在着一定的相关性。因此
3、,可将活动图像分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量,得到的相对偏移量就是通常所指的运动矢量,得到运动矢量的过程被称为运动估计。 运动矢量和经过运动匹配后得到的预测误差共同发送到解码端,在解码端按照运动矢量指明的位置,从已经解码的邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。 运动估计的准确程度往往用补偿图像与原图像比较的 PSNR 来衡量表示。五、实验程序1、 motionEstAnalysis.m文件流程图读取*.AVI 文件并播放文件开始设定块大小和搜索步长取帧的范围 1i44取第 i
4、帧,取 P 帧为 i 帧后两帧读第 i、p 帧的数据,分别存入imgI、imgP计算 i 帧的 大小分别调用自定义函数计算运动矢量利用运动估计参数重构 P 帧图像计算峰值信噪比PSNR计算代价i30?分别显示 i 帧、p 帧和p 帧重构帧画运动矢量图结束noyse noyes 2、 motionEstES.m文件流程图3、计算最小绝对误差程序(补充 costFuncMAD.m 文件程序)sum=0;for i=1:nfor j=1:nDifference=abs(currentBlk(i,j)-refBlk(i,j);sum=Difference+sum;end;end;cost=sum/(n
5、.2);4、计算峰值信噪比 PSNR 程序(补充 imgPSNR.m 文件程序)row col = size(imgP);sum2=0;for i3=1:rowfor j3=1:colsum2=sum2+(imgComp(i3,j3)-imgP(i3,j3).2;%累加求和endends=sum2/(row*col);psnr=10*log10(n*n)/s);5、对目标帧的运动补偿重构程序(补充 motionComp.m 文件程序)开始初始化:定义块中心,矢量及代价计算运动矢量比较得到代价最小的运动矢量,作为块的运动矢量计算块中心点最后分别计算 I帧各个块的块中心,运动矢量及代价结束row
6、col = size(imgI);img=zeros(row,col);mbCount=0;for i = 1 : mbSize : row-mbSize+1 for j = 1 : mbSize : col-mbSize+1mbCount=mbCount+1;k1=motionVect(1,mbCount); k2=motionVect(2,mbCount) ; img(i:i+mbSize-1,j:j+mbSize-1)= imgI(i+k1:i+mbSize-1+k1,j+k2:j+mbSize-1+k2);end;end;imgComp=img;六、实验结果1、运动矢量场图像2、对目标帧的运动补偿重构程序第 I 帧视频原始图像 第 P 帧视频原始图像 第 P 帧视频运动补偿重构图像 3、视频重构视频峰值信噪比 PSNRPsnr=29.349