A computer implemented method to perform a rolling shutter correction of distortion in images captured with an image-capturing device, the distortion due to movement of the image-capturing device, comprising: utilizing calibration data for a camera of the image-capturing device to define a function, and transforming image coordinates in an image plane of an image sensor of the camera into a three dimensional direction vector using the function; determining pre-computed predicted pixel velocity components based on the three dimensional direction vector, wherein determining the pre-computed predicted pixel velocity components comprises: estimating a three dimensional rotation of the camera, applying the estimated rotation to the three dimensional direction vector and transforming the resulting value using an inverse of the function, thereby creating transformed image coordinates; calculating the difference between the image coordinates and the transformed image coordinates; capturing a sequence of images with the image-capturing device; determining, using a motion-estimating device, motion data of the camera in three dimensions during capturing of the images, and determining rotational velocity vectors based on the motion data; estimating for each image an aggregate pixel velocity based on aggregating a weighted sum of each pre-computed predicted pixel velocity component with weights corresponding to each rotational velocity vector for each dimension, and a) multiplying the aggregate pixel velocity for each respective pixel by the difference between a time at which a row of pixels of the image sensor including the respective pixel was captured relative to an arbitrary time for image capture, and subtracting the result of the multiplying from respective corresponding image coordinates in the image plane of the image sensor of the camera, b) assigning each respective pixel a new value based on the result of step a); resampling each image to generate a new image to perform the rolling shutter correction based on the result of step b); wherein the pre-computed predicted pixel velocity components are determined prior to capturing the sequence of images. utilizing calibration data for a camera of the image-capturing device to define a function, and transforming image coordinates in an image plane of an image sensor of the camera into a three dimensional direction vector using the function; determining pre-computed predicted pixel velocity components based on the three dimensional direction vector, wherein determining the pre-computed predicted pixel velocity components comprises: estimating a three dimensional rotation of the camera, applying the estimated rotation to the three dimensional direction vector and transforming the resulting value using an inverse of the function, thereby creating transformed image coordinates; calculating the difference between the image coordinates and the transformed image coordinates; estimating a three dimensional rotation of the camera, applying the estimated rotation to the three dimensional direction vector and transforming the resulting value using an inverse of the function, thereby creating transformed image coordinates; calculating the difference between the image coordinates and the transformed image coordinates; capturing a sequence of images with the image-capturing device; determining, using a motion-estimating device, motion data of the camera in three dimensions during capturing of the images, and determining rotational velocity vectors based on the motion data; estimating for each image an aggregate pixel velocity based on aggregating a weighted sum of each pre-computed predicted pixel velocity component with weights corresponding to each rotational velocity vector for each dimension, and a) multiplying the aggregate pixel velocity for each respective pixel by the difference between a time at which a row of pixels of the image sensor including the respective pixel was captured relative to an arbitrary time for image capture, and subtracting the result of the multiplying from respective corresponding image coordinates in the image plane of the image sensor of the camera, b) assigning each respective pixel a new value based on the result of step a); resampling each image to generate a new image to perform the rolling shutter correction based on the result of step b); a) multiplying the aggregate pixel velocity for each respective pixel by the difference between a time at which a row of pixels of the image sensor including the respective pixel was captured relative to an arbitrary time for image capture, and subtracting the result of the multiplying from respective corresponding image coordinates in the image plane of the image sensor of the camera, b) assigning each respective pixel a new value based on the result of step a); resampling each image to generate a new image to perform the rolling shutter correction based on the result of step b); wherein the pre-computed predicted pixel velocity components are determined prior to capturing the sequence of images.