In this project, we were able to achieve our initial goal, that is, creating a video game that can be controlled with hand motions. For the intensity check, we were very specific by checking for just one skin tone. However, with proper light settings, this algorithm works for all the skins that we have tested. When the player locates his hand in front of the camera, the camera is supposed to detect every point that matches the skin color. Averaging all these points will give the centroid of the player's hand. Thus, by following this point, the camera is able to track the position of the player's hand. With the help of a low pass filter, the paddle is allowed to move more stably. Our algorithm tracks hand motions based on a color detection algorithm. Compared to a program that uses motion detection algorithm, this is more accurate since it detects motions based on skin color, thus it will not be interfered by some irrelevant motions.
This project was a success. We were able to exceed our initial goal. Originally, we wanted to control the game using solid color detection (either yellow or green). Then we tried to detect skin color and it worked. The most important element here for the skin color detection algorithm to work is to have proper light settings. This, however, could be a disadvantage since each time of setting up the game, the player has to adjust the light settings.
Overall, this project not only enabled us to review all the knowledge we have gained through the previous labs but also gave us an opportunity to learn how to use the CCD camera to detect color, especially skin color. We got to understand how the intensity check is applied to color detection. We were able to complete the project and met our goal. We referred to the code provided in the Virtual Paint project as the starting point and eventually we came up with our own code.