site logo

Artwork with Linear Optimization

May 28, 2021
tags: art

Experiments with art and programming

In the 2018 Spring semester at Oberlin College, I took a class in linear optimization* under Bob Bosch. It was one of the best classes of my Oberlin career. As a final project for the class, Alex Jensen and I created a program that can take in any image and reproduce it with album covers (and other building blocks) under certain constraints. The more complicated properties took much harder to run, so most of artwork here is the result of just applying the right album cover to each block of the image according to its average RGB value. Enjoy!

  • Linear optimization (also called linear programming) is a branch of mathematics concerned with optimizing a linear combination of variables subject to linear constraints. For example, you may wish to optimize 3x+4y subject to 0 ≤ x ≤ 10 and 0 ≤ y ≤ 10-x. If you impose that x and y are integers, you get a much harder integer programming problem.

Code located on Github.

Recreating Starry Night

Starry Night (original)
Original Starry Night, for reference.
Picture of Starry Night in album covers
Picture of Starry Night using only album covers. This artwork is pretty clear, and I like how the subject is immediately obvious, and it takes some time to realize that the image is really made out of album covers.
Zoomed in section of the previous image
This is a zoomed-in version of the above image. Here, it is clearer to see the individual album covers used to create the image.
Picture of Starry Night in flowers
The same concept, but using flowers instead of album covers.
Picture of Starry Night in solid tiles
For this piece, we used tiles of specific solid colors. The different color scheme really changes the tone of the work, while keeping it very close to the original.
Picture of Starry Night in album covers with no two tiles touching
In this piece, we mandated that no two album covers could touch. Unfortunately, it didn't come out as immediately recognizable as the others, but I think it has its own character.