基于块的全搜索运动估计算法实现实验报告.docx

上传人:b****5 文档编号:8564860 上传时间:2023-01-31 格式:DOCX 页数:10 大小:143.86KB
下载 相关 举报
基于块的全搜索运动估计算法实现实验报告.docx_第1页
第1页 / 共10页
基于块的全搜索运动估计算法实现实验报告.docx_第2页
第2页 / 共10页
基于块的全搜索运动估计算法实现实验报告.docx_第3页
第3页 / 共10页
基于块的全搜索运动估计算法实现实验报告.docx_第4页
第4页 / 共10页
基于块的全搜索运动估计算法实现实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于块的全搜索运动估计算法实现实验报告.docx

《基于块的全搜索运动估计算法实现实验报告.docx》由会员分享,可在线阅读,更多相关《基于块的全搜索运动估计算法实现实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

基于块的全搜索运动估计算法实现实验报告.docx

基于块的全搜索运动估计算法实现实验报告

 

数字视频处理

实验报告

 

学院:

通信与信息工程学院

系班:

电信科0901班

姓名:

学号:

时间:

2012年11月23号

 

一、实验名称:

基于块的全搜索运动估计算法实现

二、实验目的:

1、掌握运动估计算法的实现原理。

2、掌握运动估计算法的研究现状及多种计算方法。

3、学习基于块的全搜索运动估计算法,研究分析其Matlab实现程序过程,并补充完成程序,对实验结果进行分析比较。

三、实验要求

三、实验要求

1、对实验程序motionEstAnalysis.m进行分析,完成主程序流程图。

函数流程图:

2、编写补充完成部分不全程序代码,调试程序使其能正确运行

(1)motionEstES()

%Computesmotionvectorsusingexhaustivesearchmethod(全搜索法计算运动矢量)

%

%Input

%imgP:

Theimageforwhichwewanttofindmotionvectors(当前图像)

%imgI:

Thereferenceimage(参考图像)

%mbSize:

Sizeofthemacroblock(宏块尺寸)

%p:

Searchparameter(readliteraturetofindwhatthismeans)(搜索参数)

%

%Ouput

%motionVect:

themotionvectorsforeachintegralmacroblockinimgP(当前图像中每一个积分宏块的运动矢量)

%EScomputations:

Theaveragenumberofpointssearchedforamacroblock(每个宏块搜索的平均点数)

%

%WrittenbyArohBarjatya

function[BlockCenter,motionVect,EScomputations]=motionEstES(imgP,imgI,mbSize,p)%定义函数文件motionEstES.m,imgP、imgI、mbSize、p为传入参数,BlockCenter、motionVect、EScomputations为返回参数

[rowcol]=size(imgI);%将参考图像的行数赋值给row,列数赋值给col

blockcenter=zeros(2,row*col/mbSize^2);

vectors=zeros(2,row*col/mbSize^2);%定义全0的矢量矩阵的大小

costs=ones(2*p+1,2*p+1)*65537;%定义最小绝对差矩阵的大小

computations=0;%搜索点数赋初值为0

%westartofffromthetopleftoftheimage(从图像左上角开始)

%wewillwalkinstepsofmbSize(以宏块尺寸为步长)

%foreverymarcoblockthatwelookatwewilllookfor

%aclosematchppixelsontheleft,right,topandbottomofit(对于每一个宏块,在它的上下左右找到与搜索参数p最匹配的像素)

mbCount=1;%搜索的宏块数赋初值为1

%1为循环起始值,mbSize为步长值,row-mbSize+1为循环终止值

fori=1:

mbSize:

row-mbSize+1

forj=1:

mbSize:

col-mbSize+1

%theexhaustivesearchstartshere(全搜索开始)

%wewillevaluatecostfor(2p+1)blocksvertically

%and(2p+1)blockshorizontaly(我们将计算水平方向上(2p+1)个块的最小绝对差和垂直方向上(2p+1)个块的最小绝对差)

%misrow(vertical)index(m为行指数)

%niscol(horizontal)index(n为列指数)

%thismeanswearescanninginrasterorder

form=-p:

p%水平方向上位移矢量范围

forn=-p:

p%垂直方向上位移矢量范围

%补充下面程序

%row/Vertco-ordinateforrefblock(参考块的行(垂直方向)的范围)

refBlkVer=i+m;

%col/Horizontalco-ordinate(参考块的列(水平方向)的范围)

refBlkHor=j+n;

%如果参考块的行列范围的任意一个在已经搜索过的宏块之外,则继续下一步的搜索

if(refBlkVer<1||refBlkVer+mbSize-1>row...

||refBlkHor<1||refBlkHor+mbSize-1>col)

continue;

end

costs(m+p+1,n+p+1)=costFuncMAD(imgP(i:

i+mbSize-1,j:

j+mbSize-1),...

imgI(refBlkVer:

refBlkVer+mbSize-1,refBlkHor:

refBlkHor+mbSize-1),mbSize);

%搜索下一个点

computations=computations+1;

end

end

%Nowwefindthevectorwherethecostisminimum

%andstoreit...thisiswhatwillbepassedback.(现在找到有最小绝对差的矢量并存储它,这就是将被返回的东西)

%补充下面程序

blockcenter(1,mbCount)=i+mbSize/2-1;

blockcenter(2,mbCount)=j+mbSize/2-1;

%findswhichmacroblockinimgIgaveusminCost(找到参考图像中最小绝对差的宏块)

[dx,dy,min]=minCost(costs);

%rowco-ordinateforthevector(矢量的行集合)

vectors(1,mbCount)=dy-p-1;

%colco-ordinateforthevector(矢量的列集合)

vectors(2,mbCount)=dx-p-1;

%搜索下一个宏块

mbCount=mbCount+1;

costs=ones(2*p+1,2*p+1)*65537;

end

end

BlockCenter=blockcenter;

motionVect=vectors;%返回当前图像中每一个积分宏块的运动矢量

EScomputations=computations/(mbCount-1);%返回每个宏块搜索的平均点数

(2)costFuncMAD()

%ComputestheMeanAbsoluteDifference(MAD)forthegiventwoblocks(对给定的两个块计算最小绝对差)

%Input

%currentBlk:

TheblockforwhichwearefindingtheMAD(当前块)

%refBlk:

theblockw.r.t.whichtheMADisbeingcomputed(参考块)

%n:

thesideofthetwosquareblocks

%

%Output

%cost:

TheMADforthetwoblocks(两个块的最小绝对差)

%

%WrittenbyArohBarjatya

%定义函数文件costFuncMAD.m,currentBlk、refBlk、n为传入参数,cost为返回参数

functioncost=costFuncMAD(currentBlk,refBlk,n)

%补充下面程序

cost=sum(sum(abs(currentBlk-refBlk)))/(n*n);

(3)minCost()

%Findstheindicesofthecellthatholdstheminimumcost(找到拥有最小绝对差的点的指数)

%

%Input

%costs:

Thematrixthatcontainstheestimationcostsforamacroblock(包含宏块的估计代价的矩阵)

%

%Output

%dx:

themotionvectorcomponentincolumns(列方向上运动矢量组成)

%dy:

themotionvectorcomponentinrows(行方向上运动矢量组成)

%

%WrittenbyArohBarjatya

function[dx,dy,min]=minCost(costs)

[row,col]=size(costs);

%wecheckwhetherthecurrentvalueofcostsislessthenthealreadypresentvalueinmin.

%Ifitsindedsmallerthenweswaptheminvaluewiththecurrentoneandnotetheindices.

%(检测costs的当前值是否比已经出现的最小值小。

如果小的话,我们将当前值与最小值对调,并注明指数)

%补充下面程序

minnum=65536;

x=8;

y=8;

fori=1:

row

forj=1:

col

if(costs(i,j)

minnum=costs(i,j);

x=i;

y=j;

end

end

end

dx=x;

dy=y;

min=minnum;

(4)imgPSNR()

%Computesmotioncompensatedimage'sPSNR(计算运动补偿图像的峰值信噪比)

%

%Input

%imgP:

Theoriginalimage(原始图像)

%imgComp:

Thecompensatedimage(补偿图像)

%n:

thepeakvaluepossibleofanypixelintheimages(图像中任何一个像素的可能的峰值)

%

%Ouput

%psnr:

Themotioncompensatedimage'sPSNR(运动补偿图像的峰值信噪比)

%

%WrittenbyArohBarjatya

functionpsnr=imgPSNR(imgP,imgComp,n)

%补充下面程序

MSE=(1/(n*n))*sum(sum((imgP-imgComp).^2));

PSNR=10*log10(255^2/MSE);

psnr=PSNR;

 

四、实验结果与分析

1、当前研究帧运动估计结果图

图一第2帧到4帧运动矢量图

图二第4帧到6帧运动矢量图

2、当前研究帧重构图像和当前研究帧重构误差图像

图三由i=2的参考图像得出P帧重构图像

图四由i=2帧参考图像得出直接误差与重构误差对比

图五由i=4的参考图像得出P帧重构图像

图六由i=4帧参考图像得出直接误差与重构误差对比

3、当前研究帧图像和当前研究帧重构图像的PSNR值

直接运动补偿算法的PSNR值

 

基于运动估计的运动补偿算法的PSNR值

PSNR=40.8615;

实验结果分析:

 

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

当前位置:首页 > PPT模板 > 艺术创意

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

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