Showing posts with label Visual. Show all posts
Showing posts with label Visual. Show all posts

Monday, June 27, 2011

Real time shape recognition from video feed

Just to keep myself occupied during some "empty" days between courses, I decided to implement a real time shape recognition system in Matlab. Most of the ideas are based on "Shape Recognition and Pose Estimation for Mobile Augmented Reality" by Nate Hagbi et al. However I didn't implement the pose estimation part since I run out of time. Moreover I encountered some difficulties regarding easier parts of the system (oh yeah image retrieval is not my field per se).
   So the idea behind it is simple: locate the most prominent shape (through filtering such as adaptive thresholding), compute its convex hull and perform matching via a bag-of-words approach. Therefore the system firstly needs to be trained. I use SIFT features on a series of projective transformations of the original shape, similar to "Visual Similarity based 3D Shape Retrieval Using Bag-of-Features" by Zhouhui Lian et al. A demonstration is presented below:

Geometric Pattern Recogntion

For the course in "Pattern Recognition" me and a classmate worked on the task of identifying the rigid motion between two sets of points. In other words we aimed to calculate the scaling, rotation and transposition factors that mapped a point set A to a point set B. The methods that should be used were:
  1. Exact point matching
  2. Approximate matching (alignment algorithm)
  3. Voronoi diagrams (by Shane O'Sullivan)
The user interface in Matlab
We implemented only the two first though. We employed O'Sullivan's code for computing the Voronoi diagram but its structure was inadequate for further usage. Additionally we implemented Hausdorff distance calculation. We used Matlab for the interface and C++ for the matching/distance algorithms.