Various old projects

Many of these things started as projects for small clients. Others are things I'm interested in and have been working on -- usually for several years on & off. :) Any IP embodied in them has been removed. The results are now generally free for the taking.

Optimising f90 compiler for GPU-based clusters

I've reprised an old sse2 x86-only f90 compiler for the modern breed of GPU-based machines. It's early days yet, but a simple hack of selecting CAL instructions and trying to optimise inner loop speed based on simple metrics produced by the AMD CAL samples is enough to get many BLAS routines going with CPU/GPU shared memory. As at Jun 2010 basic daxpy/ddot runs at .1-.2 TF on a cheap Radeon 48xx card in an old core2 system.
Download source here.

CAPTCHA breaker

Basic OpenCV library can be tuned to warp and filter typical CAPTCHA systems that implement web security.
Download here.


Mobile camera platform/truckbot

Commercial project to make a hefty 1x.5 m (approx 1 m off the ground) mobile stable platform with top speed of around 4 kph, capable of carrying 10 kg. Project complated with simple RC controls, but have subsequently played around with autonomous version based on "Robby" the robot O/S (see below).

Crypto-secure invisible video watermark

This package introduces an invisible stream of "noise" into a video stream that is extremely difficult to remove without the "key". A utility is provided to add the watermark, display a video stream with the watermark shown, and remove the watermark. While the watermark can't be removed even by large-scale "redaction" (e.g. clipping and/or obscuring the majority of each frame), a limitation of the method is the watermark can't be entirely removed from a sequence that has been significantly tampered with.
Sample still images with watermarks added. The TL image is the original. The others have been watermarked and then tinkered with in various ways. They still verify as marked with the original information, however.

Download here.

Simplified Arrow's Theorem program in Prolog

Click here.

Planner-based robot operating system

"Robby" is not yet another robot operating system -- it supports features so far unique in either hobby or commercial s/w. The system is oriented to problem solving -- not device or interrupt handling.
Underlaying the planner is a standard mobile linux platform (i.e. "buildroot"). Some consideration has been given to mobile platforms with GPU-based graphics processors; the modified OpenCV included in the s/w makes significant use of parallelism provided by CUDA-type chipsets.
A problem domain consists of a set of "operators" that can operate on the robot's model of the world, as well as make changes in the real world. Unlike many other problem-solving systems, operators may be completely opaque to the solver; no pre-conditions or post-conditions need be visible to the system so it can thread operators together in a consistent way to reach desired goal states.
"Programming" is largely eliminated for the naive user -- it's outcomes and goals that are described; not volumes of code needed to achieve those goals.
A pre-written library of operators provide convenient toolboxes for solving basic motion and vision problems. A toolbox to recognise commands in constrained natural language is also included. Speech recognition is yet to be supported.



Download here.

Face Recognition Library

A face recognition solution that will find a matching face quickly. Can be used to implement a web service. When looking for a match among many images (over 1000) in a specific folder, it takes only a second or 2 even on slow processors (e.g. iphone).
Example:

Download here.

Object Recognition Library

Leverages some tricks from the face recognition lib developed as contract work. Several methods available, including colour profiling and component parsing. Recognisers trainable from sets of images. The package is "light weight", meaning it was designed for use on under-powered processors (e.g. iphone). Some work has been done to move the s/w to Intel atom mobos supporting a GPU-based graphics card.
Example:

Download here.
Update Apr 2010: I'm presently running the "learn and recognise" core over the Caltech 101 and 256 benchmarks. Looks comparable with only published benchmark.

Numberplate Recognition/tracking

This s/w is adpated from a few commercial projects I've worked on. It aims to return high-accuracy numberplates given a variety of cameras (B&W or color), changing lighting, changing orientation, unspecified distance from camera, distorted or partially obscured plates, etc. The basic s/w operates in 2 modes -- returning a token for each distinct plate seen; or returning the characters seen on each plate. Either way, a MySQL interface is provided to qutomatically track incoming/outgoing vehicles or weighbridge operations.
Download here.


Video Processing Library

Tracks input from upto 20 webcams, and compares frames with stored screen shots. If any live picture is the same as one of the stored screenshot, than an event is triggered. Alternatively the web cam can be replaced by a stored image or mpeg stream. The s/w has to a learning mode, where the "match" screenshots can be stored and pre-processed. In the running mode the webcams are tracked at 10-30 fps, depending on h/w. The package is "light weight", meaning it was designed for use on under-powered processors (e.g. iphone).
Download here.

Prolog to Yacc compiler

This is a pretty old package and -- as usual -- pretty rough. I've only included it here (it still lives elsewhere c2010) because of the "that is impossible" argument:
Dear,
The problem with Yacc is that he make only finite state automata,
and don't make a gramar.The raly good idea is to use a SQL
as assembly language,but the problem is how to translate,
a big heap of programs(FORMS and REPORTS) writen in
PL/SQL(ORACLE) or INFORMIX 4GL, or(I don't know
what of development tools DB2 uses....
If you know any of people working around this idea ginve mee
a conntact with them....
Thanks in advance, Robert !
robert.bralic@xxxxxxxxxxx
(aka Bore Biko)

Download here.

Texas Holdem

Developing poker strategies on a home-made supercomputer.

Sex war

Sex wars drive evolution.

Edison compiler/interpreter

Edison is a stripped-down language for writing concurrent programs.

Bogus letter from some kind of "paypal.org"

Dear (UNKNOWN) Member,....

Junk mail database

I get more than 6,000 of these pm .

Older and more interesting junk

Click here.
Kym Horsell /
Kym@KymHorsell.COM

ADVISORY: Email to these sites is filtered. Unsolicited email may be automajically re-directed to the relevant postmaster.