A method for obtaining a model of an object surface from a plurality of images of said object, wherein the object is illuminated with one or more illumination sources (104, 105, 106), the method comprising: - obtaining a set of images each comprising an array of pixels and representing same views of an object, wherein the same views are obtained under different illumination conditions; - defining a model function (f) that expresses the known pixel intensity values of the images in terms of the following unknown model components: - a first model component representing the albedo of the object at each pixel location, the first model component being an albedo value which is the same for the plurality of images; - a second model component representing an intensity of illumination for each image, the second model component being an illumination source intensity value which is the same for all pixels of each image; - a third model component representing a specific illumination direction, the third model component being an illumination vector which is different for each image and the same for all pixels of each image; - a fourth model component representing surface normal directions of the object surface at each pixel position, the fourth model component being a normal vector which is the same for all images; - performing more sequences of minimization operations to minimize a difference function between the pixel values obtained from the set of images and pixel values calculated using said model function (f), each minimization operation being performed by allowing one of said model components (A, L, V, N) to vary while the others remain unchanged; - outputting the fourth model component as said model of the object surface; wherein said sequence of minimization operations comprises an iterative loop in which each of said model components (A, L, V, N) is varied in turn at least once before a subsequent iteration, said iterative loop being repeated until a termination condition is met, and wherein said iterative loop comprises a first inner loop and a second inner loop, and wherein the first inner loop comprises five iterations, whereby each of the iterations of the first inner loop comprises one of the sequence of minimization operations based on a variation of the third model component followed by one of the sequence of minimization operations based on a variation of the fourth model component, wherein the first inner loop is followed by the second inner loop and the second inner loop comprises five iterations, whereby each of the iterations of the second inner loop comprises one of the sequence of minimization operations based on a variation of the second model component followed by one of the sequence of minimization operations based on a variation of the first model component. - obtaining a set of images each comprising an array of pixels and representing same views of an object, wherein the same views are obtained under different illumination conditions; - defining a model function (f) that expresses the known pixel intensity values of the images in terms of the following unknown model components: - a first model component representing the albedo of the object at each pixel location, the first model component being an albedo value which is the same for the plurality of images; - a second model component representing an intensity of illumination for each image, the second model component being an illumination source intensity value which is the same for all pixels of each image; - a third model component representing a specific illumination direction, the third model component being an illumination vector which is different for each image and the same for all pixels of each image; - a fourth model component representing surface normal directions of the object surface at each pixel position, the fourth model component being a normal vector which is the same for all images; - a first model component representing the albedo of the object at each pixel location, the first model component being an albedo value which is the same for the plurality of images; - a second model component representing an intensity of illumination for each image, the second model component being an illumination source intensity value which is the same for all pixels of each image; - a third model component representing a specific illumination direction, the third model component being an illumination vector which is different for each image and the same for all pixels of each image; - a fourth model component representing surface normal directions of the object surface at each pixel position, the fourth model component being a normal vector which is the same for all images; - performing more sequences of minimization operations to minimize a difference function between the pixel values obtained from the set of images and pixel values calculated using said model function (f), each minimization operation being performed by allowing one of said model components (A, L, V, N) to vary while the others remain unchanged; - outputting the fourth model component as said model of the object surface;