Motion in modern video coders is estimated using a block matching algorithm that calculates the distance and direction of motion on a block-by-block basis. In this paper, a novel fast block-based motion estimation algorithm is proposed. This algorithm uses an efficient projection framework that bounds the distance between a template block and candidate blocks. Fast projection is performed using a family of highly efficient filter kernels-the gray-code kernels-requiring only 2 operations per pixel per kernel. The projection framework is combined with a rejection scheme which allows rapid rejection of candidate blocks that are distant from the template block. The tradeoff between computational complexity and quality of results can be easily controlled in the proposed algorithm; thus, it enables adaptivity to image content to further improve the results. Experiments show that the proposed adaptive algorithm outperforms other popular fast motion estimation algorithms.