1. A method for performing motion estimation between a reference image and a search image, the reference image divided into an array of pixel blocks, the method comprising: determining for each pixel block in the reference image a first vector identifying a pixel block in the search image to which the pixel block in the reference image is matched; compiling the modes of vectors for all of the pixel blocks of the reference image and organizing the modes according to descending frequency of occurrence; selecting from the compiled modes of vectors the major modes; calculating a first error measure for a selected pixel block based on the pixel block of the search image identified by the first vector; and starting with the vector mode occurring the most frequently and proceeding in descending order of frequency for each of the major modes, calculating a current error measure for the selected pixel block based on the current vector of the major modes, and comparing the error measure associated with the pixel block with the current vector, and if the comparison indicates a better match, associating the current vector with the selected pixel block.