OpenVIDIA : Parallel GPU Computer Vision


Home

Screenshots

Installation
Instructions


Quickstart

Programming
Example


CD Source Code

Download

Papers

Project
sf.net project page

Related Projects

Comparametric Toolkit

Links

Open GL Ref.

GeForce FX Overclocking

GPGPU

SourceForge.net Logo

Page design based on Blosxom (which was used originally before the move to sourceforge).

This page best viewed with Dillo, Lynx, w3m, Mozilla-Firefox, Galeon, Epiphany . . .

   

OpenVIDIA Quickstart Information

Assuming that you've succesfully compiled the programs, here's a quick description of what they do, and common usage examples. This is just a short list, check the makefile for many more executables (in various states of maintenance..)

For all the programs, the -h option gives help and additional options.

Programs:
glestpchirp2m
hwOrbits
imlibServer
skintrack
flcornersTrack
canny
3dcoordCamFrustum

Program Name: flcornersTrack

This is a simple program for annotating environments.

Upon starting the program, a computer-generated tag is displayed in the centre of the image, and this position is then successively tracked in the video input.

The tag can be moved to a position by clicking the middle mouse button on where you'd like it to appear in the image. A new reference frame can be taken by pressing "r" in the video window.

The text of the tag can be changed by typing in the "Tag" box in the interface GUI. The output boxes labelled "RANSAC", "Matched", and "Features" show information about the corner tracking. "Features" is the number of features (corners) detected in the image, "Matched" is the number of features matched to the reference frame, and "RANSAC" is the number of matched features contributing to the Projective Orbit motion being detected. The corners and matches can be displayed by clicking on the two toggle buttons labelled "Show Matches" and "Show Corners".

The Relative Tracking button allows it to update reference frames on the fly as it needs them. This allows for more motion/rotation of the camera, but at the expense of some drift over time. Should it lose track, the camera should be returned to its last tracked position, and the program is often able to recover.

flcornersTrack works well for a person standing in a fixed location looking about a scene. Current work involves adding panoramic reference frames, multiple points, projective feature invariance etc. etc.. Here's a video [1MB].

[ back to top ]

Program Name: glestpchirp2m

This program creates a panorama with two input images. It is a GPU hardware implementation of 'estpchirp2m' from the videorbits package (see http://comparametric.sf.net for details).

To demonstrate it, type (in the openvidia directory)

./glestpchirp2m -r

and you should see the two test images from the distribution. Depending on how fast your card is, you might see the images move so that they are lined up properly (on a fast card, it might be too fast ;) ). The -r option renders the images to the display.

You can use your own images, by specifying two on the command line:

./glestpchirp2m image1.ppm image2.ppm -r

You can enable downsampling (faster, less accurate estimation) by using the a -l 1 option.


[ back to top ]

Program Name: hwOrbits

This does the same thing as glestpchirp2m (aligns two input images) but acts as a server. Typical usage is:

./hwOrbits -c 1

Which starts it running, with client "id" 1. It will sit there until it gets work to do from another program called imlibServer.

If you have multiple graphics cards, you can start up a separate process on each head by opening a terminal on that head, and running this program (See the note on potential -display :0.1 problems, and likely you'll want to set a different client id)

Again -l 1 option can be used.


[ back to top ]

Program Name: imlibServer

This program sends image pairs to the hwOrbits program and receives the paramters which line them up. Typical usage is:

./imlibServer -p 8 image1.ppm image2.ppm

This will return 8 parameters which line up the two images. When no image names are given, the default test images are used. Right now it sends to a hwOrbits program on client "id" 1 (as above).


[ back to top ]

Program Name: skintrack

This is a program which tracks skin coloured areas, useful for tracking a person's hands. Typical usage is:

./skintrack

Upon starting you'll see a box which represents the region being tracked. If you move your hand into this region, you should see it start to follow your hand around the screen.

This is currently being used as a gesturing interface for wearable computers equipped with Eyetap devices. To control your X11 session, a program in the /tools directory is provided. Type 'make -f Makefile.xnee htrackServer' to compile it (might have to set the XNEE_DIR to point to your libxnee source directory), and then, run ./skintrack -s 3 and ./htrackServer 3 640 480 for instance ,to have the hand tracking output control your mouse pointer.

It may be necessary to alter the initial guess for skin colour to suit your system (see the code). Additionally, some versions of the Cg toolkit have problems with the moment summations, 1.2.1 is verified to work

[ back to top ]

Program Name: canny

Just does a canny edge detector and shows it on the screen. Type 0-9 to see the buffers, showing each stage of processing, with the the last buffer being the final edges. Also, the keys (a,z),(s,x) control thresholding parameters.

[ back to top ]

Program Name: 3dcoordCamFrustum

This program shows a 3d coordinate system registered onto a plane. It works by accepting 4 mouse clicks, one at each corner of a plane, and then displays the 3d axis centered on the plane.

[ back to top ]