Factors to Consider When Designing a Multiple Camera Array
Overview
There are many factors that should be taken into account when designing a large camera array. For the purposes of this TAN, large camera arrays will be defined as a system of more than 8 cameras. Large camera arrays require extra care in order to ensure stable and efficient processing of incoming data. These include physical factors such as hubs, cables and host PCs, as well as other factors such as image acquisition software.
Hardware Components
Bus interface (IEEE1394a/b)
Data rate
The choice of bus interface will determine the maximum data rate for all devices on the bus.
IEEE1394a – 400Mb/s
IEEE1394b – 800Mb/s
Note that any IEEE1394a devices that share a bus with IEEE1394b devices will cause the entire bus to operate at IEEE1394a speeds.
Maximum number of devices/hops
The IEEE1394 specification limits the maximum number of devices on a single bus to 64. Note that hubs may contain multiple hops internally. As a result, each hub may appear as more than 1 device on the bus.
Moreover, the absolute maximum hop count is 23. This generally means that the distance between any 2 nodes on the bus should be less than 23. However, depending on other factors such as voltage and wattage, the maximum hop count may be as low as 9.
The maximum number of cameras that can be used to stream images continuously is also limited by the number of DMA contexts supported by the 1394 chipset. This is mentioned below under “Host Adapters”.
Cameras
Power
Each camera requires sufficient power in order to operate properly. Power is provided by either the host adapter card or a powered hub to the camera via either the Firewire cable or GPIO port. The power that can be provided by the host adapter card varies but is generally around 12W. Check the camera’s Getting Started Manual for power requirements..
Daisy chaining
Selecting a camera that supports daisy chaining (e.g. Grasshopper) may reduce cable clutter as it may allow cameras to be connected to each other rather than directly to a hub. The maximum number of cameras that can be daisy chained may be limited by the target data rate per camera. Also, since the maximum hop count is 23, this means that the theoretical maximum number of cameras that can be daisy chained is 23.
The failure modes for daisy chained cameras are different as compared to cameras set up in a star configuration. For example, if the first camera in a line of multiple daisy-chained cameras fails, then all subsequent connected cameras will fail too. However, in a star topology, the rest of the cameras will not be affected.
Data throughput
Using pixel formats that contain fewer bits per pixel may allow the camera to achieve higher frame rates and/or resolutions while maximizing the number of cameras on each IEEE1394 bus. For example, MONO8 or RAW8 data only uses 8 bits/pixel, while RGB8 data uses 24bits/pixel. Keep in mind that the faster a camera runs, the more power it will usually consume.
Onboard color processing
Selecting a camera with onboard color processing may also reduce the computational requirements of the host PC, as the CPU is then freed up to perform other tasks.
Hubs
Power
Hubs can help to provide additional power over the Firewire cable to connected cameras. Point Grey 3-port and 5-port hubs are able to output 1A per port at 12V using the supplied external power supply.
Cable clutter
Hubs can help to reduce the number of cables arriving at the host PC by consolidating connections. For example, a 5-port hub is able to have up to 4 incoming connections which then can be reduced to a single cable to the host adapter on the PC. Note that the total amount of data that can be transferred is still limited by the IEEE1394 bus.
Cables
Length
The maximum length of cable allowed by the IEEE1394 specification is 4.5m. However, Point Grey has 10m IEEE1394b cables that have been tested to work with Point Grey cameras.
Host Adapters
DMA contexts
The number of cameras that can be used to stream images continuously is limited by the IEEE1394 chipset used. The LSI (Agere) chipset used in the Point Grey PCI Express card is able to support 8 simultaneous DMA contexts. This means that 8 cameras are able to stream at any given time, with a combined total bandwidth of 800Mb/s. TI chipsets are able to support 4 simultaneous DMA contexts.
FIFO buffers
The number of FIFO buffers varies between chipsets. A larger isochronous FIFO buffer reduces the chance of image corruption due to a slow PCI bus.
Interface
Depending on the type on interface, the maximum bandwidth of the host adapter varies greatly.
Bus |
32-bit transfer rate |
64-bit transfer rate |
33MHz PCI |
133 MB/s |
266 MB/s |
66MHz PCI |
266 MB/s |
533 MB/s |
100MHz PCI-X |
N/A |
800 MB/s |
133MHz PCI-X |
N/A |
1000 MB/s |
PCI Express |
250 MB/s per lane |
250 MB/s per lane |
It is highly recommended to use a host adapter with a PCI Express interface to minimize the possibility of image corruption.
Dedicated bandwidth
One advantage of PCI Express is that the overall bandwidth is not shared. Each lane is guaranteed to have a dedicated bandwidth of 250MB/s per lane. Other bus-based interfaces such as PCI share the same parallel bus. As a result, 1394 host adapters on a PCI bus may be affected in situations where other peripherals on the PCI bus such as a network adapter takes up bandwidth that is needed for streaming images from a camera.
Host PC
CPU
Using a CPU with multiple cores may accelerate image processing, at the expense of increased programming complexity.
Requiring the images to be processed or encoded into another format in real time may also have a significant impact on performance.
Memory
Each camera utilizes system memory for various functions such as internal buffers within the FlyCapture library, as well as any processing done by the end user application. For very large camera arrays, it may be advantageous to store images in their raw Bayer format (8 bits/pixel) as compared to storing the color processed RGB images (24 or 32 bits/pixel). However, this may mean that additional color processing may have to be performed at a later time.
Expansion slots
It is important to ensure that the motherboard used has sufficient expansion slots to support the number of host adapter cards needed for all cameras. The number of cards needed can be reduced by a factor of 2 by using Point Grey’s dual bus PCI Express card. Each dual bus card has 2 LSI host adapters and effectively behaves as 2 separate host adapters. It is possible to completely saturate both host adapters (2 x 80 MB/s = 160 MB/s) and not exceed the maximum bandwidth for a single PCI Express lane (250MB/s).
Storage
The streaming of images to the disk subsystem can be a very resource intensive task. It is recommended that a striped RAID array be used in cases where a single hard drive is unable to sustain the required write speeds.
Software
Image acquisition
Besides being able to capture images, the software may also need to have the following capabilities:
- Colour processing raw bayer images
- Saving images to disk
- Appending images to a video file (e.g. AVI files)
Synchronization mechanism
All Point Grey 1394a and 1394b cameras support image acquisition synchronization.
When in free running mode, the cameras are automatically synced to within 125µs at the hardware level. Synchronization can also be achieved by triggering all cameras at the same time, either by an external trigger or by an asynchronous software trigger.
Point Grey’s Multisync software can also be used to perform automatic synchronization of cameras across buses. The software is also capable of synchronizing cameras across multiple PCs using a dedicated IEEE1394 timing bus.
Sample Configurations
32 Grasshoppers on desktop PC
This sample configuration contains 32 2.0MP Grasshoppers 1394b cameras which are synchronized and streaming 320MB/s of data into a single PC. All hardware components from the camera to the host adapter card are designed and manufactured by Point Grey.
Hardware components
Component |
Quantity |
Part Number |
2.0MP Grasshopper 1394b camera |
32 |
GRAS-20S4C-C |
FirePRO 3-port hub |
4 |
FWB-HUB-3PORT |
FirePRO dual bus 1394b PCI Express card |
2 |
FWB-PCIE-02 |
IEEE1394b cable |
36 |
ACC-01-2012 |
Host PC (Dual core CPU, 2GB RAM) |
1 |
N/A |
Software components
- Custom image acquisition software using FlyCapture SDK
- Camera synchronization using Multisync software
Bus topology
Limitations
Data rate per camera
There are 8 cameras connected to each host adapter. Since each host adapter can support a maximum data rate of 80MB/s, in order to have all cameras streaming simultaneously, each camera is limited to 10MB/s of data.
Sample output formats (assuming 10MB/s per camera):
Resolution |
Pixel Format |
Bits per pixel |
Frame Rate (Approximate) |
1600x1200 |
MONO8 / RAW8 |
8 |
5fps |
1600x1200 |
MONO16 / RAW16 |
16 |
2.5fps |
1600x1200 |
YUV422 |
16 |
3fps |
1600x1200 |
YUV444 / RGB8 |
24 |
1.7fps |
Resolution |
Pixel Format |
Bits per pixel |
Frame Rate (Approximate) |
800x600 |
MONO8 / RAW8 |
8 |
20fps |
800x600 |
MONO16 / RAW16 |
16 |
10fps |
800x600 |
YUV422 |
16 |
13fps |
800x600 |
YUV444 / RGB8 |
24 |
6.9fps |
Note that an 800x600 image contains a quarter of the data as compared to a 1600x1200 image. As a result, the frame rates can be quadrupled at the same pixel format.
If the frame rates are unsatisfactory, the 32MB onboard frame buffer available in the Grasshopper can be used to store images temporarily which can then be transmitted off the camera at a later point in time.
System memory
Large amounts of RAM may be required to store the images in memory. For example, the amount of RAM required to store a single set of color processed 1600x1200 images from 32 cameras in BGR format is (32 * 1600 * 1200 * 3) = 184MB.
Power
The host adapter cards are unable to power all 8 cameras on each bus by themselves. As a result, the hubs are externally powered to provide additional power over the IEEE1394 cable.
16 Grasshoppers on laptop
This sample configuration contains 16 2.0MP Grasshoppers 1394b cameras which are synchronized and streaming 115.2MB/s of data into a single economically priced laptop.
Hardware components
Component |
Quantity |
Part Number |
2.0MP Grasshopper 1394b camera |
16 |
GRAS-20S4C-C |
FirePRO 5-port hub |
2 |
FWB-HUB-5PORT |
FirePRO dual bus 1394b PCI Express card |
1 |
FWB-PCIE-02 |
IEEE1394b cable |
18 |
ACC-01-2006 |
Magma ExpressBox |
1 |
EB1H |
Host PC (HP Pavilion dv2500) |
1 |
N/A |
Software components
- FlyCap (Part of FlyCapture SDK)
- Camera synchronization using Multisync software
Bus topology
Limitations
Laptop connectivity
In order to connect the IEEE1394 host adaptor card to the laptop, a Magma ExpressBox is used to interface between the host adaptor card and the ExpressCard slot on the laptop.
Data rate per camera
There are 8 cameras connected to each host adapter on the dual host card. Since each host adapter can support a maximum data rate of 80MB/s, in order to have all cameras streaming simultaneously, each camera is limited to 10MB/s of data.
In this case, the cameras were set up to run at 1600x1200 RAW8, with a frame rate of 3.75fps. The total amount of data is (1600 * 1200 * 3.75 * 16) = 115.2MB/s.
Battery life
It is highly recommended that the laptop be powered externally. With the amount of CPU utilization present, it is likely that the internal battery will only function for a short period of time.
System memory
Large amounts of RAM may be required to store the images in memory. This is especially true in laptops, which often have less memory as compared to desktop PCs.
Power
The host adapter cards are unable to power all 8 cameras on each bus by themselves. As a result, the hubs are externally powered to provide additional power over the IEEE1394 cable.