Shifting frames horizontally and vertically

From edgertronic high speed video camera
Revision as of 12:34, 29 September 2020 by Matter (talk | contribs) (Implementation details)
Jump to: navigation, search

A beta release supports setting a horizontal and vertical offset. The feature will be merged into mainline edgertronic software once we improve the usability challenges.

We have made the beta release available, follow the software update steps to try out the feature. The beta release passes all the automated tested, but we did not run the full suite of manual tests yet. Let us know what you think. You can always update the camera software back to the latest released code.

Background

Imagine an edgertronic camera mounted on a pole or in some rafters where it takes a man-lift to adjust where the camera is pointing. If the camera isn't pointing at exactly the correct location, a larger video frame will need to be captured, potentially reducing the maximum available capture frame rate and increasing the amount of time it takes to encode and save a captured video. Being able to shift the frame horizontally and vertically allows you to digitally pan and tilt the camera without physically touching your edgertronic camera. This works when the horizontal and/or vertical resolution setting are less than the maximum supported by the camera.

What is important - frame rate or field of view

In a conventional, fixed frame rate, camera - shifting a smaller frame around the full field of view is straight forward. You could imagine a user interface where you see the full field of view and you simply draw a rectangle for the portion of interest. With a high speed camera, changing the number of pixels captured can effect your capture frame rate. Because of this "third dimension" of interaction, setting the frame rate, horizontal and vertical resolutions, and the horizontal and vertical offsets is more challenging.

The user interface is setup with the assumption that your settings are close, and you just want to "nudge" the camera a bit to move the field of view. The settings you change are the horizontal and vertical offsets, which are in units of pixels, supporting positive or negative offset values, and the values are used to nudge the field of view from the normally centered position on the camera's full resolution image.

Implementation details

To get the maximum possible video capture frame rate, many ingenious design ideas are incorporated into the camera. Some of these design choices effect horizontal and vertical offset capabilities.

Camera
model
Horizontal
shift
factor
Vertical
shift
factor
SC1 24 pixels 2 pixels
SC2
SC2+
N/A N/A
SC2X N/A N/A

As a general rule, to nudge the field of view, you must change the H/V offset values by at least the factor show in the table above. For example, on an SC1 increasing or decreasing the horizontal offset value by 10 will likely have no effect. You much change the current horizontal offset value by at least 24. Stated another way, useful horizontal offset values are ... -48, -24, 0, 24, 48, ...

CAMAPI support

During the request/allowed negotiation using the CAMAPI configure_camera() method, include the dictionary entries requested_horizontal_offset and requested_vertical_offset. The response will indicate the actual offset values to use. You need to invoke the CAMAPI run() method passing the same request dictionary for the allowed offset values to be activated. Once activated, the web UI live view window will show you the actual field of view being captured by the camera.

Frame shifting and sub-sampling

When sub-sampling is enabled, the horizontal and vertical offset values are ignored. You can either have frame shifting or sub-sampling enabled, but not both at the same time.