Bump-mapping and normal-mapping are techniques used in computer-based image editing to make a surface of an object in an image look more realistic by simulating small displacements or texture on the surface. Bump-mapping provides a textured appearance of an object in an image using a bump map that is generally manually created by a user. A bump map provides pixel depth values that are used to modify surface normals of an object (e.g., a sphere) to add lighting effects. The lighting effects give the appearance of texture on the surface of the object. A normal map serves a similar function, but unlike a bump map that generally uses grayscale values to provide pixel depth values, a normal map provides RGB information (e.g., an orientation) for each surface normal of the model object. The orientation of a point corresponds directly with an X, Y, and Z axis in three-dimensional (3D) space. Thus, normal maps indicate an orientation of the surface normal, allowing a 3D application to shade the object appropriately.
Traditional techniques require a user to define bump and/or normal maps by hand, which can be costly, time-consuming, and require the user to have special skills. In contrast, automated techniques that have attempted to create a bump map and/or a normal map from a texture depicted in another image have failed to provide bump/normal maps that accurately convey the desired texture and have failed to offer sufficient user control over the appearance of the created map. Users have thus been left to choose between the options of painstakingly creating bump/normal maps manually or settling for automatically created bump/normal maps that often fail to provide the desired appearance.