Software Projects

Here are some of my past software endevours:

Immersed – C# / DirectX 9 [2008, 2 months development]


* Immersed is a 3D game engine that uses Managed DirectX. It can load and render 3D models, perform textured Phong shading, rotate objects, play MOD music (which is synchronised to the graphics display).

* An open source physics engine with a .NET wrapper – ODE.NET – is utilised and provides realistic physics to objects in the 3D world.

* A graphical debugging system, including user controls (such as a scrollable text box) has been partially implemented.

StereoCamera – C++ [2004, 12 months development]


* This is the first piece of software I developed as part of my Computer Vision thesis, which can construct depth and gray maps from two images from a stereo camera (both real and synthetic scenes).

* Makes use of Intel’s Image Processing Library (IPL) and the open-source computer vision library, OpenCV, to perform the image manipulations, as well as the open-source Visualisation Toolkit (VTK), to plot data in 3D.

* The program has been tested on a large variety of images from many different sources and devices and performs consistently well. Here are the results for a stereo photo of the stone lion in Lucerne, Switzerland:

And here is a 3D plot of the results:

 

Motional – C++ [2004, 6 months development]


* This is the second piece of software I developed as part of my Computer Vision thesis, which can perform structure from motion on any image sequence and recover the 3D structure of the scene in the video.

* Works with any video camera or video source (even TV) as well as stored video files.

* Makes use of Intel’s Image Processing Library (IPL) and the open-source computer vision library, OpenCV, to perform the image manipulations, as well as the open-source Visualisation Toolkit (VTK), to plot data in 3D, and VideoOCX to interface the camera itself.

* The program has been tested on a large variety of videos from many different sources and devices and performs well in most cases. Here are results for a video sequence of two Chinese boxes:

And here is a 3D plot of the results:

 

AncientOCR – C++ [2003, 3 months development]


* Performs optical character recognition (OCR) on a scanned page of printed Ancient Greek, using a neural network for classification.

* Makes use of Intel’s Image Processing Library (IPL) and the open-source computer vision library, OpenCV, to perform the image manipulations.

* Examines the scanned page and determines the gradient of the text, so is able to correct for text scanned at any angle (even 45º).

* Achieved 21% accuracy (development time was restricted).

WhozThat – C++ [2003, 3 months development]


* Performs live face recognition via any WDM or VFW video source (e.g. web-cam), using a neural network for classification.

* Makes use of Intel’s Image Processing Library (IPL) and the open-source computer vision library, OpenCV, to perform the image manipulations.

* System can be trained to recognise anyone, provided at least 10 training images are acquired, and lighting and environment conditions are similar.

* Achieved 10% accuracy with live recognition (development time was restricted).

VisCon – C++ [2003, 4 months development]


* Worked in a team of 20 people to write software to control an entire Automated Machine Cluster (AMC) system. This consisted of a RT100 Loader robot that loaded boxes onto a conveyor, over which a video camera was positioned. The VisCon (Vision/Conveyor) system I was in charge of developing controlled the conveyor via the RS232 communication port and analysed the incoming video data to determine box statistics such as orientation, position and slot types. Then a UPJ MotoMan assembly robot placed inserts sorted by a Petra machine into each box and organised the work area. A controlling SCADA computer monitored and ran the entire system.

* VisCon maintained a persistent TCP/IP connection with the SCADA computer and was able to be fully controlled remotely, as well manually.

* Makes use of Intel’s Image Processing Library (IPL) and the open-source computer vision library, OpenCV, to perform the image manipulations.

* System was able to detect foreign objects, raise alarms, and be paused and subsequently resumed at any moment.

Domore Chat – C++ [2003, 3 months development]


* Maintains TCP connections with up to 8 computers (expandable), and allows IP addresses to be reassigned.

* Options to customise graphic and sound (mp3) that occurs on the computer receiving a message, as well as chatter name.

* Threaded face animations that indicate people connecting, disconnecting and sending messages.

* Ability to paste in any clipboard picture and send, as well as resizing the smilies.

* Function to save chat window contents to an RTF file (preserves formatting).

No Life – VB6 [2002, 14 months development]


* This is a full-scale adventure game and was a team project between Joshua Bowd (graphics) and myself (code and music).

* Utilises DirectX 7.0 in full-screen mode, using several techniques such as alpha-blending and gamma fading.

* Plays XM (Extended Module) self-composed music, with fading between scenes and manual volume control.

* Implemented my own path-finding algorithm to allow the sprite to walk around objects in the scene to where the user clicks.

* Full voice narration (by Claire King and Josh Bowd) and conversation engine.

* Ability to examine, pick up, talk to and use any object, as well as a functional inventory.

* Also developed ObjEd (Object Editor) to allow offline scene creation/manipulation.

* Demonstrated at Newtown Mission, Sydney to about 100 people on a data projector.