Automatic texture separation and synthesis from a single image
Given a single image of a surface, my system first separates shading from albedo using intrinsic imaging. Next, a height map and a normal map are recovered via shape from shading techniques. The input image is segmented, and inverse distance weighting is used to generate a set of probability maps. The user can then create linear combinations of the probability maps which measure specular, roughness, metallic or other surface properties. The goal is to produce texture maps which can be fed into a production renderer to faithfully reconstruct the photographed surface. The core system exists in a library written in C++ and accelerated using CUDA. There is also an accompanying tool which allows quick user refinements of the texture maps via exposed parameters, and displays a preview of the surface using a physically based OpenGL/Vulkan/Metal viewport depending on platform. An individual project created by Jack Diver.