Hydra: Portable multi-camera capture facility
This page is under construction.
Introduction
The project is named after the many-headed beast from
Greek mythology, the Lernaean Hydra.
Most of the nomenclature loosely revolves around the legend. The portable
multi-camera capture facility consists of ten (can be scaled easily to 18)
Firewire Pixelink A742 cameras attached to two workstations. The cameras
themselves are capable of capturing images in a range of spatial resolutions
and corresponding temporal resolutions. The cameras are capable of capturing
colour images at 105 fps with 640x480 resolution or 27fps at 1280x1024
resolution. The cameras are synchronised using custom-made circuit that
takes a trigger signal from one of the cameras or an external source and
buffers the signal to trigger all cameras. The cameras are mounted on
different types of tripods and can be positioned at heights of 1-14 feet.
The cameras can be controlled using any computer that can wirelessly connect
to the two workstations named lerna0 and lerna1. A
schematic is presented in Figure 1.
The Hydra project was designed to be easily scaled to 18 or even 32
firewire cameras. The ratio of the cameras to workstations is 6:1 as is the
ratio of the trigger buffer box.
The details of the laboratory are available as a report which should be
referred for the complete details.
The workstations run Linux and use the 1394-based DC Control
Library to control the cameras. There is some custom source code to
manage multiple cameras attached to multiple PCs as well as some Pixelink
specific extensions. Please mail
if you are interested in using the code. There is also a custom GUI to
manage multiple cameras.
The Keck Laboratory is more or less retired and the old webpage can
be accessed here.
Hardware
(Under construction)
Software
(Under construction)
We have written a suite of programs that use the libdc1394 library in
order to perform specialised tasks such as viewing the output of the camera
for the purpose of focussing, pointing, calibration etc. Some of the
functions are described below. All the command line functions take in the
same set of arguments for selecting camera according to ID, setting image
parameters, etc. Some of the options may not be applicable for certain
programs.
jack
As the name suggests this program is a sort of jack of all trades. That
is not to say it doesn't do any task well. It is a catch-all for a bunch of
functions for positioning the camera, setting various parameters and making
measurements. It can be used with one or many cameras and can be used to
perform simple pointing, focussing, performing intrinsic calibration, etc.
The image below shows a simple example of the usage of jack. The image is
live. The camera with id 0 is selected and images are captured in format 7
with image size 320x240. An example of calibration using jack is described
in the next section.
multiview
multiview is a program that is used for synchronised capture. A thread
is devoted to capture from each camera specified by its ID. It is expected
that an external synchronous trigger is supplied to all the cameras. This
program has a graphical front-end, interface.py, described below.
interface.py
This is py-gtk2 script that uses multiview to capture synchronously from
multiple cameras. It expects that there is an external trigger circuit
connected to all the specified cameras. Various image parameters such as
size and shutter speed as well as capture parameters such as the filenames
can be set.
Calibration
(Under construction)
jack has the capability to perform automatic intrinsic calibration using a
chess-board pattern. Extrinsic calibration is performed using Tomas Svoboda's
algorithm. The two calibration procedures are described below.
Intrinsic calibration
jack can be used to perform automatic calibration using a chessboard
pattern. The calibration procedure is performed by starting jack with the
appropriate parameters. A chess board pattern with the correct dimensions is
then positioned in front of the camera in different configurations. For best
results it is necessary to make sure that the chess-board pattern is moved
so that all parts of the image are covered and the board is angled
towards the camera. jack automatically detects the board in the images and
saves a number of images. jack then selects from among the saved images an
optimal set of images for use in the calibration. jack tries to select
a set of images such that the pose of the pattern in the selected set vary
as much as possible.
Contact and Acknowledgements
The Hydra project was designed by Aravind Sundaresan, James Sherman Jr.
and Fritz Mccall as part of the NSF project: New
Technology for Capture, Analysis and Visualisation of Human Movement Using
Distributed Cameras.
|