Touch Less
Touch Less
Homepage:
http://www.codeplex.com/touchless
Project Author:
Michael Wasserman
[email protected]
Thanks due to:
Gary Caldwell, Isabel Mattos, Nicole
Steinbok, Quinn Hawkins, MS Office Labs
Community Projects, John Kender, and you!
0.
Table of contents
0.
1.
2.
3.
4.
5.
6.
1.
What's Touchless?
Touchless is an SDK that allows users to create and experience
multi-touch applications. Touchless started as Mike Wassermans
college project at Columbia University. The main idea: to offer users
a new and cheap way of experiencing multi-touch capabilities,
without the need of expensive hardware or software. All the user
needs is a camera, which will track colored markers defined by the
user.
Mike presented the project at the Microsoft Office Labs Productivity
Science Fair, Office Labs fell in love with it, and Touchless was
chosen as a Community Project. Our deliverables include an
extensible demo application to showcase a limited set of multitouch capabilities, but mainly we are delivering an SDK to allow
users to build their own multi-touch applications.
Now, Touchless is released free and open-source to the world under
the Microsoft Public License (Ms-PL) on CodePlex. Our goals are to
If you just want to try out the simple demos offered with the SDK,
extract the release to any location on your computer, and run
"TouchlessDemo.exe".
http://www.codeplex.com/touchless
The directories you'll find there are:
bin - Binary versions of the files, updated more frequently than
our releases
Documentation - Browse media documenting the project
Samples - Apps/Games that demonstrate or use Touchless
(submit yours!)
TouchlessLib - Touchless functionality, written in C#, uses .NET
3.0+, VS2005+
TouchlessUnitTests - Unit tests to prevent regression
WebCamLib - Webcam functionality, written in C++, uses DX
SDK Aug. 2007
Become a contributor by adding your Touchless apps or improving
the SDK code!
4.
5. Reference Information
You can find extensive information on all properties and methods of
each class in our XML-generated documentation file
TouchessLib.chm. The Touchless class diagram reflects public
classes, methods, and properties of the API; it is avaiable as
"Touchless.jpg". These files are distributed with each release, and
also available in the source code repository, located in the
documentation folder.
6.
Backlog of Ideas
This is a very terse list of ideas for improving Touchless SDK.
ColorLib
Improve HSV colorspace partitioning model. We could
group perceived similar colors better. Potentially replace
with a group clustering algorithm. Perhaps just refine the
per-dimension bin counts, or replace the hash function.
Use a lookup table instead of transforming RGB to HSV. We
can just terminate early if its not in the lookup table.
Reduce loop overhead of converting ARGB values into RGB
values, then into HSV values, then into Binned HSV values,
then finally into a hash # for color lookup during marker
update. Potentially use a lookup table for a subset of colors
to avoid the math altogether.
Improve HSV color grouping, consider refining the perdimension bin counts or using a different HSV color-space
partitioning model that better suits human perception of
similar colors.
Marker
Implement a way of getting higher degree moments of
inertia. Mostly, we are interested in the axis of least
rotational momentum and the roundness factor.
Allow the user to send a mask image with the add marker
bitmap for arbitrary marker region selections.
Extend or replace alpha smoothing with exponential decay
to provide smoothed marker data and reduce the marker
jumpiness.
TouchlessMgr
Add functionality to save and load marker configuration
files (reduce repeat training of the same marker, possibly
provide autoconfig files for standard markers... will variant
lighting allow for this?)
Implement additional marker data such as ColorAverage,
ColorSpace, Axis and Roundness.
Add flood fill algorithm so we can add a marker with a few
points in the Bitmap.
Refine the marker tracked colors as we find colors around
the marker.
The representative color doesnt always match the