A method for generating a three-dimensional image of an object, the method comprising: receiving a set of input point cloud data from an imaging system used to image the object, wherein the set of input point cloud data comprises two or more point clouds, each point cloud defining the x, y and z coordinates of points on the surface of the object, wherein the data in each input point cloud is computed from a respective set of image data acquired by the imaging system, each set of image data being acquired using a different exposure setting for the imaging system; determining, for each point in each respective input point cloud, a value of a quality parameter, wherein the value of the quality parameter for a respective point reflects a degree of uncertainty in the x, y and z coordinates as specified for that point in the respective point cloud; identifying groups of points from the set of input point cloud data, wherein each group comprises a point from each input point cloud and a set of x, y and z coordinates of the point in the respective input point cloud; generating an output point cloud for generating a 3D representation of the object surface, wherein the output point cloud defines the x, y and z coordinates of points on the surface of the object, wherein, for each point in the output point cloud, the x, y and z coordinates of the respective point in the output point cloud are computed based on the sets of x, y and z coordinates in a respective one of the identified groups of points, by applying a respective weighting to each set of x, y and z coordinates in the respective group, wherein the weighting applied to each set of x, y and z coordinates in the group is determined based on the value of the quality parameter associated with the point in the respective input point cloud; the method comprising rendering a three-dimensional image of the object based on the data in the output point cloud. receiving a set of input point cloud data from an imaging system used to image the object, wherein the set of input point cloud data comprises two or more point clouds, each point cloud defining the x, y and z coordinates of points on the surface of the object, wherein the data in each input point cloud is computed from a respective set of image data acquired by the imaging system, each set of image data being acquired using a different exposure setting for the imaging system; determining, for each point in each respective input point cloud, a value of a quality parameter, wherein the value of the quality parameter for a respective point reflects a degree of uncertainty in the x, y and z coordinates as specified for that point in the respective point cloud; identifying groups of points from the set of input point cloud data, wherein each group comprises a point from each input point cloud and a set of x, y and z coordinates of the point in the respective input point cloud; generating an output point cloud for generating a 3D representation of the object surface, wherein the output point cloud defines the x, y and z coordinates of points on the surface of the object, wherein, for each point in the output point cloud, the x, y and z coordinates of the respective point in the output point cloud are computed based on the sets of x, y and z coordinates in a respective one of the identified groups of points, by applying a respective weighting to each set of x, y and z coordinates in the respective group, wherein the weighting applied to each set of x, y and z coordinates in the group is determined based on the value of the quality parameter associated with the point in the respective input point cloud; the method comprising rendering a three-dimensional image of the object based on the data in the output point cloud.