资源简介
给出了几种快速运动估计的算法,包括三步搜索法,四步搜索法等。
代码片段和文件信息
% 使用自适应路径搜索法计算运动向量(Adaptive Rood Pattern Search)
%
% 输入
% imgP : 原图像
% imgI : 参考图像
% mbSize : 宏块大小
% p : 搜索参数
%
% 输出
% motionVect : 原图像的运动向量
% ARPScomputations: 宏块搜索点的平均数
function [motionVect ARPScomputations] = ARPS(imgP imgI mbSize p)
[row col] = size(imgI);
vectors = zeros(2row*col/mbSize^2);
costs = ones(1 6) * 65537;
% 小钻石搜索图样的格点
SDSP(1:) = [ 0 -1]; %
SDSP(2:) = [-1 0]; % 1
SDSP(3:) = [ 0 0]; % 2 3 4
SDSP(4:) = [ 1 0]; % 5
SDSP(5:) = [ 0 1]; %
% 我们将会在一个初始为零的检验矩阵中标记除已完成检验的点的位置,并且标志为1
checkMatrix = zeros(2*p+12*p+1);
computations = 0;
% 从图像左上角开始
% 以宏块边长为单位步长
% 在每个宏块的上下左右四个方向上,寻找其最吻合的分块
mbCount = 1;
for i = 1 : mbSize : row-mbSize+1
for j = 1 : mbSize : col-mbSize+1
% 自适应路径搜索法(ARPS)从这里开始
x = j;
y = i;
costs(3) = costFuncMAD(imgP(i:i+mbSize-1j:j+mbSize-1) ...
imgI(i:i+mbSize-1j:j+mbSize-1)mbSize);
checkMatrix(p+1p+1) = 1;
computations = computations + 1;
% 如果在最左边一列,则进行大菱形搜索LDSP(步长为2)
if (j-1 < 1)
stepSize = 2;
maxIndex = 5;
else
stepSize = max(abs(vectors(1mbCount-1)) abs(vectors(2mbCount-1)));
% 如果运动矢量指向的点为大菱形图样上面的点,无需重复计算
if ( (abs(vectors(1mbCount-1)) == stepSize && vectors(2mbCount-1) == 0) ...
|| (abs(vectors(2mbCount-1)) == stepSize && vectors(1mbCount-1) == 0)) ...
maxIndex = 5; % 只需检查路径上的5个点
else
maxIndex = 6; % 检查路径上的6个点
LDSP(6:) = [ vectors(2 mbCount-1) vectors(1 mbCount-1)];
end
end
% 一开始只能用大菱形搜索
LDSP(1:) = [ 0 -stepSize];
LDSP(2:) = [-stepSize 0];
LDSP(3:) = [ 0 0];
LDSP(4:) = [stepSize 0];
LDSP(5:) = [ 0 stepSize];
for k = 1:maxIndex
refBlkVer = y + LDSP(k2); % 行
refBlkHor = x + LDSP(k1); % 列
if ( refBlkVer < 1 || refBlkVer+mbSize-1 > row ...
|| refBlkHor < 1 || refBlkHor+mbSize-1 > col)
continue; % 超出图像边界
end
if (k == 3 || stepSize == 0)
continue; % 已计算中心点
end
costs(k) = costFuncMAD(imgP(i:i+mbSize-1j:j+mbSize-1) ...
imgI(refBlkVer:refBlkVer+mbSize-1 refBlkHor:refBlkHor+mbSize-1) mbSize);
computations = computations + 1;
checkMatrix(LDSP(k2) + p+1 LDSP(k1) + p+1) = 1;
end
[cost point] = min(costs);
% 如果最小值为菱形的中心点,则doneFlag置1
x = x + LDSP(point 1);
y = y + LDSP(point 2);
costs = ones(15) * 655
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5213 2010-07-22 17:14 运动估计基本算法\ARPS.m
文件 519 2004-04-25 21:46 运动估计基本算法\costFuncMAD.m
文件 18418 2010-07-22 17:14 运动估计基本算法\DS.m
文件 5573 2010-07-20 11:30 运动估计基本算法\FourSS.m
文件 1798 2010-07-11 20:24 运动估计基本算法\FullSearch.m
文件 487 2010-07-07 12:45 运动估计基本算法\imgPSNR.m
文件 3033 2010-07-22 17:13 运动估计基本算法\main.m
文件 700 2004-04-14 22:25 运动估计基本算法\minCost.m
文件 1094 2004-04-10 14:09 运动估计基本算法\motionComp.m
文件 8129 2010-07-17 20:23 运动估计基本算法\NewTSS.m
文件 10924 2010-07-20 11:30 运动估计基本算法\SESTSS.m
文件 2767 2010-07-20 11:18 运动估计基本算法\ThreeStepSearch.m
文件 865 2010-07-22 18:12 运动估计基本算法\必读.txt
文件 122444 2005-10-20 12:51 运动估计基本算法\运动估计块匹配算法(英文原版).PDF
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car000.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car001.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car002.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car003.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car004.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car005.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car006.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car007.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car008.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car009.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car010.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car011.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car012.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car013.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car014.bmp
文件 77878 2010-07-07 12:59 运动估计基本算法\car\car015.bmp
............此处省略90个文件信息
评论
共有 条评论