View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Fast Motion Detection(bugs fixed)

4.3 | 3 ratings Rate this file 12 Downloads (last 30 days) File Size: 169 KB File ID: #15767 Version: 1.0

Fast Motion Detection(bugs fixed)


Arash Jalalian (view profile)


01 Aug 2007 (Updated )

this script used a new fast block matching algorithm with dynamic search patterns to obtain motion v

| Watch this File

File Information

this script used a new fast block matching algorithm with dynamic search patterns to obtain motion vectors for each blocks.
[rep_motion motion_vector] = fastMV(im1, im2, w)
1. check with big diamond.
2. check with one of the hexagon subject to previous results.
3. check with small diamond.
'im1' is base frame of a video and 'im2' is the second frame. and 'w' is
the window size. 'rep_motion' is the representative motion vector and
'motion_vector' declare motion vectors for each block of image.
im1 = imread('frame001.jpg');
im2 = imread('frame002.jpg');
w = 16;
[rep_m m_vector] = fastMV(im1, im2, w);
files: fastMV.m, frame01.pgm, frame02.pgm

Required Products Image Processing Toolbox
MATLAB release MATLAB 7.4 (R2007a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
28 Feb 2012 Preetam Reddy

and can i know how the above code works ??

08 Sep 2010 Abel roc

Analaozing this file, I found that the calculations of the differences between the reference Macro Block and his neihgborhoods, sometimes the difference between pixels are zero but the pixels are not the same. I explain it better in an example.

on line 77

diff.diam1{1, k} = abs(slice1{i, j}- im2(s_h_r + pat.diam1(1, k):...
i *w + pat.diam1(1, k),...
s_h_c + pat.diam1(2, k):...
j * w + pat.diam1(2, k)));

if for exemple slice{1,j} = [255 128]
and im2 of the seleced pixels is im2(...)=[255 255]
Then the difference in the fastMV.m file is
diff.diam1{1,k} = [0 0]
and if I'm not wrong this would be
diff.diam1{1,k} = [0 127]

I think that this happens because uint8 doesn't admit negative numbers and the difference (before the abs function) is negative and it aproximates it to 0.

I don't know if it is known and is correct for the algoritm or there is a mistake.


17 Jun 2010 w w

w w (view profile)

Contact us