Daniel Bardsley

A curious mix of personal shenanigans and computer vision research

3D Projection Source Code

Comments Off on 3D Projection Source Code

The following ZIP file contains the source code required to perform 3D projection from stereo images using the DLT approach. The required input is a series of 2D points imaged in 2 views and their corresponding mapping to world space in order to compute the projection matricies for each of the cameras. The simplest method of obtaining this input is through the use of a calibration object. The input points must be located on at least 2 independent planes. Once compiled the application takes 5 files as input (3 calibration files + 2 files containing corresponding points for projection) which are defined as follows:

[CalibA] First set of 2D calibration coordinates
[CalibB] Second set of 2D calibration coordinates
[WorldPts] The 3D world points corresponding to the calibration points in and
[PtsA] 2D coordinates representing the image points in the first view plane to be projected to 3 dimensions
[PtsB] 2D coordinates representing the image points in the second view plane to be projected into 3 dimensions

There must be an equal number of points in [CalibA] [CalibB] and [WorldPts] with the ordering of points in each of the files such that the first point in [CalibA] corresponds to the first coordinate in [CalibB] with both coordinates representing the world space coordinate appearing first in the [WorldPts] file. [PtsA] and [PtsB] must also contain an equal number of 2D coordinates which represent points corresponding accross 2 images usually obtained via as stereo matching algorithm.

Once the application has been executed the file specified by [Output] will represent the 3D projection of the corresponding points specified in [PtsA] and [PtsB].

The source code for this project is written in C++ and requires installation of the OpenCV library. No project files are include however it is trivial to create a solution in the IDE of your choice.

Source files can be downloaded using the following link: 3DProjectionSRC.zip

SopcastSports 0.1 for Linux

Comments Off on SopcastSports 0.1 for Linux

SopcastSports is a Tcl/Tk GUI for the linux version of sopcast tailored towards watching live sporting events. SopcastSports strips live game information from the web (www.myp2p.eu) and presents a list of sopcast streams, sorted by game, to the user. SopcastSports allows the viewing of multiple simultaneous streams and provides greater information regarding the status of the stream than other sopcast clients.

SopcastSports screenshot 2 SopcastSports screenshot 1

If you use sopcast primarily for watching sporting events or simply dislike using sopcast on the command line then this application may be of use to you. Feel free to modify the code and redistribute as you see fit, however, please share any updates to the code you make with the community. I wrote SopcastSports in a couple of afternoons so it’s far from perfect – if you find and fix any bugs or code any improvements I would love to hear from you.

Requirements for running SopcastSports:

  • SopcastSports Tcl/Tk Files
  • Tcl/Tk interpretor (tested against tcl/tk 8.4)
  • The Tix library for Tk
  • sp-sc (linux sopcast client)
  • mplayer
  • wget

All these applications are available from the Synaptic Package Manager or equivalent with the exception of the SopcastSports files which can be downloaded via the link above.

3D Stereo Vision Library: openvis3d

Comments Off on 3D Stereo Vision Library: openvis3d

This Google summer of code project provides another c++ framework for evaluating stereo correlation algorithms and also a useful template library to ease OpenCV programming. The goal of this project is to provide a library of efficient 3D computer vision routines for image and video processing. It includes routines for dense stereo matching, optical flow (motion) estimation, occlusion detection, and egomotion (3D self-motion) estimation.

  • Provides symmetric dense stereo matching with occlusions, symmetric dense optical flow with occlusions, probabilistic 3D egomotion estimation.
  • Designed as a template library.
  • Uses adapters to be compatible with Matlab, OpenCV, and can be easily tailored to be used with any other image processing library. Example code is included for OpenCV and Matlab.
  • Modular structure of Stereo and Optical flow code makes it easy to add new algorithms for local matching, global matching, pre- and post-processing.
  • Well-documented code.

You can visit the project homepage and download source code here.

Middlebury Stereo Vision

Comments Off on Middlebury Stereo Vision

The Middlebury Stereo Vision homepage provides results and evaluation code for comparing dense two frame stereo correlation algorithms. As well as providing a wealth of standard datasets with ground truth data the top ranking correlation algorithms are compared and evaluated for weaknesses. Finally Middlebury provide a comprehensive c++ stereo matching framework for comparing newly implemented correlation algorithms against other state of the art solutions. The home page, data and framework combine to support the work presented in Daniel Scharstein and Richard Szeliski’s 2001 paper: “A taxonomy and evaluation of dense two-frame stereo correspondence algorithms“. [pdf]

Middlebury provide the following useful material on their site:

Simple Visual Controller

Comments Off on Simple Visual Controller

Visual Controller ScreenshotI recently implemented a simple historgram backprojection based vision controller. The sample video (below) shows a hand being tracked with the position of the hand influencing the output of the controller. Distance from the camera is calculated using the area of the object being tracked.

Feel free to download the source code with compiled windows binaries. A working OpenCV installation is also required for this demo to function. Visual Studio 6 project files included. Feel free to mail me with any comments you may have.
Read the rest of this entry »