The following project implements a head detection module in 2D images. The module will be used to compute 3D trajectories for a video surveillance application. The technique implemented comes from a paper by Birchfield [1]. The algorithm tries to fit an ellipse to the subject's head. It uses two modules that work orthogonally so that when one fails the other succeeds. The first module uses color information while the second uses the image gradient. The results show that the algorithm looks promising for its use in the surveillance application but more work is needed to achieve robustness.
The increase in processing power as well as current events provide a strong motivation to build surveillance applications that inform security personnel of abnormal situations. These situations can include people accessing restricted areas, monitoring patients in a hospital or children in daycare to mention a few. Other type of applications for the software can be learning of common human activities such as those performed at the office, museum, airport, etc. The idea behind this approach is that the head trajectory can be used to infer the action performed. This idea was exploited by Madabhushi [2] but was limited to using 2D trajectories from two independent cameras. To recognize an action, Bayes rule was used to compute a posteriori probabilities. The class with higher probability is selected. The work presented here expands that from Madabhushi [2] by using 3D trajectories instead of 2D.
The Human Activity Recognition (HAR) project will be divided into four parts. The first part deals with automatic head detection in images. The second part uses the 2D head location from images from several cameras to obtain a 3D trajectory. The third part takes a 3D trajectory and aligns it with the trajectory from a given activity before testing for a match. The fourth part deals with finding matches between trajectories by using Dynamic Time Warping as implemented in the work by Rao [3]. This project only deals with the first part. Parts two and three are already implemented and the last part will be implemented by someone else.