Projects
Game Development
Gnome Man's Land
DESCRIPTION
TECHNOLOGIES USED
- XNA 4.0
- FlatRedBall
- Glue
Float
DESCRIPTION
TECHNOLOGIES USED
- XNA 4.0
- Farseer Physics Engine (Box2D-based)
- Mercury Particle Engine
- Tiled Map Editor
TRAILER
The Angry Hand of God
DESCRIPTION
TRAILER
LINK
Personal Projects
A Quick Project in Steganography
DESCRIPTION
Here is another example using a larger image:
CODE
THOUGHTS
My Professional Website
DESCRIPTION
SHAMELESS PLUG
Sudoku Puzzle Solver
DESCRIPTION
LINK
Research
A Region-Based Color Constancy Algorithm using the PDE Formalization of Retinex Theory
DESCRIPTION
During my time at the iCAMP Research Program, I was able to come up with a better method for finding the perceived color of objects in a scene. This field of research is called Retinex Theory. Retinex Theory, formulated by Edwin H. Land in 1964, attempts to simulate and explain how the human visual system perceives the same color under different lighting conditions. The ability to acquire the perceived color of objects in a scene, by removing the effects of lighting (illuminance), can be a very useful tool for numerous applications including object recognition, and photo image correction.
A PDE Formalization of Retinex Theory, by Jean Morel et al. has led to a fast implementation using only two FFTs with reasonable effectiveness. The key concept is in considering the changes in pixel intensity as a way to investigate the effects of ambient light. If we assume that ambient light causes slow changes in the pixel intensities, while objects in the image cause sharp changes in pixel intensities, we can remove the ambient light by finding the changes in the pixel intensities (by computing the gradient values at each pixel) and then applying a threshold to remove only the small changes. This will result in a new, thresholded gradient, from which a modified image can be formed. One drawback to this method is that different changes in ambient light are not considered, and thus they still remain within the image. For example, pixels that are part of a wall in an image may contain a very smooth gradient, while pixels that are part of a ball within an image may contain sharper changes (simply because the shape causes the gradient of the ambient light to change faster). Another drawback is that the threshold value is provided by the user. This makes the user responsible for finding the best value that will remove the most ambient lighting. The problem with this is that there may be regions of the image that will lose detail as a result of having a higher threshold value that is necessary for another region. These problems are exceedingly apparent when images are of real-world scenes.
One improvement I made is to consider images as having distinct regions, within which there exists ambient light specific to that region. The next step is the key to the solution. The threshold value depends on the pixel intensities within that region. As a result, each region can have different threshold values. Rather than choosing threshold values, users are asked to choose regions within the image which contain the ambient lighting. Regions are easier to provide for the user, than threshold values, because regions have explicit visual meaning, where as threshold values are implicit. These two changes have greatly improved the effectiveness of the removal of ambient lighting within an image.
RESULTS
Square A and B are the exact same color.
My goal is to change the image to make color values to be how we perceive the colors to be. In this case, the color values should change such that Square A should have darker colors than Square B, since that is how we perceive it.

