View License

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

» Watch video

Highlights from
Block Matching Algorithms for Motion Estimation

4.4 | 81 ratings Rate this file 131 Downloads (last 30 days) File Size: 119 KB File ID: #8761 Version: 1.1

Block Matching Algorithms for Motion Estimation


Aroh Barjatya (view profile)


19 Oct 2005 (Updated )

Review of various block matching algorithms used for motion estimation in MPEG coding.

| Watch this File

File Information

This paper (and accompanying MATLAB source code) is a review of the block matching algorithms used for motion estimation in video compression. It implements and compares 7 different types of block matching algorithms that range from the very basic Exhaustive Search to the recent fast adaptive algorithms like Adaptive Rood Pattern Search. The algorithms that are evaluated in this paper are widely accepted by the video compressing community and have been used in implementing various standards, ranging from MPEG1 / H.261 to MPEG4 / H.263. The paper also presents a very brief introduction to the entire flow of video compression.

Please read the README.txt first.


This file inspired Mpeg Compression and Scalable Mpeg Compression Based On Dct Coefficients.

MATLAB release MATLAB 7 (R14)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (127)
03 Feb 2017 sivakumar

It will be really helpful if you could tell me the coordinates of the macroblocks that are used in the searching algorithm. When i use the ARPS method on a 6x6 array and mbsize =4 and p=1 I get 2x2 motion vector. It means that the program does the ARPS on two macroblocks right? So I guess it is taking the top left pixel of both the macroblocks. correct me if Iam wrong. Thank you.

Comment only
11 Oct 2016 indhumathi gunasekar

i need to find sum of absolute difference between two frames using full search algorithm
.can anyone help me out?

16 Aug 2016 dalbouchi roukaya

i used this code with my image . i got an error message as "Subscript indices must either be real positive integers or logicals."in the file "motionComp" any help please

Comment only
12 Jun 2016 kokila singaram

hi, can any one help me to get matlab coding for adaptive rood pattern search to get reconstruced image

Comment only
12 Jun 2016 uma mahessh

Hi,Can anyone please help me in resolving this problem.I stucked up here.

??? Error using ==> imread at 372
File "./caltrain/gray/caltrain000.ras" does not exist.

Error in ==> motionEstAnalysis at 40
imgI = double(imread(imgIFile));

thank you.

06 Jun 2016 rafael alvarez

Thank you

Comment only
06 Jun 2016 rafael alvarez

13 May 2016 ILHO KIM

This page is very helpful.
Thank you sir~!

10 May 2016 mayur lathiya

12 Apr 2016 xingxing52

the codes are very helpful!

Comment only

find the motion vector display with image ...

29 Mar 2016 Mridula Bhan

Thank you sir!!!
these codes are really very helpful.

14 Nov 2015 ammar aljamal

19 Mar 2015 Monika Dash

I substitute my images for ImgI and ImgP and I get these errors.

Error using zeros
Size inputs must be integers.

Error in motionEstES (line 19)
vectors = zeros(2,row*col/mbSize^2);

Error in motionEstAnalysis (line 46)
[motionVect, computations] = motionEstES(imgP,imgI,mbSize,p);

Comment only
26 Feb 2015 vijay i

plz can any one help me how to apply these algorithms with fpga

20 Feb 2015 vijayalakshmi baskaran

can anyone help for hexagon based search pattern

20 Nov 2014 nidhi

nidhi (view profile)

sir, I'm new in MATLAB programming . Can you please help me in running these files .

Comment only
06 Nov 2014 a

a (view profile)

10 Mar 2014 Snehal

Snehal (view profile)

25 Feb 2014 karthikeyan krishnamoorthi

sir, i used this code with my video. i got an error message as
undefined function 'costFuncMAD' for input arguments of type 'uint8'.
can you help me to rectify this error?

Comment only
19 Feb 2014 Weihuan

11 Jan 2014 yuan

yuan (view profile)

Thank you

Comment only
30 Oct 2013 daniel

daniel (view profile)

Anybody knows if i can use it with H.264??

Comment only
10 Oct 2013 Joel

Joel (view profile)

It was a huge help in my project. Thanks a lot Aroh!

19 Apr 2013 noor engg

thank you sir..very nice work but can you help me to get decoder function for motion Est ARPS(adaptive rood pattern search).pleas help me

Comment only
09 Mar 2013 Eco

Eco (view profile)

01 Mar 2013 chandu dusa

thank you sir

14 Dec 2012 Guo

Guo (view profile)

Thank you!

28 Jun 2012 Katerina

Nice work!

Comment only
17 Jun 2012 Vijay Ukani

Can somebody please help in getting caltrain test sequence or similar sequence and guide me on how to create one from a video

29 May 2012 xjtu

xjtu (view profile)

Not bad!

06 May 2012 JAMES JANG

It's I want it!

01 Dec 2011 Bryan

Bryan (view profile)

01 Dec 2011 Bryan

Bryan (view profile)

01 Dec 2011 Tuan Nguyen

Oh sorry I was wrong.

Comment only
30 Nov 2011 Tuan Nguyen

I think your motionEstES function doesn't work. I ran that function with my 2 input images and the function returns a motion vector having the same values for all of the vector's element :(

Comment only
21 Nov 2011 LnZ M

LnZ M (view profile)

Can someone help me with hexagon based and cross diamond algorithm

Comment only
08 Nov 2011 venn lee

Thank you for your posting and sharing!

04 Nov 2011 sun cool

This code is so useful...^^

16 Oct 2011 greta dabre

I have been trying to run this to add the sequences to matlab and run ..please help

Comment only
21 Sep 2011 davide

davide (view profile)

17 Sep 2011 saima

saima (view profile)

can anyone know how to modify this program so that it can show the final position where the motion has been estimated ?

Comment only
22 Jul 2011 khalid fataing

Where to get caltrain sequence. Please help me. i need it urgently

Comment only
21 Jul 2011 James

James (view profile)

I also get "Index exceeds matrix dimensions"!

Comment only
19 Jul 2011 zaynab ahmed

it is good work but the results of psnr is so bad it is for bus 17 , any body could let me know why si the proplem from my video or in the code?

Comment only
14 Jul 2011 James

James (view profile)

I would really like to run the code on my own video, especially using exhaustive search and the ARPS.

Can someone explain to me how to do this?

14 Jul 2011 Jan

Jan (view profile)

Perfect summary of simple block matching algorithms. Thanks for all the work you put in there. It is really appreciated!

11 Jul 2011 ting

ting (view profile)

I am looking for video stabilization.
This code is helpful!Thansk.

Comment only
01 Jul 2011 ram m

ram m (view profile)

Hi experts

I am new to image processing
I want to know how can I load a YUV sequence into this algorithm, I was like confused about that part,
and imgInumber and imgPnumber represent

Thank you

29 Jun 2011 Marc Quinn

Hi I am having difficulty understanding exactly what the motionEstES.m file does?

Could anyone explain this to me or even point me in the direction where I could find a detailed explanation of this?


Comment only
08 Jun 2011 Alasdair Newson

Nice and clear code, but as has been mentioned, can be optimised. Also, just as a note, it is not such a good idea to name your variables things such as "min" (as in minCost).

In minCost, you can replace your loop by :

minRowCosts = min(costs);
[minOut,dx] = min(minRowCosts);
[~,dy] = min(costs(:,dx));

05 Jun 2011 Mario m.

You can find yuv test sequnces on this link:

Then convert it to avi with original data (size and pic/sec).Just download the program on this link or any other program than can convert it.
Then use program 'video to picture'(can download original on any warez) to create bmp picture.

Very usefull code,but need a change for PSNR.

err = err + (double(imgP(i,j)) - double(imgComp(i,j)))^2;

Comment only
10 May 2011 zhang hanze

very good for me,a student

Comment only
09 May 2011 herod

herod (view profile)

to view the above sequences, one can use
pictview software:
or matlab function image()

Comment only
09 May 2011 herod

herod (view profile)

caltrain sequence can be downloaded in this link.

But I am not sure whethe the resolution and frame size is written for this one or not.

Comment only
22 Apr 2011 Sunny

Sunny (view profile)


18 Apr 2011 alhilal book

How to get test images. link is not avaliable. Plz help me. It is very urgent

Comment only
11 Apr 2011 Nikolay S.

Nikolay S. (view profile)

Excellent report, clear and commented code. Bottom up, right on my friend!

27 Mar 2011 Anshul Singhal
is no more accesible..can someone help?

Comment only
02 Mar 2011 kaushik bhar

plz help me

Comment only
02 Mar 2011 kaushik bhar

for the above code i get a message "Index exceeds matrix dimensions" .can some body help me.

Comment only
26 Feb 2011 Karthik

Good work... Is of great help :) Thanks a lot :)

07 Jan 2011 thiru

thiru (view profile)

it shows the computation results in workspace. where will be output stored. how can i retrieve it? please help me.

Comment only
13 Dec 2010 Do Lo

Do Lo (view profile)

09 Dec 2010 Do Lo

Do Lo (view profile)
this link doesn't work
please can any one send ?

Comment only
30 Nov 2010 Thanh

Thanh (view profile)

Please explain for me this problem: i run costFuncMAD.m . But Matlab notifies this :
??? Input argument "currentBlk" is undefined.

Error in ==> costFuncMAD at 19
err = err + abs((currentBlk(i,j) - refBlk(i,j)));
Please show me to repair it. Thanks a lot!!!

15 Nov 2010 pupu QQ

very good work for starters

Comment only
22 Apr 2010 Mohamed Khaled
this link doesnt work
please can any one send ?

Comment only
01 Apr 2010 Alejandro

plzzz make available it can not be acceseed can we perform them on other images too?

Comment only
28 Mar 2010 Raunak

Raunak (view profile)

can anyone help me to

(1) plot of the average number of
searches required per macro block
(2) plot PSNR comparison

Comment only
21 Mar 2010 Raunak

Raunak (view profile)

plzzz make available it can not be acceseed can we perform them on other images too?

Comment only


07 Jan 2010 Mustafa

the test images at can not be accessed anymore :(

30 Aug 2009 santhi

santhi (view profile)

can any one help me to run this file

Comment only
12 May 2009 Dr. Murtaza Khan

The program my give incorrect results. For example in TSS method motionEstTSS.m. The following function call will give wrong results:
costs(2,2) = costFuncMAD(imgP(i:i+mbSize-1,j:j+mbSize-1), ...
Because for video data pixel values are of type integer (0-255) i.e. imgP and imgI of type uint8. Therefore, first use casting to double then call this method.

e.g. a correct and more readable code would be

refBlk=imgI(refBlkVer:refBlkVer+mbSize-1, refBlkHor:refBlkHor+mbSize-1);
thisCost=costFuncMAD(double(currentBlk),double(refBlk), mbSize);
costs(costRow, costCol ) = thisCost;

31 Jan 2009 Dhruv Dave

this is really good work...
but i am not getting motion vector....
how to get motion vector in that program and display the image with motion vector...

PLZ help me

21 Jan 2009 gowthami ....................

i need source code based on successive elimation algorithm of video compression send it to my id plz

Comment only
28 Nov 2008 bangkit erlangga

sir... could i given example programme for recontruction huffman RVLC for mpeg-4, could you help me sir??? i stack sir.
thankyou very much. this my email

21 Oct 2008 a k

sir. i saw your code. Please tell what should be the value of "n" in the code. can we have any value?

11 Aug 2008 Ramakrishna Reddy

14 May 2008 morane bob

12 Feb 2008 raghava k

sir..i have seen ur that i did not understand 'caltrain'...wat is caltrain..? and can u provide me with the source code to implement winner update strategy? atleast guidance please.

09 Feb 2008 suresh kumar

its very good.....and i tried for my sequence but its not working and can you give some tips please sir

23 Jan 2008 kimstik kimstik

costFuncMAD speedup:
err = sum(sum(abs(currentBlk - refBlk)));

is equvivalent:

err = 0;
for i = 1:n
for j = 1:n
err = err + abs((currentBlk(i,j) - refBlk(i,j)));

22 Jan 2008 sankari sivalanka

its very good . sir i request u to plz give code for video compression which is very help ful for my project

27 Dec 2007 Guo Antai

It's good, and gives me some idea for my project.

Comment only
23 Dec 2007 newton bitar

Very Good

Comment only
24 Nov 2007 najib ben aoun

01 Nov 2007 zeb khan

I am looking for mpeg4 matlab code.Will you please send it to me????

Comment only
26 Sep 2007 kiran varavdekar

this is great yaar
i read your codes
can you help me to run this code?

24 Sep 2007 pandu ranga reddy

very good


27 Jun 2007 ahmad zaini

15 Jun 2007 Amit Gangwar

i read ur code.
i can understand programs seperately,
but how can i connect all program,
i can not plz help me

27 May 2007 Ismail Kujma

22 May 2007 nanda nanda

bro, i have final project now, can I ask some questions to u?

17 May 2007 ali ali jan

very nice collection of information

Comment only
13 May 2007 swapnil deshpande


13 May 2007 swapnil deshpande


12 May 2007 karuna sangidwar

good algo

26 Apr 2007 ruchika lalit

i am unable to get the pixel value of whole the image my code is retriving only the pixel value of first pixel and i cannot make the macroblocks of the image because without that i wont be able to apply these codes. plz help

18 Apr 2007 puja hait

i am unable to figure out why mincost has been assigned the particular value=65537.plz tell ma what is the reason behind this?

18 Apr 2007 midhun jasti

I have been trying to run this code...but donno how to add the sequences to matlab and run ..please help

12 Apr 2007 ruchika lalit

thanks.....gr8 work
you have solved my problem

05 Apr 2007 yang ming


28 Mar 2007 midhun jasti

thanks man ..great workk

24 Mar 2007 liu aiping

very good£¡

24 Mar 2007 liu aiping

thank you very much.

Comment only
28 Feb 2007 Madhav Vaidya

i real thank to the site.

14 Feb 2007 Dima Pröfrock

nice collection

10 Jan 2007 Lionel Broche

Some files are from 1994 and can largely be optimised. Moreover, the code does not work well in the static areas. Needs improvements.

07 Dec 2006 manuele mengozzi


Comment only
29 Nov 2006 jaafar mansoory

I need it for my final poject

01 Nov 2006 Reshma Shaikh

sir i am Reshma Shaikh ,student of M.Tech(EC),second year , i need your help in the mean time plz help me.

11 Oct 2006 shakiba moaddab

dear sir/madam
it's a m.s. in electrical computer eng. which wants to detect any jam situation in a tunnel traffic by using matlab. i searched matlab image processing tool box to find any useful thing, but i didn't find anything.
would y ou please help me how to do it.
best regards
sh moadab

01 Oct 2006 Guang hyhl

Please avoid for loop in minCost.m and costFuncMAD.m. Very time-consuming.

22 Sep 2006 jian chen

21 Aug 2006 jayesh tembhekar

10 Jul 2006 mohamed ghoniem

very helpfull matlab code

06 Jun 2006 imane ely

can anybody show me how to run the full search algoritm! i'm not used to Matlab. thanks!

Comment only
05 May 2006 yu jian

it is highly helpfull!!!

03 May 2006 fadi sbahi


26 Apr 2006 Hassan Moladoust

It is Excellent method

29 Mar 2006 Jason Hay

An excellent piece of work! I used your code for comparison during my development of an alternative ME algorithm, and found it highly helpfull.

23 Dec 2005 sai kishore

11 Dec 2005 M A Khan

Very good work

Suggestion: Following plots would make the program more complete.
(1) plot of the average number of
searches required per macro block
(2) plot PSNR comparison

16 Dec 2011 1.1

Updated the README.txt file to reflect the location of test images.

Contact us