catch malformed run data/ parameters
sensible naming in RawRun
coerce ProcessedRun into initialising
todo
add a ProcessedImage class
StitchedImage class and doc

We initialise with two input images - one from each camera. The stitched
image is a combination of the two inputs into a single image that is
aligned in physical space.

I've used generators here - they are fast. Should consider using to
replace list comps elsewhere.

The implemented method of writing out is more expressive I think. It
delegates the action of writing to disk to the Image class, which in
turn gets the path to write to from the run that it is initialised with.
plot all visible regions

Background
----------

We are doing some work measuring turbulence in gravity currents with PIV.

The tank setup is as in the two layer work, except there is a black box around
the tank to contain the PIV laser light.

There are windows into the tank to allow us to record what is happening.

These windows can only exist in certain places (constrained by box geometry).

Aims
----

Take the lab images and stitch them together - this should be fine for new
style images as there is no parallax problem.

Overlay boxes which show where the windows can potentially exist.

The spec for these boxes is in displacements from the lock box, measured in
metres.

The current boxes:

- Visible 1: (0.71m - 1.18m)  width = 0.47m
- Visible 2: (1.70m - 2.11m)  width = 0.41m
- Visible 3: (2.70m - 3.08m)  width = 0.38m

See below for calculation.

Window calculation notes
------------------------

The box sections are each 900mm wide, with a 100mm wide strut joining to the
next section.

The first section starts 550mm from the lock.

In the box section sits a panel that has a 700mm wide window, centred in the
panel (i.e. 100mm from each edge).

The visible region is less than 250mm wide and must be more than 50mm from the
edge of the window.

This gives the following visible windows:

- Window 1: (0.7m - 1.3m)
- Window 2: (1.7m - 2.3m)
- Window 3: (2.7m - 3.3m)

On the base of the tank are support struts that act as barriers to any visible
region (as they will block the laser). They are about 500mm apart.

There are three strut sections that overlap the visible windows:

- Strut 1: (0.71m - 1.18m)
- Strut 2: (1.65m - 2.11m)
- Strut 3: (2.62m - 3.08m)

The visible regions are found by the intersection of the windows and the strut
sections:

- Visible 1: (0.71m - 1.18m)  width = 0.47m
- Visible 2: (1.70m - 2.11m)  width = 0.41m
- Visible 3: (2.70m - 3.08m)  width = 0.38m

It might be possible to move the lock box downstream by 0.75m. In this case
the visible regions would shift to new positions with respect to the lock gate:

- Visible 1a: (-0.04m - 0.43m)  width = 0.47m
- Visible 2a: ( 0.95m - 1.36m)  width = 0.41m
- Visible 3a: ( 1.95m - 2.33m)  width = 0.38m
combine raw and processed to single file