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; e) storing the optimized tapestry image in a data store of a computing device; and f) displaying an output image comprising the optimized tapestry image on a display of the computing device.