Technical Specs

The frame capturing and transmitting system is assembled in a backpack. It is done in such a way that the user carrying the backpack just has to wear the backpack and put on the helmet attached to the backpack. Wearing the backpack and helmet, the user is free to walk around the place capturing and transmitting real time stereoscopy video. (Figures 1 and 2)

Figure 1 – The system assembled in a backpack ready to be used   Figure 2 – Components of the system: Laptop, Firewire Hub, Battery, PCMCIA Wireless Card, Cables, Helmet with Cameras and Backpack

Hardware
Most of the components used are commodity components. It facilitates acquisition and the costs are not prohibitive to build in large scale. Also, commodity components are easily available at local retail stores, which in part, make them widely used under Linux therefore making installation and configuration of the devices involved practical.


Frame Capture and Transmission - Server

Firewire IEEE 1394 cameras from Point Grey [14] were used to do the frame acquisition. These cameras are able to capture frames at the resolution of 640x480 (GRAY – Bayer CCD Filter [15]) per frame at a speed of 30 frames per second.

These cameras have some specific features that are required in this prototype. The first one is that they are hardware synchronized for frame capturing, meaning that both frames will be captured at exactly the same time. This is crucial for the correct formation of the stereo pair. The second one is that these cameras have an extended CCD version. This version makes it possible to position the camera lenses in a way to provide the correct parallax calibration (Figure 3).

Figure 3- Extended CCD Camera Version and Stereoscopy Camera Setup for Frame Capturing

The cameras were connected to a Pentium IV laptop. This machine is responsible for receiving the frames from the cameras, coding them to JPEG through software and then packaging them so they are ready to be sent. The laptop was configured with Linux Fedora Core 1. Currently Linux support most of Firewire and wireless PCMCIA adapters. We used a DLink 802.11 a/b/g PCMCIA wireless card. However we did not owned an 802.11g Access Point to test the system, when this research was done. (Figure 4)

Figure 4 - Server System   Figure 5 – Client System – Options for Stereo Projection: CAVE, Active Monitor or Passive System

Due to the specification of the IEEE1394 protocol concerning power usage, most laptops do not provide a powered Firewire port. Also, most of them carry only one Firewire port. To solve this issue, a Firewire hub was used to provide both power and the additional Firewire port to connect two cameras. In order to make the system fully portable, the Firewire hub had to be powered through the usage of a small battery.


Frame Receiver - Client

On the client side, there are a few options to visualize the stereoscopic video data. For single user visualization, one machine with a stereo capable video card and a stereo active monitor was used. Although active glasses are needed to visualize the stereo video, this technology is becoming commodity nowadays. See Figure 5 for a schematic representation of the client side.
The second option implemented was to use a commodity graphics cluster [16], [17] to project the stereo video on a virtual reality visualization environment called CAVERNA Digital [18]. Although we used only one screen of the projection system, the immersion is good. This system is an implementation based on the Cruz-Neira [19] implementation of 1993. The CAVERNA Digital is a 3 by 3 meter, 5 sided CAVE, with active stereoscopic projections on all the walls and also on the floor. See Figures 6 and 7.

Figure 6 - CAVERNA Digital design. There are 5 projectors, one for each wall and one for the floor   Figure 7 – Example application running in the CAVERNA Digital



Software
The operating system used in our implementation was Fedora Core 1 Linux. Linux was chosen because of its known large community of developers and its stability.


Frame Capture and Transmission – Server/Client

C++ language was used to develop the system. GNU GPL libraries for IEEE1394 camera interface were used in order to capture frames from the cameras. These libraries are libdc1394 and libraw1394 [20].
The JPEG compression library was based on the freely available libjpeg [20]. This library does not support direct memory read and write of JPEG buffers. Our implementation does the memory access coding and decoding for faster image compression. It also takes advantage of the possibility of using threads and different process to do frame acquisition, coding and transmission. This process is exemplified on figure 8.

Figure 8

To support contiguous display of a frame (stereo pair), our implementation is using the solution described on [21], which states the following: “For contiguous display of an object X, X is partitioned into n equi-sized blocks: X0, X1, …, Xn-1 where n is a function of the block size (B) and the size of X”. The time required to display a block is defined as a time period (T).

In our case, R is the fixed bandwidth required to display the whole block of video X. With this technique, when an object X is required by the client, the system stages X0 transmit X0 and the client initiates its display. Prior to the completion of a time period, the client initiates the retrieval of X1, in order to ensure a continuous display. The process is repeated indefinitely until the termination of the client program.