Dylan Hoen's Homepage
Electrical Engineer and Computer Programmer for hire in Victoria, BC, Canada
Main Page
Employers:
Click Here
Programming
Things I Have Built
About Dylan

Programming
Title Page Java C with OpenGL QBASIC PHP


Dylan's Image Processor


Built: 2002/02/06 - 2010/07/29 (Ongoing, a few days per year, as of this writing)
Added to Webpage: 2010/07/29

What started out as an attempt blur the border of an image into the background color of a web page has evolved into a feature-rich, command line driven image editing program. I had also, at one time, made a GUI for the program, but since I never use the GUI, it has fallen behind the command line feature set. Some image editing algorithms require clicking at various points on the image to do the processing, so the command line program does pop up an image for clicking on..
I'm not supplying the source code at this time because one day, I might get around to translating some of my algorithms into PhotoShop filters and possibly sell them for money.


Border Blur


This is the first algorithm I wrote, blurring the border of an image into the background of a web page. The image used here isn't the original intended target image, but a test image that I used for several other algorithms:
Original Image:


Blurred into a black background:


Blured into a white background:



Fill


This is a standard fill algorithm, spreading over neighboring pixels with a similar color to the target color until no more similar color pixels are reachable by the blob:



Maze


This is a standard fill algorithm, spreading over neighboring pixels with a similar color to the target color until no more similar color pixels are reachable by the blob:
Generated Maze:


Maze re-opened and solved:


Using a generated maze as a mask for combining an image with an inverted version of the image:



Internet Explorer CTRL-A trick


When highlighting an image, Internet Explorer used to turn every second pixel blue in a checkerboard pattern. I could store an image and its inverse in neighboring pixels, and when the checkerboard pattern covers up the inverse, the hidden image shows up.



Color Saturation Enhancement


Original:


Processed:



Automated Histogram Enhancement


Originally starting out as an algorithm to automatically brighten under-exposed images, it can also be used to enhance the contrast in over-exposed or foggy images, as shown in the example below.
I use this algorithm in my photo album webpage generator to give the thumbnail images more contrast, but I always leave a link to the unaltered original image.
In a random set of images, the algorithm improved 75% of the images, but the other 25% were slightly worse.
My laptop monitor doesn't have very saturated colors and it seems that I more likely fign-tuned the algorithm to make up for my monitor's limitations than to universally enhance all images.
Original:


Processed:



Original:


Processed:



Original:


Processed:



Rotate


Rotates an image to a specified angle:



Spiral Zoom Effect


Click the images below to view animated .gif images:
Original:


Processed:


Click the image below to view an annimated .gif image:



Perspective Distortion Removal


I click on the 4 corners of a rectangle in the picture, and the program figures out where the rectangle is floating in 3D space, projects the image onto the rectangle, and extrapolates to the rest of the image.
Original:


Processed:



Original:


Processed:



Original:


Processed:



Autonomous Underwater Vehicle Vision System


I was a member of the University of Victoria Autonomous Underwater Vehicle Team (AUVic). While I was there, I did some work on their vision system.

One of the tasks was to swim toward a blinking red light
Original:


Processed:



Another task was to drop a marker onto a target consisting of a black rectangle inside of a white rectangle, so I decided to convert the scene into polygons and then look for a dark rectangle inside of a light rectangle.
Original:


Processed:



Another task was to follow an orange pipeline.
Original:


Processed:



Just for fun, a more complicated image.
Original:


Processed: