You can use the SVS with any of the stereo heads available from Videre design. You can also use images available in the computer memory, under both MS Windows and Linux operating systems.
The SVS algorithms are optimized for Pentium processors with MMX instructions. Frame rates are a function of frame size (number of pixels) times the number of disparities (search range). Here are some timings on Pentium II and III machines.
Frame size |
Number of Disparities |
Frame Rate |
Frame Rate |
Frame Rate PIII 1 GHz |
160x120 |
16 |
90 Hz |
||
32 |
45 Hz |
|||
320x240 |
16 |
23 Hz |
40 Hz |
|
32 |
12 Hz |
22 Hz |
42 Hz | |
640x480 |
16 |
9 Hz |
17 Hz | |
32 | 4.8 Hz | 9 Hz | ||
64 |
2.6 Hz |
5 Hz |
For demanding stereo applications, the recommended PC configuration is a dual-processor Pentium III. One of the processors can be dedicated to the stereo algorithms, and the other to running user application programs on the stereo results.
Because the stereo algorithms are storage-efficient, performance scales linearly with increasing frame sizes. The algorithms execute almost entirely from L1 cache, so that future increases in processor speed will translate directly to higher frame rates. The diagram below, which normalizes different frame sizes and disparity ranges to a common scale based on the pixel-disparity law, shows how the amount of processing needed per pixel-disparity stays relatively constant across frame sizes and disparity ranges.
The SVS is a set of algorithms implemented as a software library. There are routines for:
The Stereo Engine code is written in optimized MMX assembly code for Pentium-based PCs running Linux or MS Windows. The recommended hardware configuration for best performance is a Pentium III/IV processor and a PCI bus, and a display card with at least 8 MB of video memory.
Standard video cameras can be used as input devices. Either monochrome or color cameras are acceptable; the Stereo Engine only uses luminance (intensity) information. The cameras must be genlocked, that is, their image signals must be synchronized. Most cameras have provisions to feed the synch signal of one camera into the other for genlocking.
If you have your own cameras, then you must use a framegrabbers to digitize the stereo video stream and place it in main memory, where the Stereo Engine can process it. You must write your own code to do this; SVS provides function calls to take images from memory and process them.
Videre Design has developed several stereo head assemblies that have direct interfaces to SVS.