资源简介
经典的运动块估计算法EBMA,能够有效地估计目标块的运动,可用于目标跟踪。
代码片段和文件信息
clear all
x = imread(‘1.bmp‘);
pre = rgb2gray(x);
sizepre = size(pre);
sizex = sizepre(2);
sizey = sizepre(1);
y = imread(‘2.bmp‘);
next = rgb2gray(y);
N = 16;%图像划分为16*16的小块
R = 16; %搜索区域
% 获得图像的运动矢量
xnum = sizex/N; % 横向含有块的个数
ynum = sizey/N; % 纵向含有块的个数
motionfield = zeros(ynumxnum2);%初始化运动场矩阵
%对每一个块进行全局搜索,找出最佳匹配的块,从而确定每个块的运动矢量
for i = 1:ynum
for j = 1:xnum
ty = (i-1)*N+1;% 对应块块的顶点坐标
tx = (j-1)*N+1;
x1(1:N1:N) = pre(ty:ty+N-1tx:tx+N-1); % 取出某一个匹配块进行操作
fty = (i-1)*N+1-R;%搜索区域的左上角和右下角坐标
ftx = (j-1)*N+1-R;
fdy = (i-1)*N+N+R;
fdx = (j-1)*N+N+R;
result=Inf; %匹配块的最小DFD
vx = 0;
vy = 0;
for m = fty:fdy-N+1 % 块可以移动的搜索范围
for n = ftx:fdx-N+1
if m>=1 & n>=1 & m+N-1<=sizey & n+N-1<=sizex
test(1:N1:N) = next(m:m+N-1n:n+N-1);
%计算DFD
sum = 0;
for i1=1:N
for i2=1:N
sum = sum+(double(test(i1i2))-double(x1(i1i2)))^2;
end
end
sum = sqrt(sum)/N;
%寻找最小的误差,可以得到运动矢量
if sum result=sum;
vy = m - ty;
vx = n - tx ;
end
end
end
end
motionfield(ij1) = vx;
motionfield(ij2) = vy;
end
end
% *****************矢量量化编码***********************
% 得到了运动矢量场后,将运动矢量抽象为训练样本
TrainMatrix = zeros(ynum*xnum2);
for i=1:1:ynum
for j=1:1:xnum
num = (i-1)*ynum+j;
TrainMatrix(num1) = motionfield(ij1);
TrainMatrix(num2) = motionfield(ij2);
end
end
%生成初始码字
L = 17;
codeMatrix = zeros(L2);
for i=1:L
codeMatrix(i:) = i-9;
end
% 已经得到了运动矢量了,现在进行对下一帧的预测了
est = zeros(sizeysizex); % 初始化第二幅图像
for i=1:ynum
for j=1:xnum
vx = motionfield(ij1);
vy = motionfield(ij2);
ty = (i-1)*N+1; % 要恢复的图像的块的顶点坐标
tx = (j-1)*N+1;
nx = tx + vx;
ny = ty + vy;
x1(1:N1:N) = next(ny:ny+N-1nx:nx+N-1); % 依次取出某一个匹配块进行操作
est(ty:ty+N-1tx:tx+N-1) = x1(1:N1:N);
end
end
sum=0;
for i=1:sizey
for j=1:sizex
sum=sum+(double(pre(ij))-double(est(ij)))^2/(sizex*sizey);
end
end
PSNR=10*log10(255*255/sum);
imshow(uint8(est));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 239670 2010-05-31 15:24 EBMA\1.bmp
文件 239670 2010-05-31 15:24 EBMA\2.bmp
文件 2778 2010-05-31 15:25 EBMA\EBMA.m
目录 0 2010-06-03 09:24 EBMA
----------- --------- ---------- ----- ----
482118 4
- 上一篇:multisim仿真 恒流源
- 下一篇:遗传算法-matlab代码
评论
共有 条评论