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

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

数 字 视 频 实 验 报 告

班 级:电信科0801班
学 号:
姓 名:
实 验 报 告 二
一、 实验名称:视频信号的运动估计和运动补偿算法
二、实验目的
在视频编码和处理系统中,运动估计和运动补偿技术对降低视频
序列时间冗余度、提高编码效率起着非常关键的作用。运动估计的准
确程度将直接决定视频编码器的编码效率。它极大地消除了视频序列
的帧间相关性。运动估计算法的复杂性将直接决定视频压缩编码系统
的复杂性,如何提高运动估计的效率,使运动估计算法的搜索过程更
快速、更高效一直是人们研究的热点。掌握运动估计的块匹配算法,
以及快速运动估计算法。

三、实验内容:
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帧,取P帧为
i帧后两帧

读第i、p帧的数据,分别存入imgI、imgP 计算i帧的大小 分别调用自定义函数计算运动矢量 利用运动估计参数重构P帧图像 计算峰值信噪比PSNR 计算代价 i<30? 分别显示i帧、p帧和p
帧重构帧

画运动矢量图

结束


no
yse no
yes

2、 motionEstES.m文件流程图

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文件程序)

开始
初始化:定义块
中心,矢量及代

计算运动矢量

比较得到代价最
小的运动矢量,
作为块的运动矢

计算块中心点
最后分别计算I
帧各个块的块中
心,运动矢量及
代价

结束
[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

相关主题