Greg.Randall

Documenting a Block

March 9th 2025

I’m trying to document an entire block for a project with Sarah (and maybe eventually an entire street), but trying to capture a continuous view of a block. If you take a series of photos while driving (stop, shoot, drive forward, stop, shoot,….), objects at different distances shift positions between frames making stitching together a cohesive photo difficult — aka the parallax problem.

I’m trying a slit-scan technique that captures thin vertical strips from a moving video, then assembles them side-by-side to create a continuous image.

Slitscan example showing frames and slices
Illustration from Paul Bourke

It’s all a bit messy to make this actually happen, you have to slice up the video and then reassemble the video into a single image. Also in this case, the car was moving more than one pixel per frame so, I had to figure out how far the car moved for every frame of video — about 65px. Which is all good, but my speed wasn’t perfectly consistent so that stretches/shrinks the image unevenly.

The thing though that always strikes me about trying to record pictures of houses, there are cars, telephone poles, trees, etc. in the way. I had the idea that I could get several different points-of-view by building the panorama from the left, left-center, center, right-center, and right of each frame of video, and then combining those panoramas I could see behind the cars and trees. Buuut, turns out the perspective shift is really too much, does make a cool gif tho.

slit scan of same block but bouncing back and forth showing perspective

Here’s the video that the slitscan/gif came from.

I have a bit of code to share for this, but it’s all pretty hacky. Stripe.sh takes a folder of tif files and cuts them into little strips. If you need to generate your tifs it’s pretty easy with ffmpeg, or you could tweak the stripe.sh to work directly from a mp4

ffmpeg -i input.mp4 frames/%09d.tif

The second bit of code takes those stripes and assembles them, there are several options for overlap and testing.