《基于块的全搜索运动估计算法实现实验报告(共10页).doc》由会员分享,可在线阅读,更多相关《基于块的全搜索运动估计算法实现实验报告(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数字视频处理实验报告学 院: 通信与信息工程学院系 班: 电信科0901班姓 名: 学 号: 时 间: 2012 年11月23号一、实验名称:基于块的全搜索运动估计算法实现二、实验目的:1、掌握运动估计算法的实现原理。2、掌握运动估计算法的研究现状及多种计算方法。3、学习基于块的全搜索运动估计算法,研究分析其Matlab实现程序过程,并补充完成程序,对实验结果进行分析比较。 三、实验要求三、实验要求1、 对实验程序motionEstAnalysis.m进行分析,完成主程序流程图。函数流程图:2、编写补充完成部分不全程序代码,调试程序使其能正确运行(1) motionE
2、stES( )% Computes motion vectors using exhaustive search method(全搜索法计算运动矢量)% Input% imgP : The image for which we want to find motion vectors(当前图像)% imgI : The reference image(参考图像)% mbSize : Size of the macroblock(宏块尺寸)% p : Search parameter (read literature to find what this means)(搜索参数)% Ouput% m
3、otionVect : the motion vectors for each integral macroblock in imgP(当前图像中每一个积分宏块的运动矢量)% EScomputations: The average number of points searched for a macroblock(每个宏块搜索的平均点数)% Written by Aroh Barjatyafunction BlockCenter, motionVect, EScomputations = motionEstES(imgP, imgI, mbSize, p) % 定义函数文件motionEst
4、ES.m,imgP、 imgI、 mbSize、 p为传入参数,BlockCenter、motionVect、 EScomputations为返回参数row col = size(imgI); % 将参考图像的行数赋值给row,列数赋值给colblockcenter = zeros(2,row*col/mbSize2);vectors = zeros(2,row*col/mbSize2); % 定义全0的矢量矩阵的大小costs = ones(2*p + 1, 2*p +1) * 65537; % 定义最小绝对差矩阵的大小computations = 0; % 搜索点数赋初值为0 % we s
5、tart off from the top left of the image(从图像左上角开始)% we will walk in steps of mbSize(以宏块尺寸为步长)% for every marcoblock that we look at we will look for% a close match p pixels on the left, right, top and bottom of it (对于每一个宏块,在它的上下左右找到与搜索参数p最匹配的像素)mbCount = 1; %搜索的宏块数赋初值为1%1为循环起始值,mbSize为步长值,row-mbSize+
6、1为循环终止值for i = 1 : mbSize : row-mbSize+1 for j = 1 : mbSize : col-mbSize+1 % the exhaustive search starts here(全搜索开始) % we will evaluate cost for (2p + 1) blocks vertically % and (2p + 1) blocks horizontaly(我们将计算水平方向上(2p + 1)个块的最小绝对差和垂直方向上(2p + 1)个块的最小绝对差) % m is row(vertical) index(m为行指数) % n is co
7、l(horizontal) index(n为列指数) % this means we are scanning in raster order for m = -p : p %水平方向上位移矢量范围 for n = -p : p %垂直方向上位移矢量范围 % 补充下面程序 % row/Vert co-ordinate for ref block (参考块的行(垂直方向)的范围) refBlkVer = i+m; % col/Horizontal co-ordinate(参考块的列(水平方向)的范围) refBlkHor = j+n; %如果参考块的行列范围的任意一个在已经搜索过的宏块之外,则继
8、续下一步的搜索 if ( refBlkVer row . | refBlkHor 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 % Now we find the vector where the cost is mini
9、mum % and store it . this is what will be passed back.(现在找到有最小绝对差的矢量并存储它,这就是将被返回的东西) % 补充下面程序 blockcenter(1,mbCount) = i+ mbSize/2-1; blockcenter(2,mbCount) = j+ mbSize/2-1; % finds which macroblock in imgI gave us min Cost(找到参考图像中最小绝对差的宏块) dx, dy, min = minCost(costs); % row co-ordinate for the vec
10、tor(矢量的行集合) vectors(1,mbCount) = dy-p-1; % col co-ordinate for the vector(矢量的列集合) vectors(2,mbCount) = dx-p-1; %搜索下一个宏块 mbCount = mbCount + 1; costs = ones(2*p + 1, 2*p +1) * 65537; endendBlockCenter = blockcenter;motionVect = vectors; %返回当前图像中每一个积分宏块的运动矢量EScomputations = computations/(mbCount - 1);
11、 %返回每个宏块搜索的平均点数 (2) costFuncMAD( )% Computes the Mean Absolute Difference (MAD) for the given two blocks(对给定的两个块计算最小绝对差)% Input% currentBlk : The block for which we are finding the MAD(当前块)% refBlk : the block w.r.t. which the MAD is being computed(参考块)% n : the side of the two square blocks% Output
12、% cost : The MAD for the two blocks(两个块的最小绝对差)% Written by Aroh Barjatya% 定义函数文件costFuncMAD.m,currentBlk、refBlk、 n为传入参数,cost为返回参数function cost = costFuncMAD(currentBlk,refBlk, n) % 补充下面程序cost=sum(sum(abs(currentBlk-refBlk)/(n*n); (3) minCost( )% Finds the indices of the cell that holds the minimum c
13、ost(找到拥有最小绝对差的点的指数)% Input% costs : The matrix that contains the estimation costs for a macroblock(包含宏块的估计代价的矩阵)% Output% dx : the motion vector component in columns(列方向上运动矢量组成)% dy : the motion vector component in rows(行方向上运动矢量组成)% Written by Aroh Barjatyafunction dx, dy, min = minCost(costs)row, c
14、ol = size(costs);% we check whether the current value of costs is less then the already present value in min.% If its inded smaller then we swap the min value with the current one and note the indices.% (检测costs的当前值是否比已经出现的最小值小。如果小的话,我们将当前值与最小值对调,并注明指数)% 补充下面程序minnum=65536;x=8;y=8;for i=1:rowfor j=1
15、:colif(costs(i,j)minnum)minnum=costs(i,j);x=i;y=j;endendenddx=x;dy=y;min=minnum; (4) imgPSNR( )% Computes motion compensated images PSNR(计算运动补偿图像的峰值信噪比)% Input% imgP : The original image (原始图像)% imgComp : The compensated image(补偿图像)% n : the peak value possible of any pixel in the images(图像中任何一个像素的可
16、能的峰值)% Ouput% psnr : The motion compensated images PSNR(运动补偿图像的峰值信噪比)% Written by Aroh Barjatyafunction psnr = imgPSNR(imgP, imgComp, n)% 补充下面程序MSE=(1/(n*n)*sum(sum(imgP-imgComp).2);PSNR=10*log10(2552/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;实验结果分析:专心-专注-专业