In this page you can find some of my pet projects and technical demos:

Simulator of Color Blindness

This is a program that retrieves images from a live video feed or from a video file stored in a drive and performs a color transformation to show how the video would be seen by one of the three kinds of dichromat color blind people: people with protanopia, deuteranopia and tritanopia.

The color transformation is based on the following paper: F. Vienot, H. Brettel, and J. Mollon. Digital video colourmaps for checking the legibility of displays by dichromats. Color Research and Application, 24:243-- 252, 1999.

Developed in C++.

Back to top

sniff: Social News Interaction Flexible Framework

A modular framework that allows interaction with social news websites. It permits to retrieve data in an usable format, as well as to interact back with the website. Its modularity allows for seamless replacement of target websites by using simple plugins that can be easily developed.

A working example of sniff is haiku-bot, in Reddit. Every time that it is run, it traverses the given Reddit stories page, entering the comments page of each story, locating a user comment that can be formatted as a haiku and posting it back in this format. It is limited to a single haiku for each comment page, and to a limited amount of haiku comments in each run.

Developed in Java.

Back to top

Rescue / Maze Robot

A robot built from scratch and programmed to performs the following tasks:

Developed in C++.

Back to top

Dynamic Background Replacement

This is a quick proof of concept for dynamic background replacement, as seen in many already available applications. It's based on background subtraction.

The background is captured and stored. Then, every pixel from the images captured by the camera is analyzed. If they lay within a range of the equivalent pixel from the image that was captured as background, they are interpreted as such and substituted by the artificial background. If not, they are taken as foreground, and kept as they are.

In the first part of this video, we can observe the effect of my shadow in the wall, as I was laying directly against it. In the second one, disturbances are appreciated from the mirror, the color of the door being similar to the one of my skin, or the poster in the mirror being the same color as my t-shirt.

Developed in C++.

Back to top

Object Tracking (Color Based)

This program performs tracking of objects depending on their color. In this particular case, the tracking is performed upon yellow objects.

The blue square encloses the limits of the detected object.

The red line marks the path followed by the center of the object. It shows the last 100 locations. When the object is not detected, the oldest samples are progressively removed.

The green square, which is centered around the location of the central pixel of the object, shows the neighborhood in which we will look for the object in the next iteration. That is, if we don't find a trackable object in the scanned area, in the next iteration we will scan the whole image. But if we found it, in the next iteration we will look only in the neighborhood.

Developed in C++.

Back to top

Virtual Air Painting

This program looks into the image for pixels of 2 certain colors. One kind is identified as 'pen' pixels and the other as 'eraser' pixels. When a pixel is identified as a 'pen', it is marked in a mask image. On the other hand, if a pixel is identified as an 'eraser', it is erased in the mask. The mask is then printed on the current frame in red. As the mask is not initialized between frames, it allows to keep a drawing/writing over time.

In this video, yellow pixels are identified as the 'pen', and purple pixels as the 'eraser'.

Developed in C++.

Back to top

Face Detector

A face detector based on Viola-Jones algorithm (Boosting on HAAR features). It is able to detect several faces, and performs scaling, but no rotation of the image.

Developed in MATLAB.

Back to top