|
||||||
![]()
Image Deformer
This application is designed to allow a picture of a t-shirt to be placed over a picture of a model as if they were wearing it. This allows clothing websites to take a very small number of stock photographs of models, and have it appear as if any model is wearing any t-shirt. Hiring a model is an expensive process which would have to be repeated each time a new t-shirt was added for sale, were it not for this application. Chicken Walker
The most complex project I have undertaken to date, I worked in a team of three on this bipedal mobile robot. I wrote all the computer code for the project, which came to over 25,000 lines of C++. The project used a novel client-server system and used a genetic algorithm to design an artificial neural controller. You can read more about this project on the Projects page. Avolve - Artificial Life
The latest and by far the most advanced of my artificial life programmes, Avolve uses genetic algorithms to artificially evolve neural networks for animats in a simple environment. It is far from finished, but I hope to continue working on it when I'm not working on my third year project! It is hoped that the animats will learn motion, foraging and predator avoidance.
The picture shows a selected (red) animat and the ray tracing lines to other nearby animats, the brightness of these lines depending on the distance and the colour being the same as the target. These lines are mapped onto the animat's retina, which triggers retinal cells to activate the neural network. The simulation is Z-buffered, so near objects will occlude far ones. Despite the complexity, it's optimized and manages to maintain a high framerate even with 1500 animats! Avolve was written entirely from scratch using WinAPI and uses DirectX for graphics. Tracker - Artificial IntelligenceThis application takes live video feed from a webcam and analyses it to find moving objects. It then places a bounding box around the object, as well as locating the object's centre of mass. It attempts to track the object as it moves around the frame, although at the moment it has trouble when two objects cross. The picture shows it identifying a pencil. The right hand image is the video feed with bounding boxes drawn on, and the left hand image is binary picture where new objects show as white. This will eventually be used to control a mobile robot. Bug Eater 3 - Artificial Life
The third in a series of artificial life programmes, as well as one out of a large number of smaller artificial life experiments, this fully functional programme simulates a population of 'bugs'. Each bug has certain properties, for example maximum speed and range of sight. They spend their lives searching for food and breeding. When two bugs mate, their properties are passed to the offspring. In this way, the population may evolve over time. Species may be either carnivorous or herbivorous, the carnivores feeding on the herbivores and the herbivores feeding on plant matter that grows in the environment. Three different climates may be selected, arctic, temperate and tropical, each effecting the bugs' evolution. This programme is far to big to describe here, hopefully I'll have a proper information page soon! Mobile Robot
One of the few hardware projects I've done, this is an autonomous mobile robot. It can navigate a room and successfully avoid obstacles by using two forward facing ultrasonic emitter/detector pairs. It's driven using a PIC microcontroller. Internet Controlled Light
I have built a simple relay switch which allows my mains voltage lamp to be switched on an off via a PC's parallel port. I've also written a simple server which accepts commands from the internet and sends specified values to the parallel port. This allows the lamp to be controlled via the internet from anywhere in the world. It can also be viewed by using it in conjunction with my webcam. TreeID Neural Network
This application uses a neural network to give a tree's classification when presented with a leaf sample. Because the presented image may be very noisey and have a very cluttered background, the application first isolates the leaf by approximating it's hue distribution to a normal curve and thresholding around this (the grey box on the graph). An edge detect is then done on the image, and this data is passed through a Hough transform. This allows the line of symmetry to be found, and then the leaf is rotated, cropped and scaled so it may be presented to the neural network in a normalised manner. An n-tuple neural network is then used to match the leaf against trained images, and the result is reported to the user. This project was awarded the highest mark in the year. Pic Code
This simple application hides data in a bitmap. It can take a small data file and place it in a bitmap such that it cannot be detected by visual inspection. Note that it doesn't just append the data to the end of the file! The file remains a normal bitmap, the data is encoded in the pixel values. PlasmaSS
This is a Windows screensaver using DirectX that draws classic fractal plasma and rotates the palette to give a soothing effect. The user may define their own palettes for additional effects. PoohStiX
A simple multiplayer internet game based on the classic game of "Pooh Sticks" from Winnie the Pooh, I wrote this for a friend of mine. I havn't quite finished the graphics yet though... KungFoo
KungFoo is an IRC bot written in C++. It is special in that it it's actions are loaded from user-specified DLLs. Video Effects
By applying some simple effects to incoming live video, this application creates striking moving pictures. An example of the effect is given above. This is only a test, future versions will contain much more! 3D Engine
This is a fairly simple 3D engine that I wrote from scratch. It includes Z-Buffering, Gourad Shading and Back-Face Culling. 3D Map
An extension to the 3D Engine, this programme uses fractal plasma to create a landscape, then renders it in 3D. Fire
This graphics demo displays a pretty realistic fire effect. The fire can be made to burn in any shape by simply drawing it on a bitmap. Fractal Zoomer
This only took about 10 minutes to write, but it looks pretty so I've included it here - a classic fractel zoomer for the Manderbolt set. 3DCA![]()
Written for an A-Level project, this is a 3D version of the famous Cellular Automata, or Conway's Game of Life. Each space may contain a cell, and cells are born or die depending on very simple rules goverened by the number of surrounding cells. From this, complex patterns can emerge. It has been proven that a full Von Neumann computer can be made using CAs. Although it looks like Windows, it's actually written under DOS. 1337 Music StationNo picture for this one unfortunately. This was a PIC microcontroller project using a Milennium board. The task was to program an interface to an LCD, a speaker and a matrix keypad in order to have the PIC play simple notes. The specification called for a simple square wave to be produced, but we added our own hardware (a DAC, aplifier and loudspeaker) in order to produce sum-of-siunsoids output and give a much nicer (and much louder!) sound. The station was pre-programmed with some short tunes which it could play back, and there was also a game feature where you could try and press the correct keys as the tune was playing. Because of it's sum-of-sinusoids engine, it could play multiple tunes at once, and was programmed to play "Pilgrimage" by Nine Inch Nails with both the normal and bass line. It sounded awful because it wasn't properly in tune, but the ability was there. The project ranked third in the year, with the report scoring 92% SkillsWhile my main talent is in computer programming, I also have the following skills:
|
||||||