Real-time Stereo on Commodity Graphics Hardware

by Ruigang Yang and Marc Pollefeys

Introduction || Performance ||  Publications |||  Software || Acknowledgment 

What's new

Introduction

We demonstrate a stereo algorithm that is implemented using only the OpenGL APIs. It allows a standard Graphic Processor Unit (GPU), which can be found in every commodity PC with an accelerated graphics card, to perform over one hundred millions of disparity evaluations per second. 


At the heart of our method is a multi-resolution approach to achieve good results close to depth discontinuities as well as on low texture areas. We combine the sum-of-square-differences (SSD) dissimilarity measures for windows of different sizes. This is, in fact, equivalent to using a large weighted correlation kernel with a pyramid shape. By utilizing the mipmap functionality on the graphics hardware, we can compute this dissimilarity measure very efficiently.

Performance

Output size
Search range
Time
Img. Update
(ms)
Read back
(ms)
Disp. Calc.
(M/sec)
(ms)
(hz)
5122
20
30.9
32.3
0.4x2
(VGA)
6.0
139
50
73.1
13.7
164
100
142
7.04
176
2562
20
9.9
101
0.16x2
(QVGA)
1.5
78.5
50
23.1
43.3
110
100
46.1
21.7
124

Performance data on a Radeon 9700 card with overhead to update images and read back results.

 

Publications

Ruigang Yang and Marc Pollefeys. Multi-Resolution Real-Time Stereo on Commodity Graphics Hardware, page 211-217, CVPR 2003

Accompanying Video

Software

Demo version 2.0 (06/2003) : Download. (Linux version)

  • Use FRAGMENT_PROGRAM (requiring a card supporting FRAGMENT_PROGRAM, for example, ATI Radeon 9700 and above)
  • It is a preliminary version with little polish. It has been tested on an ATI Radeon 9700 card and a GeForce Fx5900 card. The main binary must start in the same directory where the text files for fragment programs (ps*.txt) exist.

Demo version 1.0 (03/2003) Download

  •     Use NV_REGISTER_COMBINER (requiring GeForce2 and above)

Acknowledgment

This work was supported in part by the NSF grant ISS-0237533, and by a generous 2002-2003 Link Foundation fellowship

Hua Yang ported demo version 1.0
Justin Hensley ported demo version 2.0 to Linux and added firewire support (this code is available upon request)


Last updated: 10/25/2005