A method for improving computational efficiency for egomotion estimation comprising: detecting a first image; detecting a second image, wherein the second image is detected at a time after detecting the first image; forming a first edge detected image from the first image; forming a second edge detected image from the second image; dividing the first edge detected image into a first set of first edge detected image patches (13, 15); dividing the second edge detected image into a second set of second edge detected image patches (12, 14), wherein the second edge detected image is divided into the second set of second edge detected image patches (12, 14) in the same manner as the first edge detected image is divided into the first set of first edge detected image patches (13, 15); determining a local translation vector for each corresponding pair of a respective first edge detected image patch and a respective second edge detected image patch by computing correlations between projections of the respective first edge detected image patch onto a first respective vertical axis and a first respective horizontal axis and the respective second edge detected image patch onto a second respective vertical axis and a second respective horizontal axis to derive a set of local translation vectors; determining a center of rotation from the set of local translation vectors; using the center of rotation to estimate a local rotation angle for each local translation vector; estimating a global rotation angle by using the local rotation angles and the corresponding local translation vectors; and estimating egomotion by calculating a two dimensional translation vector between the second image and the first imagewherein estimating egomotion by calculating a two dimensional translation vector between the second image and the first image comprises: determining a horizontal and a vertical displacement for the second image ( i H,i V); where i H = Tr i ′ Hk, i V = Tr i ′ Vk, and where Tr () is a trimmed mean calculation and i' Hk, i' Vk are the local translation vectors corrected for rotation based on the global rotation angle. detecting a first image; detecting a second image, wherein the second image is detected at a time after detecting the first image; forming a first edge detected image from the first image; forming a second edge detected image from the second image; dividing the first edge detected image into a first set of first edge detected image patches (13, 15); dividing the second edge detected image into a second set of second edge detected image patches (12, 14), wherein the second edge detected image is divided into the second set of second edge detected image patches (12, 14) in the same manner as the first edge detected image is divided into the first set of first edge detected image patches (13, 15); determining a local translation vector for each corresponding pair of a respective first edge detected image patch and a respective second edge detected image patch by computing correlations between projections of the respective first edge detected image patch onto a first respective vertical axis and a first respective horizontal axis and the respective second edge detected image patch onto a second respective vertical axis and a second respective horizontal axis to derive a set of local translation vectors; determining a center of rotation from the set of local translation vectors; using the center of rotation to estimate a local rotation angle for each local translation vector; estimating a global rotation angle by using the local rotation angles and the corresponding local translation vectors; and estimating egomotion by calculating a two dimensional translation vector between the second image and the first imagewherein estimating egomotion by calculating a two dimensional translation vector between the second image and the first image comprises: determining a horizontal and a vertical displacement for the second image ( i H,i V); where i H = Tr i ′ Hk, i V = Tr i ′ Vk, and where Tr () is a trimmed mean calculation and i' Hk, i' Vk are the local translation vectors corrected for rotation based on the global rotation angle. determining a horizontal and a vertical displacement for the second image ( i H,i V); where i H = Tr i ′ Hk, i V = Tr i ′ Vk, and where Tr () is a trimmed mean calculation and i' Hk, i' Vk are the local translation vectors corrected for rotation based on the global rotation angle.