Build log for

Programmatic Inception-style photo generation

Project in progress

The project

A while ago, I had seen some composite photos (taken from drones) that appear to fold in on themselves, like in Inception (here are some examples). Now that I got a drone myself, I thought it would be nice to try to make some photos like that.

However, being also a programmer, I thought I might be able to generate the photos programmatically from an appropriately-taken video. The video should basically start out looking straight ahead, and go up and forward until it's looking downwards (sample video included above).

I am going to be live-updating this, so if it cuts off in the middle, I just haven't gotten farther (maybe try again later).

First try: Pretty crappy, but promising

For my first try, I decided to take the bottom part of the first frame, put it at the bottom of the final image, then take one row of pixels from the middle of each of the next frames, and stack them up above each other. At the end, I get the top half of the final frame and paste that in above everything else.

As you can see, it doesn't really produce great results. It does look reasonable, but it's nothing portfolio-worthy. There's something wrong with the method that makes it not look plausible at all.

Don't always take the middle row from the image

The next thing I tried was to not take the middle row from the image. The way the video is taken, it's reasonable that the middle row will pretty much always contain the same thing, but from different angles. So, I decided to start taking pixels from the image from some distance below the middle, (say 75% down), continue by taking the 74th% row, then the 73rd%, etc until about 25%, at which point I paste the final top 25% of the image. These percentages were based on how many frames are in the video, and were not hard-coded percentages, so the top and bottom might end up being too short.

This produced slightly more plausible images, but still not very good.

Take fixed image parts

Rather than letting the number of frames in the video dictate the height of the seam, I decided to split the image into five parts, and make the seam only take up the middle fifth. This way, the top and bottom 40% is always the first and last frame of the video, and the rest of the frames are squeezed into the seam.

Better video

The footage I took isn't good enough, so i took another one that would hopefully be more stable.

Above you can see the video and the resulting image, generated with the above method. This image looks much better because of the lack of detail in the sea, since the sea is much less detailed, there's less to think goes wrong. I think it looks pretty plausible, though.