1. A method of performing discrete element texture synthesis comprising: receiving an input texture comprising a set of discrete elements; receiving a set of boundary conditions defining a boundary of an output texture; initializing the output texture by copying one or more output discrete elements of the input texture to the output texture; determining one or more output neighborhoods representing output elements spatially surrounding a center output element of the output texture; minimizing an energy function to generate a similarity set, the energy function measuring a similarity between each of the one or more output neighborhoods and a corresponding best matching input neighborhood of the input texture; assigning properties to one or more of the output discrete elements based on an analysis of one or more input discrete elements of the similarity set; and storing the output texture in a computer readable storage medium.