1. A method for estimating motion, said method comprising: performing feature detection on a current image frame to identify a plurality of regions in said current image frame, wherein each region in said plurality of regions is associated with a key point in an image coordinate frame; computing a feature descriptor for each region in said plurality of regions, thereby producing a plurality of feature descriptors for said current image frame; performing feature matching between said plurality of feature descriptors for said current image frame and a plurality of feature descriptors computed for a key image frame, thereby producing a plurality of feature correspondences; and when a number of feature correspondences in said plurality of feature correspondences meets a sufficiency criterion: for each feature correspondence in said plurality of feature correspondences, computing a distance between said corresponding features; and when said plurality of distances meet a first criterion: for each feature correspondence in said plurality of feature correspondences, projecting said associated key points from said image coordinate frames to a world coordinate frame, thereby producing a plurality of pairs of world coordinates; computing a motion estimate from said plurality of pairs of world coordinates; generating a current camera pose in a global coordinate frame; determining a motion trajectory from said current camera pose; and updating said plurality of feature descriptors computed for said key image frame to said plurality of feature descriptors for said current image frame.