1. A method of image encoding in a video encoder, comprising: selecting initial reference blocks from distinct portions of image; predicting sets of blocks in the image successively over a plurality of stages based on a respectively plurality of templates, each of the plurality of templates including reference blocks selected from at least one of: the initial reference blocks; or previously encoded and reconstructed blocks of the image; and encoding the image in the video encoder using the initial reference blocks and the sets of blocks as predicted, wherein the plurality of templates used for the predicting are used iteratively starting from a weakest template for prediction to a strongest template for prediction and the number of reference blocks increases successively with the iteration of the plurality of templates.