运动估计算法MATLAB课程设计.docx
《运动估计算法MATLAB课程设计.docx》由会员分享,可在线阅读,更多相关《运动估计算法MATLAB课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
![运动估计算法MATLAB课程设计.docx](https://file1.bdocx.com/fileroot1/2023-4/20/05737196-4f7c-421b-9c06-09e0e37ac531/05737196-4f7c-421b-9c06-09e0e37ac5311.gif)
运动估计算法MATLAB课程设计
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
运动估计算法
初始条件:
0MATLAB软件平台
要求完成的主要任务:
1.设计任务
设计视频压缩系统中的运动估计算法:
全搜索法(FS:
FullSearch)和三步法(TSS:
ThreeStepSearch),比较二种方法的搜索点和每帧的峰值信噪比(PSNR:
peaksignaltonoiseratio)
2.设计要求
编制算法代码;对视频进行运动估计;计算PSNR
时间安排:
答辩时间2013年1月24日。
指导教师签名:
年月
系主任签名:
摘要错误!
未定义书签。
1运动估计算法概念。
错误!
未定义书签。
1.1运功估计算法基本思想错误!
未定义书签。
1.2运动估计算法实验原理错误!
未定义书签。
2设计原理和方法。
错误!
未定义书签。
2.1三步法错误!
未定义书签。
2.2新三步法4。
2.3全搜索法。
错误!
未定义书签。
2.4峰值信噪比。
错误!
未定义书签。
3运动估计算法的MATLAB编程错误!
未定义书签。
3.1全搜索法错误!
未定义书签。
3・2三步法错误!
未定义书签。
3.3全搜索法指标。
错误!
未定义书签。
3.4三步法指标错误!
未定义书签。
3.4仿真结果分析。
错误!
未定义书签。
4小结与体会错误!
未定义书签。
参考文献。
错误!
未定义书签。
附录“错误!
未定义书签。
摘要
运动佔计的基本思想是尽可能准确地获得序列图像帧间的运动位移,即运动矢量。
因为运动估讣越准确,预测补偿的图像质量越高,补偿的残差就越小,补偿编码所需位数越少,需要传输的比特率就越小。
利用得到的运动矢量在帧间进行运动补偿。
补偿残差经过变换、量化、编码后与运动矢量一起经过爛编码,然后以比特流形式发送出去。
在视频编码和处理系统中,运动估计和运动补偿技术对降低视频序列时间冗余度、提高编码效率起着非常关键的作用。
运动估计的准确程度将直接决定视频编码器的编码效率。
关键词:
运动佔计、运动补偿技术、位移(运动)矢量
Abstract
Thebasicideaisthatthemotionestimationasaccurateas
possib1etheimagesequeneeinterframemotiondisplacement,i.e.themotionvector.Motionestimationmoreaccuratepredictioncompensation,thehighertheimagequalityiscompensatedresidualsissnial1er,lesscompensationcodingbitsrequired,thesma1lerthetransmissionbitrate・Performingmotioncompensationusingthemotionvectorobtainedintheinterframe.Compensationresidua1sthroughtransformation,quantization,entropy-codedtogetherwiththemotionvectorisencoded,andthensentoutintheformofabitstream•
Invideocodingandprocessingsystem,themotionestimationandmotioncompensationtoreducethetempora1redundancyofvideosequencetoimprovethecodingefficiencyplaysacrucia1role.Thedegreeofaccuracyofthemotionestimationwilldirectlydeterminetheencodingefficiencyofthevideoencoder.
Keywords:
MotionestimationMotioncompensationtechniquesThevectorofdisp1acement(movement)
多媒体信息处理
1运动估计算法概念
视频原始图像中存在着大量的信息冗余,如时间冗余、空间兀余、信息嫡兀余、谱间冗余、儿何结构冗余、视觉冗余和知识冗余等等。
运动估计是视频压缩编码中的核心技术之一,采用运动估讣和运动补偿技术可以消除视频信号的时间冗余以提高编码效率。
如何提高运动估讣的效率,使运动估计算法的搜索过程更健壮、更快速、更高效成为LI前研究的热点。
运动佔计的基本思想是尽可能准确地获得序列图像帧间的运动位移,即运动矢量。
因为运动佔计越准确,预测补偿的图像质量越拓,补偿的残差就越小,补偿编码所需位数越少,需要传输的比特率就越小。
利用得到的运动矢量在帧间进行运动补偿。
补偿残差经过变换、量化、编码后与运动矢量一起经过爛编码,然后以比特流形式发送出去。
运动估汁算法多种多样,大体上可以把它们分成四类:
块匹配法、递归估计法、贝叶斯估计法和光流法。
其中块匹配运动佔计算法因其具有算法简单、便于vLSI实现等优点得到广泛应用。
所以本文将重点介绍块匹配运动估计算法,并对各种块匹配算法在计算速度和估计精度上进行简单比较。
1.1运功估计算法基本思想
运动估讣的基本思想是尽可能准确地获得序列图像帧间的运动位移,即运动矢量。
运动估计算法的曰标是效率和准确性。
由于在成象的场景中一般有多个物体作不同的运动,如果直接按照不同类型的运动将图像分割成复杂的区域是比较困难的。
最直接和不受约束的方法是在每个像素都指定运动矢量,这就是所谓基于像素表示法。
这种表示法是对任何类型图像都是适用的,但是它需要佔计大量的未知量,并且它的解时常在物理上是不正确,除非在佔计过程中施加适当的物理约束。
这在具体实现时是不可能的,通常采用基于块的物体运动表示法。
因为运
动估讣越准确,预测补偿的图像质量越高,补偿的残差就越小,补偿编码所需位数越少,需要传输的比特率就越小。
1.2运动估计算法实验原理
在帧间预测编码中,由于活动图像邻近帧中的景物存在着一定的相关性。
因此,可将活动图像分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量,得到的相对偏移量就是通常所指的运动矢量,得到运动矢量的过程被称为运动估计。
运动矢量和经过运动匹配后得到的预测误差共同发送到解码端,在解码端按照运动矢量指明的位置,从已经解码的邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。
运动估计的准确程度往往用补偿图像与原图像比较的PSNR来衡量表示。
2设计原理和方法
2.1三步法
三步法是应用得相当广泛的一种次优的运动佔计搜索算法它的搜索区间一般为卜7,7]即在候选区中与编码块相同坐标位置处为原点,将参考块在其上下左右距离为7的范圉内按照一定规律移动移到一个位置就做匹配讣算它总共进行了三步搜索在下一次搜索时步长减半以前一步搜索得到的最优点为中心。
下图为三步法的搜索示意图。
算法的中心思想是,采用一种由
粗到细的搜索模式,从原点开始,按■用.
一定步长取周围8个点构成每次搜索/人…「…人|
的点群,然后进行匹配讣算,利用上一
步搜索得到的最小块误差MBD点作
相对于全搜索来比,大大减少了匹配运算的复杂度,而且数据读取比较规则。
2.2新三步法
TSS假定运动矢量分布特点是在搜索窗口中均匀分布,但事实证明运动矢量是偏置中心的,RenxiangLi等人在TSS的基础上提出了一种增强运动矢量中心偏置搜索和减小补偿误差的新三步法。
NTSS是对TSS的一个改进,对运动量比较小的视频序列如可视电话疗;列有比较好的性能。
对于绝大多数的视频序列,运动矢量的分布都是在中心位置上
的概率最大,随着与中心位置的距离的增大,概率会急剧地下降,这也就是询面所说的运动矢量的中心偏移特性。
运动量比较小的视频序列的这一特性会更加明显。
NTSS算法在最好的悄况下只需要做17个点的匹配,在最坏的情况下需要做33个点的匹配,由于运动矢量中心偏置在现实视频序列中是普遍存在的,在通常悄况下,NTSS算法需要做33点匹配的概率比较小,因此,在低速率视频应用中,如视频电话或视频会议中,NTSS算法的优点可以得到较好的发挥。
2・3全搜索法
全搜索法(Fu11SearchMethod,FS)也称为穷尽搜索法,是对(M+2dx)x(N+2dy)搜索范围内所有可能的候选位置计算MAD(i,j)值,从中找出最小MAD,其对应偏移量即为所求运动矢量。
此算法虽汁算量大,但最简单、可靠,找到的必为全局最优点。
FS算法描述如下:
从原点出发,按顺时针螺旋方向山近及远,在逐个像素处汁算MAD值,直到遍历搜索范围内听有的点,然后在计算的所有点的MAD中找到
最小值,该点所在位置即对应最佳运动矢量。
但是正因为它是穷尽搜索因此会产生巨大的讣算量如[7,7]的搜索区间每个宏块16*16需讣算225个MAD值,这就直接制约了编码的实时实现。
快速算法本质上是一种穷尽搜索法其计算量仍是相当巨大的。
全搜索算法是简单也是效果最好的一种匹配算法,通过的全搜索匹配得到的结果是全局最优的,但由于计算量很大,我们在编解码中往往不采用这种方法,而只把他作为与其他算法的一种比较。
获取图像
分成N*N大小的块
进行块匹配
2.4峰值信噪比
峰值信噪比(经常缩写为PSNR)是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。
山于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。
PSNR是“PeakSigoaltoNoiseRatio”的缩写。
peak的中文意思是顶点。
而ratio的意思是比率或比列的。
整个意思就是到达噪音比率的顶点信号,psnr是一般是用于最大值信号和背景噪音之间的一个工程项LI。
通常在经过影像圧缩之后,输岀的影像通常都会有某种程度与原始影像不一样。
为了衡量经过处理后的影像品质,我们通常会参考PSNR值来认定某个处理程序够不够令人满意。
PSNR计算公式如下:
Peak就是指8bits表示法的最大值255。
MSE指MeanSquareError(均方误差,各值相差的n次方和的平均值的n次平方根(这儿个字应该没有)),1(角标n)指原始影像第n个pixel值,P(角标n)指经处理后的影像第n个pixel值。
PSNR的单位为dB。
所以PSNR值越大,就代表失真越少。
PSNR是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致,有可能PSNR较高者看起来反而比PSNR较低者差。
这是因为人眼的视觉对于误差的敬感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化(例如:
人眼对空间频率较低的对比差异敬感度较高,人眼对亮度对比差异的敬感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响)。
(2>52、
FSA7?
=l()xloo-^―
\N1SE)
^ramGsize
工(厂—P)
MSE=;——
Franiesize
3运动估计算法的MATLAB编程
3.1全搜索法
4.
图3-1-4DFD
图3-1-3帧间差值
恢复后的第二帧團像
图3-1-5恢复后的笫二帧图像
18
1
s
■
s
1
■
1
1
1
1
1
•■■■■■■■!
.■八
16
•
•
t
B
1
・k・
0
•
I
i
11
•
14
■■■■■■■■
•
.L.■
s
i
•
•
■
■
■
■x"••T••■■■a
s
■
p・••■■■•r•••
i
i
i
•
12
■■
a
i
1
X
/
B
o
1
s
ii
•i
10
■■
1
•
i
•
1
—
—
—1
0
•
1
1
8
i
i
*;
1
8
X
•
X..
■«^>c■
■
1
…1
L
—•»
TJ-
■
rr•
•
6
■
*■■
k・
I
4—
5
1
i
•4
1
1
7
S
1
zf.J
S
■
1
1
1
•J
1
1
1
4
•
—
<
■
1
a
1
■
•
1
1
1i
■
u__-
2
一
■
•
0
(
f
•
•
\»1
|
Ikz
1
1
*K
1
|
1
e
8
10
12
1
416
18
图3-1-6第一帧图像的运动矢量图
图3-1-7第二帧图像的运动矢量图
3.2三步法
图3・2-1thefirstframe图3-2-2the
secondframe
DFD
图3-2-3帧间差值图3-2-4DFD
图3-2-5恢复后的第二帧图像
8
图3-2-6第一帧图像的运动矢量图
图3-2-7第二帧图像的运动矢量图
3.3全搜索法指标
全搜索算法:
耗时长为E1apsedtimeis1.053320seconds・
3.4三步法指标
三步法:
耗时长为E1apsedtimeis0.881349seconds・
3.4仿真结果分析
根据峰值信噪比可知全搜索算法的效果比三步法的效果要好;但全搜索所消耗的时间要比三步法所消耗的时间长,其运行较慢,因为全搜索算法的搜索点数要比三步法的搜索点数多很多。
4小结与体会
通过本次对全搜索块匹配算法课程设讣,让我更深刻的理解了多媒体信息的获取、搜索和保存的基本方法。
基于块的运动估计,是先将视频图像分成一个个规则的图像块,然后对每个图像块佔讣运动矢量。
基于块的运动估计和运动补偿已经广泛应用于各种视频压缩编码标准。
因此,本次课程设讣是非常有作用的,让我们清醒的认识到自己还有好大的差距,它让我了解了多媒体处理的基本原理。
课程设讣中会遇到很多很多的困难,但在同学的帮助和自己思考下最终还是没有解决问题。
所以,本次课程设计我个人的收获不大,但是让我知道自己还在图像编程方面有很多欠缺的地方,不仅对均方误差(MSE)、绝对值误差(MAD)更深的理解,并且采用全搜索块匹配方法得到所有宏块的运动矢量,把c语言的知识乂重新的过了一遍,同时还理解了些多媒体信息处理的基本原理。
参考文献
[1]罗军辉.MATLAB7.0在图像处理中的应用.机械出版社.2005
[2]王家文.MATLAB7.0编程基础.机械出版社.2005
[3]钟麟.MATLAB仿真技术与应用教程.国防工业出版社.2004
[4]冈萨雷斯.数字图像处理(MATLAB版).电子工业出版社.2005
附录
FS:
clearall;
11=imreadCclaire1.bmp');%readthefirstframe
12=imread(*claire2.bmp');%readthesecondframe
dm=7;
%,给图像扩边,每个边都扩大dm大小
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%I—II--—I
%|BICIDI
%|——-|-———-———————————I———I
%IIII
%IIII
%IEIAIF|>图
像
%IIII
%IIII
%IIII
^/c|———————————————————————————————|~
%|G|H|II
%I—-I一一—■-I■一一」
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11=double(II);
I2=double(12);
[rownumcoInum]=sized1);
II=zeros(rownum+2*dnicolnum+2*dm);
II(dm+l:
dm+rownum,dm+1:
din+co1num)=I1;
fori=l:
dm
11(i?
dm+1:
dm+co1num)=11(dm+1,dm+1:
dm+colnum);
II(rownum+dm+i,dm+1:
dm+colnum)=II(dm+rownum.dm+1:
dm+colnum);end
forj=1:
dm
11(1:
rownum+2*dm#j)=11(1:
rownum+2*dm,dm+1);
11(1:
rownuni+2*dm.co1num+dm+j)=II(l:
rownum+2*dm,dm十colnum);
end
%下面进行全搜索算法
b1ocksize=l6;
rowb1ocks=rownum/blocksize;
co1blocks=co1num/blocksize;
A二99999999999999999999;%为了找到最小的均方误差・A用于设定一个
很大的初值
Eij=o;
xrecord=ones(16#16);
%xrccordfyrecord用于存放匹酉£快的块
号,即运动矢星
yrecord=ones(16,16);
diff=zeros(256r256);%这幅图的大小为256*256
tic
forx=0:
(rowblocks-1)%x表示彳亍中第几个子块
row=x*blocksize;
fory=0:
(colb1ocks-1)%y表示列中第几个子块
col=y*b1ocksize;
%tempx=x*blocksize+1:
(x+1)*biocksize;
%tempy=y*blocksize+i:
(y+1)*blocksize;
forp=-dm:
dm
forq=-dm:
dm%(p.q)表示
X,y对应子块在前一帧所的搜索位置
Eij=0;
Eij=sum(sum((I2(row+1:
row+b1ocksize,col+l:
col+blocksize)-11(row+dm+p+1:
row+dm+p+blocksize,col+dm+q+1:
col+dm+q+blocksize)).A2))/(blocksizeA2);
ifEijA=Eij;
xrecord(x+1,
y+i)=p;
yrecord(x+
ty+1)=q;
end
end
end
toe
end
end
figureJmshow(11,[]);
title(,thefirstframe1);
figurejmshow(12#[]);
title('thesecondframe);
1111=12-11;
figureJmshow(IIIIJ]);
title('帧间差值J;
figure,imshow(diff,[]);
title('DFDr);
%tizr利用全搜索算法匹配后的帧间差•);
forx=0:
(rowblocks-1)%
row=x*blocksize;
fory=0:
(colblocks-1)%
col=y*blocksize;
III(row+l:
row+blocksizexo1+1:
col+b1ocksize)=II(row+dm+xrecord(x十1,y+1)+1:
row+dm+xrecord(x+Ly+l)+b1ocksize,co1+dm+yrecord(x+1・y+l)+1:
co1+