1. A method comprising: a) receiving at least one input image; b) identifying at least two input image regions of the at least one input image, each input image region including a portion of the at least one input image; c) determining an objective function including a quality of each of the at least two input image regions. d) optimizing the objective function with respect to a tapestry image containing the at least two input image regions based on the optimizing; and e) storing the optimized tapestry image in a data store.