Viper System's Module Description
This document contains a description of the following modules:
The Video Stream module opens a window with the current default video input, by pressing the capture button the module outputs the current frame. This image output is formated onto the AVS field format using four bands (alpha, red, green, blue), with one byte for each band. The user also has the option to turn off the video stream, note that images can only be captured if the stream is turned on.
This module was developed using SGI' VL library. The default video input can be set by using the videopanel program from SGI.
The Video Stream and the Display
Control modules were merged into a more general Image Input.
The paradigm adopted is to implement a module that can capture images from
video or read them from the disk and output them in the same format. This
lets the operator use video and disk images seamlessly, without a need
to change the current network.
On instancing the module the user is prompted
to choose the size of the video window. The size of the window determines
the size of the output image captured from video. On some systems the video
frame rate will increase with smaller windows.
The Image Input module can read images from the disk in
various common formats. This images can be sub-sampled by changing the
sub-sampling rate parameter, this operation is done similarly to
AVS' downsize module.
The images are normally captured from video when the user clicks on the capture button. However, it is also possible for other modules to control the video capture. This can be done by connecting to the Image Input module's "capture integer" input. The module will output an image whenever this integer is non-zero and its value changed since the last cycle.
Optionally this module takes camera calibration information from the Calibration Parameters module. If present, this information can be used to project the images on a sphere.
This module also sets the image parameters according to the calibration parameters, projection status, etc.
As an additional panorama generation constraint, when a full 360 degrees panorama is generated, the system can use information from the position of a corresponding point on each side of the image. This point correspondence constraint can be used to crop unused parts of the image and scale, assuring that each paronama contains a 360 degrees view.
When a mosaic is finished, this module prompts the user if the image spans for more than 360 degrees.
If this is true, the constraint above can be applied. The user must then click on two points in the image (one on each side) that correspond to the same point in space. The module uses this information to crop and re-scale the image to fit the expected horizontal size calculated from the theta resolution in the image parameters. If the Sheer parameter has been set, the module will sheer the image so that the two points have the same height. In general, this has no effect in reducing possible matching errors throughout the image, however, it has a desirable the visual effect.
On the other hand, if the mosaic doesn't span for at least 360 degrees, the constraint can not be applied. In this case, the module will use user interaction, in a two step process, to crop unused or undesired parts of the mosaic. First, the system will ask the user if the mosaic has been wrapped. While a mosaic is being generated, if the size of the image exceeds half of the maximum expected size, the Mosaic Control module will wrap the image and continue drawing it from the other end. Finally, the user must click on two boundary points. The mosaic will be cropped between these points and the first information will be used to decide if the mosaic needs to be unwrapped.
Additionally, it is possible to sub-sample the output image through the sub-sampling rate parameter. This module will also adjust the image parameters according to the sub-sampling and cropping applied.
In planetary and remote driving applications, it is of utmost importance to use a robust system that minimizes the chance of errors. With this need in view, the panorama generation system relies on user monitoring and interaction to assure desirable results. The Mosaic Control module is the main tool for this interaction.
The module is mainly responsible for interfacing during the mosaic generation process, the tasks interfaced by this module can be divided into four main areas:
The Mosaic Control module outputs the two images float to be registered, these are the last registered image and the next image to be added to the mosaic. These images are generated by cropping the input images around the middle to the size defined by the parameters X and Y size of computation image and calculating the luminance. The registration module(s) must return the transformation that best matches the next image to the last. The transformation matrix must be stored in a 9 element 1D AVS float field containing the transformation matrix coefficients. The Mosaic Control module will the use this transformation to add the next image to the mosaic. Although, in a previous version the full transformation matrix was used, currently, for performance reasons, only the first six numbers are used. The last three are set to zero, zero, one respectively, thus forming an affine transformation. Whenever the user starts a new mosaic, the reset output is set to one, this value could be used for resetting registration algorithms.