Paul Howson’s Website

A Film Restoration Diary

Home-Grown Jitter Stabilisation — Part 6 — A Stabilisation Workflow

For those of you not completely bamboozled by this excursion into the very-technical, here is a summary of the whole stabilisation process developed for the Marianne kine scan.

  • Convert the 2K scanned video into a series of tif files, one file per frame. There are 79675 frames, the dimensions of each frame being 2018 x 1556 pixels.
  • Divide these frames into sequences roughly corresponding to scene changes in the production. Each sequence typically 5–10 minutes duration. Some very short sequences used for fixing “splice bumps”.
  • Use this author’s custom software to analyse the frames and find an optimum reference frame for each sequence. This is one where the displacement of the frame is closest to the median (i.e. most common) value — i.e. it’s a “middle of the road” frame with respect to jitter.
  • The software compares each frame in the sequence with the reference frame, uses image correlation to determine the corner dot movements and calculates the displacement, rotation and vertical scaling of each frame relative to the reference frame.
  • An image transform is then used to reverse these distortions, thus cancelling out the jitter (not perfectly but almost). At the same time each frame is reduced in size from 2K (i.e 2048 x 1556 pixels) to PAL SD+ (720 x 576 pixels plus overscan).
  • The resulting corrected and downsampled frame images are saved to disk and then re-combined into a “stabilised” video file at PAL SD+ resolution.

That’s it in a nutshell, although in practice there were many technical challenges to overcome in making this work and the whole exercise ended up taking many months of part-time work — as usual with these things more than I initially expected!

The stabilised video file was then inserted into Final Cut Pro X where it replaced and matched exactly frame-for-frame the non-stabilised video file. All the previously set level adjustments in FCPX were preserved.

In the next post we’ll take a look at the results of stabilisation.