Frozen Time

Simple slit scan photography

Record a video, 2 or 3 minutes long. Or take photos every minute over a long time.

If you use footage as source disassemble the movie frame by frame to generate the a lot of photos. Its good to have more than 3000 single frames.

Then cut from every photo a small band, maybe 1 pixel small. Only one strip per photo. And arrange the these stripes to build one new image.

An other way to think about slit scan photography

Your footage is formed like an 3D quarter. On the front side of this quarter the first image of your series can be seen. All the photos form X/Y planes inside the quarter. In Z direction all the images are sequentially stacked. You can call the Z direction the time axis.

Its now possible to cut this quarter in an arbitrary way. Look at the cutting face. This intersecting plane is your new image.

public class LinearHorizontalSlit extends OrbitRoot implements Orbit {
    final boolean top;
     
    public LinearHorizontalSlit(File[] in_files, String[] args) {
        this.top = checkArg(args, 0) ? args[0].equals("0") : true;
    }
 
    @Override
    public ContextOut buildContextOut(ContextIn ictx) {
        this.ictx = ictx;
        this.octx = new ContextOut(ictx.depth, ictx.width);
        return this.octx;
    }
     
    @Override
    public void f(Point p) {
        p.sx = p.ty;
        p.sz = p.tx;
        if(this.top) {
            p.sy = (int) (((double)p.tx / this.octx.width) * this.ictx.height);
        }
        else {
            p.sy = (int) ((1.0 - (double)p.tx / this.octx.width) * this.ictx.height);
        }
    }
 
    @Override
    public String toString() {
        return "LinearHorizontalSlit [top=" + this.top + "]";
    }
}

Software used

  • GNU Wget to capture images from web cams.
  • FFmpeg to split footage to single images.
  • Custom OpenJDK program to cut the images and arrange to a new image.