当前位置:文档之家› 视频信号的运动估计和运动补偿算法

视频信号的运动估计和运动补偿算法

数 字 视 频 实 验 报 告
班 级:电信科0801班
学 号:
姓 名:
实 验 报 告 二
1、 实验名称:视频信号的运动估计和运动补偿算法
二、实验目的
在视频编码和处理系统中,运动估计和运动补偿技术对降低视频序列时间冗余度、提高编码效率起着非常关键的作用。

运动估计的准确程
度将直接决定视频编码器的编码效率。

它极大地消除了视频序列的帧间相关性。

运动估计算法的复杂性将直接决定视频压缩编码系统的复杂性,如何提高运动估计的效率,使运动估计算法的搜索过程更快速、更高效一直是人们研究的热点。

掌握运动估计的块匹配算法,以及快速运动估计算法。

三、实验内容:
1、 分析基于块匹配的全搜索运动估计算法程序,画出
motionEstAnalysis.m 和 motionEstES.m文件流程图
2、 编程补充完成costFuncMAD.m 文件中最小绝对误差计算函数
costFuncMAD()和imgPSNR.m文件中峰值信噪比PSNR计算函数
imgPSNR()的程序,最终输出运动矢量场;
3、 掌握运动补偿算法,编程实现motionComp.m文件中对目标帧的
运动补偿重构函数 motionComp();
4、 了解多种快速运动估计算法,例如三步法搜索法、二维对数
法、菱形搜索法等。

5、 总结实验结果,比较各种搜索算法的性能和所需时间。

四、实验原理
在帧间预测编码中,由于活动图像邻近帧中的景物存在着一定的相关性。

因此,可将活动图像分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量,得到的相对偏移量就是通常所指的运动矢量,得到运动矢量的过程被称为运动估计。

运动矢量和经过运动匹配后得到的预测误差共同发送到解码端,在解码端按照运动矢量指明的位置,从已经解码的邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。

运动估计的准确程度往往用补偿图像与原图像比较的PSNR来衡量表示。

五、实验程序
1、 motionEstAnalysis.m文件流程图
读取*.AVI文件
并播放文件
开始
设定块大小和搜索步长
取帧的范围 1<i<44
取第i帧,取P帧为i帧后两帧
读第i、p帧的数据,分别存入imgI、imgP
计算i帧的大小
分别调用自定义函数计算运动矢量
利用运动估计参数重构P帧图像
计算峰值信噪比PSNR
计算代价
i<30?
分别显示i帧、p帧和p帧重构帧
画运动矢量图
结束
no
yse no yes
2、 motionEstES.m文件流程图
开始
计算块中心点
初始化:定义块中心,矢量及代价
最后分别计算I帧各个块的块中心,运动矢量及代价
计算运动矢量
比较得到代价最小的运动矢量,作为块的运动矢量
结束
3、计算最小绝对误差程序(补充costFuncMAD.m文件程序)
sum=0;
for i=1:n
for j=1:n
Difference=abs(currentBlk(i,j)-refBlk(i,j));
sum=Difference+sum;
end;
end;
cost=sum/(n.^2);
4、计算峰值信噪比PSNR程序(补充imgPSNR.m文件程序)
[row col] = size(imgP);
sum2=0;
for i3=1:row
for j3=1:col
sum2=sum2+(imgComp(i3,j3)-imgP(i3,j3)).^2;%累加求和end
end
s=sum2/(row*col);
psnr=10*log10((n*n)/s);
5、对目标帧的运动补偿重构程序(补充motionComp.m文件程序)[row col] = size(imgI);
img=zeros(row,col);
mbCount=0;
for i = 1 : mbSize : row-mbSize+1
for j = 1 : mbSize : col-mbSize+1
mbCount=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、视频重构视频峰值信噪比PSNR Psnr=29.349。

相关主题