A method of generating a three-dimensional map of a region from successive images of that region captured from different camera poses, the map comprising a set of landmark points each defined by a three dimensional spatial position and image information associated with that three dimensional position, the method comprising: capturing successive images of the region; detecting feature points within the captured images; designating a subset of the captured images as a set of keyframes each having camera pose data indicative of a camera pose and respective sets of measurement data representing image positions of landmark points detected as feature points in that image; in respect of the keyframes, performing bundle-adjustment to generate bundle-adjusted landmark points by iteratively refining the three dimensional spatial positions of the landmarks and the camera pose data associated with at least a subset of the keyframes by: (i) deriving a difference between the measurement data for landmark points in the keyframes and corresponding image positions obtained from the camera pose data and the three dimensional spatial position of that landmark point; and (ii) adjusting one or both of the camera pose data for one or more keyframes and the three dimensional spatial position of one or more landmark points so as to reduce the detected difference; characterized by for a feature point, not corresponding to a bundle-adjusted landmark point, detected at an intervening image which is not a keyframe and present in another intervening image which is not a keyframe, generating a non-bundle-adjusted point corresponding to that feature point by selecting a subset of one or more feature points of the intervening image to become non-bundle-adjusted points, wherein the selecting step comprises detecting the number of landmark points relating to each of a plurality of different image regions of that intervening image, and selecting a new feature point to be added as a non-bundle-adjusted point according to a weighting applicable to the image region containing that feature point, such that the weighting is lower for an image region having a higher number of landmark points; and deriving a camera pose in respect of an image using the non-bundle-adjusted points and the bundle adjusted landmark points. capturing successive images of the region; detecting feature points within the captured images; designating a subset of the captured images as a set of keyframes each having camera pose data indicative of a camera pose and respective sets of measurement data representing image positions of landmark points detected as feature points in that image; in respect of the keyframes, performing bundle-adjustment to generate bundle-adjusted landmark points by iteratively refining the three dimensional spatial positions of the landmarks and the camera pose data associated with at least a subset of the keyframes by: (i) deriving a difference between the measurement data for landmark points in the keyframes and corresponding image positions obtained from the camera pose data and the three dimensional spatial position of that landmark point; and (ii) adjusting one or both of the camera pose data for one or more keyframes and the three dimensional spatial position of one or more landmark points so as to reduce the detected difference; characterized by for a feature point, not corresponding to a bundle-adjusted landmark point, detected at an intervening image which is not a keyframe and present in another intervening image which is not a keyframe, generating a non-bundle-adjusted point corresponding to that feature point by selecting a subset of one or more feature points of the intervening image to become non-bundle-adjusted points, wherein the selecting step comprises detecting the number of landmark points relating to each of a plurality of different image regions of that intervening image, and selecting a new feature point to be added as a non-bundle-adjusted point according to a weighting applicable to the image region containing that feature point, such that the weighting is lower for an image region having a higher number of landmark points; and deriving a camera pose in respect of an image using the non-bundle-adjusted points and the bundle adjusted landmark points. (i) deriving a difference between the measurement data for landmark points in the keyframes and corresponding image positions obtained from the camera pose data and the three dimensional spatial position of that landmark point; and (ii) adjusting one or both of the camera pose data for one or more keyframes and the three dimensional spatial position of one or more landmark points so as to reduce the detected difference;