Across the pale parabola of joy...

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.

Schematic of the hydra project

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.

Jack in action

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.

interface.py

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.

Last updated Feb 26, 2007.