没有合适的资源?快使用搜索试试~ 我知道了~
用穷尽匹配算法实现运动估计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 57 浏览量
2022-05-07
23:20:32
上传
评论
收藏 527KB DOC 举报
温馨提示
用穷尽匹配算法实现运动估计.doc
资源推荐
资源详情
资源评论
金华市金兰水库除险加固工程监理实施细则
作业一 用穷尽匹配算法实现运动估计
一、实验目的
1、学习穷尽匹配算法的原理。
2、学习如何利用 Matlab 实现穷尽算匹配法的运动估计
3、比较恢复前后的图像,计算峰值信噪比。
二 实验原理
最常用的运动估计准则是锚定帧 与目标帧 之间每个对应点对之间亮度值之差的和。
通常可以把运动场表示为 ,其中 是一个包含所有运动参量的矢量。类似
地,映射函数可以定义为 。接上, 中的 移动到 中的 。因此目标
函数可以写为: (1)
其中 是在 中所有像素的集合, 是一个整数。当 时,上面的误差称为平均绝对差
(MAD),当 时,称为均方差(MSE)。误差图像 称为位移
帧差(DFD)图像。
在块平移模式下, , ,在公式(1)中的误差可以写成:
(2)
因为对于一个块所估计的 MV 只影响这个块的预测误差,所以我们可以通过使每个块的累
积预测误差最小化来个别地估计每个块的 MV,即
(3)
运用穷尽搜索方法确定这个误差最小的 就是 EBMA。EBMA 为锚定帧的一个给定块
确定最优 的方法是,在一个预先定义的搜索范围区域内,把它与目标帧中的所有候选块 进
浙江省水利水电建筑监理公司金华市金兰水库除险加固工程监理部
1
金华市金兰水库除险加固工程监理实施细则
行比较,并且寻找具有最小误差的一个。这两个块之间的位移就是所估计的 MV。
三、具体实现步骤
1、读入俩幅图像(本文图像的大小为 512*512),转变成灰度图象。将第二帧图象分成
许多 8×8 大小的子块,对于每一个子块,在第一帧中以取搜索半径为 R,搜索范围分为上、
下、左、右四个方向,各个方向上以 R 为半径伸展开匹配搜索,匹配准则采用最小平均绝
对 差 值 函 数 ( MAD ) , 将 图 象 搜 索 一 遍 后 , 记 下 每 一 子 块 在 第 一 帧 中 的 偏 移 值
(d1,d2);
2、由得到的(d1,d2)画出运动场;
3、由第一帧图象和已求出的运动场恢复第二帧图象;
4、计算重构图像的信噪比。
三、实验结果:
四 实验结果分析
从实验结果分析可知,分块的大小要适中,分块太大运动估计的速度快,但是误差比较大。
分块小的话,会受误差的影响,估计的速度慢,但是比较精度。根据应用的场合选择合适的分
块大小。
浙江省水利水电建筑监理公司金华市金兰水库除险加固工程监理部
2
金华市金兰水库除险加固工程监理实施细则
五 实验程序:
主程序
clc
clear
close all
global blocksize;
a=imread('1.bmp');
a=rgb2gray(a); %彩色图转变灰度图
a=imcrop(a,[10,10,255,255]); %合适的剪取图片
subplot(2,2,1);
imshow(a);title('锚定帧');
b=imread('2.bmp');
b=rgb2gray(b); %彩色图转变灰度图
b=imcrop(b,[10,10,255,255]); %合适的剪取图片
subplot(2,2,2);
imshow(b);title('目标帧');
D=a-b;
mse=sum(sum(D.^2))/(256*256);
FD=10*log10(255*255/mse); %两帧间的视觉保真度。
blocksize=8;
R=15;
for i=1:32
for j=1:32
[offsetx,offsety,DFDblk]=full_search(a,b,i,j,R);
Dx(i,j)=offsetx;
Dy(i,j)=offsety;%存储位移增量
%将每一块的 DFD 存储到位移增差数组中的对应位置
[s,t]=size(DFDblk);
count=(i-1)*32+j;
DFD_st=(count-1)*blocksize.^2+1;
DFD_end=count*blocksize.^2;
DFD(DFD_st:DFD_end)=reshape(DFDblk',blocksize*blocksize,1);
end
end
%运动补偿,预测第二帧
for i=1:32
for j=1:32
x_st=(i-1)*blocksize+1; x_end=i*blocksize;
y_st=(j-1)*blocksize+1; y_end=j*blocksize;
%根据运动矢量获取匹配块在第一帧图像中的位置
fx_st=x_st-Dx(i,j);
浙江省水利水电建筑监理公司金华市金兰水库除险加固工程监理部
3
金华市金兰水库除险加固工程监理实施细则
fx_end=fx_st+blocksize-1;
fy_st=y_st-Dy(i,j);
fy_end=fy_st+blocksize-1;
%从位移增差数组中的相应位置获取每一块的 DFD
count=(i-1)*32+j;
DFD_st=(count-1)*blocksize.^2+1;
DFD_end=count*blocksize.^2;
ass=DFD(DFD_st:DFD_end);
DFD_blk=(reshape(ass,blocksize,blocksize))';
[s,t]=size(DFD_blk);
a_yuce(x_st:x_end,y_st:y_end)=a(fx_st:fx_end,fy_st:fy_end)+DFD_blk;
end
end
subplot(2,2,3)
quiver(Dy,Dx);
axis ij
title('运动矢量图');
subplot(2,2,4);
imshow(uint8(a_yuce));
title('目标帧');
%误差评价
DFD1=a_yuce-b;
MSE=sum(sum(DFD1.^2)')/(256*256);%最小均方误差
PSNR=10*log10(255*255/(MSE+eps));
子程序
function [offsetx,offsety,DFD]=full_search(A1,A2,m,n,R)
global blocksize;
m1=blocksize*(m-1)+1;
m2=blocksize*m;
n1=blocksize*(n-1)+1;
n2=blocksize*n;
%----------定位搜索空间-----------------
S_x_st=m1-R; S_x_end=m1+R;
S_y_st=n1-R; S_y_end=n1+R;
S_Num=(2*R+1).^2;
label=zeros(S_Num,5);
index=0;
%----------边界处理------------
if S_x_st<1
S_x_st=1;
end
if S_x_end+blocksize-1>256
S_x_end=256-blocksize+1;
end
浙江省水利水电建筑监理公司金华市金兰水库除险加固工程监理部
4
金华市金兰水库除险加固工程监理实施细则
if S_y_st<1
S_y_st=1;
end
if S_y_end+blocksize-1>256
S_y_end=256-blocksize+1;
end
%搜索与目标块均方误差最小的图像块作为匹配块
for i=S_x_st:S_x_end
for j=S_y_st:S_y_end
offsetx=m1-i; offsety=n1-j;
ass_block=A1(i:i+blocksize-1,j:j+blocksize-1);
MSE=sum(sum((ass_block-A2(m1:m2,n1:n2)).^2));
index=index+1;
label(index,:)=[offsetx offsety MSE i j];
end
end
[min_MSE,locate]=min(label(1:index,3));
offsetx=label(locate,1);
offsety=label(locate,2);
%计算搜索到的匹配块与目标块的位移增差 DFD
ass_x_st=label(locate,4);
ass_x_end=ass_x_st+blocksize-1;
ass_y_st=label(locate,5);
ass_y_end=ass_y_st+blocksize-1;
ass_block=A1(ass_x_st:ass_x_end,ass_y_st:ass_y_end);
DFD=A2(m1:m2,n1:n2)-ass_block;
浙江省水利水电建筑监理公司金华市金兰水库除险加固工程监理部
5
剩余31页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 92
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java语言的panghu收支统计网站后端设计源码
- 基于Python的网易云音乐API接口设计与实现源码
- 基于Java语言的CustomRelationshipManagement汇客CRM设计源码
- 2024职业规划大赛.zip
- 基于Python语言的售后小程序后台设计源码
- 基于C++的OpenGL ES3.0图形编程入门教程设计源码
- 基于Java和Shell语言的国际卡后端系统设计源码
- c语言结构体对齐变量原理.vsdx
- 基于Java开发的阿里巴巴数据库事业部druid连接池设计源码
- asp.net 原生js代码及HTML实现文件分片上传功能,含前后端代码(自定义上传文件大小、文件上传类型)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功