Inspired by https://github.com/fogleman/primitive. I wrote this in Python originally, but it was incredibly slow. Currently, only supports Ellipse shapes with single thread hill climbing. I plan to refactor (code could be more idiomatic) and to improve the algorithm's speed.
Shown below is the Mona Lisa reconstructed with 50 ellipses: