资源简介
手持式摄像机在使用时常常会受到使用者有意无意抖动的影响,从而影响成像效果,造成录制视频的不稳定及跳动问题,尤其是在使用者在一场景中特写或者跟踪某一具体目标时,使用者通常不能准确定位到或者估计出运动目标的位置,从而造成目标在视频中位置的不稳定,造成视频的主观效果变得不理想。
为了解决这一问题,我们需要设计一种算法来识别这种无意义的运动并设法通过补偿的方式来使得场景中的目标物体保持位置稳定的状态。
手持式摄像机捕获的视频通常都会受到抖动的影响,这严重的影响视频的主观效果。
这里提出的算法可以可靠的用于数字视频的去抖动。这个算法通过识别这些意外的抖动并且利用运动补偿的方法来获得一个较好的视频输出。
这个系统可以分为三个模块:(1)运动估计模块;(2)抖动识别模块;(3)运动补偿模块。
![](http://www.nz998.com/pic/35136.jpg)
代码片段和文件信息
function [mvf] = EMBA(R accuracySfNf)
% anchor frame : an_f; target frame : ta_f;
% predict frame : prd_f;
% motion vector MV mvx mvy;
% image size MxM; block size NxN; search range R;
% accuracy: integer pel:1 ; half pel:2
% estimate the motion vector by using integer pel EBMA
%% Get YUV(352 288 4:2:0) frame 0 1 Y component
N = 16;%16x16窗口大小
mov=aviread(‘counter_gravity‘Sf:1:Sf+Nf);%用于shaky proof
len=size(mov(1).cdata1);
w=size(mov(1).cdata2);
mvxf=zeros(len/Nw/NNf-1);
mvyf=zeros(len/Nw/NNf-1);
for index=1:Nf-1
ta_f=mov(index).cdata;
ta_f=ta_f(::1);
an_f=mov(index+1).cdata;
an_f=an_f(::1);
%%
% setting parameters
N = 16;
[len w] = size(an_f);
if (nargin < 1) R = N-1; end;
if (nargin < 2) accuracy = 1; end;
if (R > N-1) R = N-1; end;
start_range = [];
end_range = [];
% time estimation
% the extend target image for motion estimation
% prd_f = zeros(len w);
mvx = []; mvy = [];
if (accuracy > 1) ta_f = imresize(ta_f accuracy ‘bilinear‘); end;
% figure; imagesc(ta_f);
% title(‘target image‘);
% start to estimate motion vetors
for i=1:N:len-N+1
for j=1:N:w-N+1
MAD_min = 255*N*N;
for k=-R*accuracy:R*accuracy
start_range(1) = (i-1)*accuracy+1+k;
end_range(1) = (i-1)*accuracy+k+N*accuracy; % it should be (i-1)*accuracy+1+k+N*accuracy-1;
if (start_range(1) < 1) start_range(1) = 1; end_range(1) = N*accuracy; end;
if (end_range(1) > len*accuracy) end_range(1) = len*accuracy; start_range(1) = len*accuracy-N*accuracy+1; end;
for p=-R*accuracy:R*accuracy
start_range(2) = (j-1)*accuracy+1+p;
end_range(2) = (j-1)*accuracy+p+N*accuracy; % it should be (j-1)*accuracy+1+p+N*accuracy-1;
if (start_range(2) < 1) start_range(2) = 1; end_range(2) = N*accuracy; end;
if (end_range(2) > w*accuracy) end_range(2) = w*accuracy; start_range(2) = w*accuracy-N*accuracy+1; end;
MAD = sum(sum(abs(an_f(i:i+N-1 j:j+N-1)-...
ta_f(start_range(1):accuracy:end_range(1) start_range(2):accuracy:end_range(2)))));
if(MAD < MAD_min)
MAD_min = MAD; dy = start_range(1); dx = start_range(2);
end
end
end
prd_f(i:i+N-1 j:j+N-1) = ta_f(dy:accuracy:dy+N*accuracy-1...
dx:accuracy:dx+N*accuracy-1);
iblk = floor((i-1)/N)+1; jblk = floor((j-1)/N)+1;
mvx(iblk jblk) = dx/accuracy-j;
mvy(iblk jblk) = dy/accuracy-i;
mean_an_f=mean(mean(an_f(i:i+N-1 j:j+N-1)));
MBMAD(iblkjblk)= sum(sum(abs(an_f(i:i+N-1 j:j+N-1)-mean_an_f)))/N^2;
MVMAD(iblkjblk)=MAD_min;
end
end
mvxf(::index)=mvx;
mvyf(::index)=mvy;
madf(::index)=MBMAD;%宏块自身MAD
mvmad(::index)=MVMAD;%计算运动矢量时输出的MAD
end
mvf=struct(‘mvx‘mvxf‘mvy‘mvyf‘mad‘madf‘mvmad‘mvmad);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 160256 2010-05-27 21:47 SHAKE_PROOF\132orig.avi
文件 183808 2010-05-27 21:47 SHAKE_PROOF\132proof.avi
文件 182272 2010-05-27 21:41 SHAKE_PROOF\65orig.avi
文件 185856 2010-05-27 21:41 SHAKE_PROOF\65proof.avi
文件 1500872 2010-05-25 21:55 SHAKE_PROOF\counter_gravity.avi
文件 3001 2010-06-06 16:01 SHAKE_PROOF\EMBA.m
文件 1036 2010-06-06 16:02 SHAKE_PROOF\hist2d.m
文件 50003 2010-05-27 20:51 SHAKE_PROOF\mvf132+46fr7.mat
文件 67142 2010-05-27 21:46 SHAKE_PROOF\mvf132+46fr7mad.mat
文件 49647 2010-05-27 21:08 SHAKE_PROOF\mvf65+46fr7.mat
文件 68260 2010-05-27 21:26 SHAKE_PROOF\mvf65+46fr7mad.mat
文件 1936 2010-06-06 16:00 SHAKE_PROOF\shakeproof.m
文件 1130 2010-05-27 20:49 SHAKE_PROOF\splitmv.m
文件 166 2010-06-06 16:05 SHAKE_PROOF\introduction.txt
目录 0 2010-05-30 22:31 SHAKE_PROOF
----------- --------- ---------- ----- ----
2455385 15
- 上一篇:PC/SC 协议文档
- 下一篇:LDO低压差线性稳压器核心电路的设计.pdf
相关资源
- 计算机图形学 边填充算法实现代码
- 郭天祥ARM9视频教程
- 福建师范大学历年算法考卷
- 栈的实现及应用,六种基本算法
- Bresenham算法绘制线段并利用“橡皮筋
- 介绍几种压缩算法及《笨笨数据压缩
- 改进的BP神经网络算法
- A星算法_原理讲解_例子
- 云模型的相关算法cloud
- 旋转矩阵求欧拉角的简单算法
- 栅栏填充算法源码(VC)
- RSA算法源码
- 关联分析Apriori算法实现
- [免费]relax算法成像
- 操作系统 LRU算法 实验报告 及 程序代
- 分治法快速排序算法QuickSort C
- 现代谱估计算法 music ESPRIT 谐波分解
- MUSIC算法c 实现
- 007出纳管理系统 v7[1].5.94 算法注册机
- 克鲁斯卡尔算法C和C 实现代码
- capon波束形成算法-VC实现
- QGA 量子遗传算法
- 利用OpenGL写毛笔字算法
- 带头结点的单链表的c算法实现
- 自适应隐写算法wow
- 协同过滤算法源码
- RSA AES DES ECC加密算法源码
- 密码学课程设计:DES加密解密算法的
- 北航人工智能原理课大作业源代码,
- vc编写中国象棋详细源码注释并附有视
评论
共有 条评论