STE Projection Surface

Ability to Create Curved Projection Surfaces

Introduction

STE has a new feature. In the past, STE could only create a transform where the projection surface was flat. In a flat projection straight lines in the real world were straight in the resultant image. STE is now capable of creating curved projection surfaces. Projection surfaces can be flat, spherical, cylindrical or custom curves. This allows the creation transforms which are a compromise between visually unfriendly fisheye views and flat views with low fields of view and low resolution near the edges.

UI

The UI for controlling the projection surface has been added to the PTRZ tab. There are four options. The default is 'Flat'. This will set the two curvature values to '0.0 %' and generate results exactly as we do today. The other options are described by example below.

Example - Cylindrical

This first example shows a cylindrical projection surface. This is curved 100% horizontally. It is a circle around the viewer in the horizontal direction. There is a significant improvement in horizontal field of view. Vertical lines are still straight. Horizontal lines are curved. The resolution of the image near the corners is improved over a flat projection. The pixel buffer usage is reduced slightly.

This projection has axis. It is oriented with the output image. If a rotation is applied the curvature is still applied in line with the output image and it's assume that the sensor is slightly rotated. All projections with different curvature in the horizontal and vertical directions act in this way.

Example - Spherical

A spherical projection is curved 100% horizontally and 100% vertically. It is the equivalent of a fish eye lens with an aspect ratio applied. There are problems with the spherical projection. The edges of the projection are curving around behind the lens. The four corners of the image (one indicated by the arrow) are artifacts caused by this.

One way around this problem is to zoom a little. This reduces the field of view and the corners are no longer cropped. The easily way to see this is to look at the limit display, the orange line on the screen shot below. As we are using a fish eye lens, which is has a roughly spherical mapping, the spherical projection basically cancels out to create a rectangular sampling of the input sensor image. As we zoom out we can see that this is no longer cropped at the corners. Another way around these problems is to use a custom projection.

Example – Custom 1

The custom mode allows the user to set values for both curvatures. Best practice might be to start with a fixed projection surface (flat, cylindrical or spherical) that is most like the result you are looking for then switch to custom and adjust the fields a little from that baseline. In this case I started with cylindrical but added a little curvature vertically and reduced the horizontal curvature in order to give a more pleasing view.

Example – Custom 2

A Customer may ask for 'partially correcting for a lens' giving a slightly fisheye result. They are probably looking to fully correct for lens artifacts but map to a curved projection surface. This gives an approximation of not fully correcting for a lens but it's more analytically correct. The resulting transform has better resolution near the corners and improved field of view over a purely flat projection surface. This also tends to reduce the pixel buffer usage.

Limits

A curved projection surfaces can be used with the virtual camera. The results can be somewhat strange. For most applications it make little sense.
Panels will not stitch together in multi-panel mode. It's not mathematically possible to stitch them along a straight line, it would need to be a curve which the hardware cannot accomplish. It is not disabled as some clients may find good use without the stitching.
It is not applied in linear stretch mode.