1. A method for image processing, said method comprising: (a) a computing device, labeling edge pixels of a model image using an edge based technique; (b) said computing device, specifying an angular orientation for each of said edge pixels of said model image, wherein a plurality of pixels of said model image are labeled as non-edge pixels and do not have an angular orientation specified; (c) said computing device, labeling edge pixels of an input image using an edge based technique; (d) said computing device, specifying an angular orientation for each of said edge pixels of said input image; (e) said computing device, indexing each of said angular orientations for each of said edge pixels of said input image into a feature index identifying its respective location wherein said respective location is stored as a one-dimensional value in a location list, where the one-dimensional value preserves a two-dimensional said location; (f) said computing device, determining candidate locations of an object within said input image based on said feature index and said angular orientation for each of said edge pixels of said model image, and including identifying said candidate locations in a coarse resolution stage that identifies for at least one block of pixels a predetermined number of top-ranked said angular orientations, ranking made by a criteria that includes at least one of: (i) the frequency of the occurrence of a said angular orientation in a block of pixels; (ii) the strength of an edge associated with a said angular orientation; and (iii) a gradient magnitude of an edge associated with a said angular orientation where the top-ranked said angular orientations are used to define a low resolution template, and where the candidate locations are modified in a fine resolution stage using at least one high resolution template; and (g) based upon the modified said candidate locations selecting at least one object location within said input image.