Friday, August 29, 2008

EHCI Final Report

Official EHCI project site

Well, it's the end of Google Summer of Code, and I need to say that it was great to be with Natural User Interface Group and with Google support.

As one of the last features that was missing was the ability to browse through an image with the hands, I'd like to post this video here:





The most recent updates since last blog post are the windows binaries, as well as new hand interaction demo.

Windows binaries 6 degrees of freedom head tracking download. This version was compiled without OpenMP support, so it's running way slower than the source one compiled with OpenMP support. It means that it won't work as fine as in Linux.
UPDATE: This new version supports OpenMP

From the updated planning, the features in red have been completed since it was re-planned: (features in blue have been removed from project planning)

1st Month:

Hand and Head tracking. 3D head tracking class. Small OpenGL demos.

2nd Month:

Body tracking, and gesture recognition classes. Zoom and rotation features. Documentation of classes through tutorials, code documentation and demos

3rd Month:

Motion flow and 3d model wireframe tracking classes. Documentation. Project packaging through Google Summer of Code and Natural User Interface sites.
Packaging in Natural User Interface site is supposed to happen in September 3th.

In the end, most of the initially planned features have been implemented and documented.

I'd like to thank:
Everyone from OpenCV project (for creating this amazing library)
Pawel Solyga, NUI (for being such a great mentor)
Thomás Cavichioli Dias, ITA (for teaching me how to use OpenCV as well as for giving me depth information on how to use and create cascade classifiers)
Juan Wachs, BGU, Israel (for creating hand detection cascade)
Stefano Fabri, Sapienza - Università di Roma (for all the interesting papers, articles and attention)
Roman Stanchak, OpenCV (for all the help with Swig and Python interfaces)
Len Van Der Westhuizen (for creating and releasing the head model used throughout the project)
Vincent Lepetit, Computer Vision laboratory, EPFL (for the great survey and advices)
Mike Nigh (for the Irrlicht work)
Jared Contrascere, Bowling Green (for the OpenCV/Ehci/Windows work)
my professors at Instituto Tecnológico de Aeronáutica (for all the knowledge taught)
Johnny Chung Lee, Carnegie Mellon (for his great ideas with Wii)
everyone else that I'm unfortunately forgetting, and
my girlfriend Kathy, family and friends (for supporting me through the project),
and, of course, God, Who has given me the strength, love and support to carry this project!

Wednesday, August 06, 2008

EHCI Updates - Version 0.4 has just been released

(check project site at http://code.google.com/p/ehci)
EHCI (Enhanced Human Computer Interface) now features packaging through a tarball. Installation is supposed to be as simple as configure, make, make install. Besides easier installation, the new version has several features, like:

- New features:
  • Hand detection/tracking: now users can interact with the computer using their hands (notice that no accessory besides an ordinary web cam is being used).



The result can also be seen in a noisier environment in this video.


  • Enhanced lightning model/more robust algorithm: this video shows the new lightning model, as well as the 6 degrees of freedom head tracking in a noisy environment.
- New API:
  • EHCI's new API focuses simple functions, so that developers can completely abstract the OpenCV layer. Example functions:
while(1){
ehciLoop(EHCI2DFACEDETECT,0);
getHeadBounds(&upperX,&upperY,&headWidth,&headHeight);
}
- Installation procedure:
  • Autotools based installation is now available: a simple ./configure ./make ./make install should be enough to get developers able to use EHCI library
  • A distribution tarball is easily downloadable from ehci project site

- Updated documentation:
  • new demos (simple2d and simple3d)
  • cleaned up code (boxView3d and 6dofhead have been cleaned up)
  • tutorials have been posted on project wiki
  • the project now features doxygen documentation

- Robust algorithms:
  • 6 degrees of freedom now considers up to 200 feature points to track, which provides better tracking
  • Enhancements to the algorithm have been researched and are on the way and documented
- Lightning model working:
  • 6 degrees of freedom sample now considers normals for accurate lighting
  • Blending functions as well as a single glut layer have been added
- Tagged versions:
  • SVN tag directory is being updated accordingly
- Python bindings:
  • Python bindings are on the way. SWIG is being researched, as well as some drafts have been developed.