Pictured above is a quadtree. Each node is filled in with the average color of its region in the input image. A score is computed for each node based on its mean squared error and its area. The node with the lowest score (highest error) is split into four child nodes. This process is repeated as many times as desired. Detailed regions will be recursively refined while low contrast regions will remain as larger nodes.
This is a web-based visualization of code originally written in Python. See GitHub for the code: https://github.com/fogleman/Quads