Its been a while since anything was posted on this blog so its time for an update. First of all I’ll just point out that I’ve been working really hard on a thesis. I don’t want to go into any more detail about it till its accepted so I haven’t posted any updates concerning it. Hopefully in the new year I’ll be able to make several posts detailing what it was about.
Compiz Multi-touch plugin
Despite saying that I wasn’t going to do any more work on it, the recent interest in it did make me go back and tidy up the code a bit.
- There should be no warnings when running the make command.
- The plugin now works fine on both 32 and 64bit systems.
- The settings in the compiz settings manager now correctly show the fire effect option.
- The post on this blog detailing the plugin’s installation (here) has been updated to reflect updates in ubuntu packages. (Instructions for un-installation are also now on the post.)
There are still issues concerning freewin’s stability. Though I did intend to look into this I haven’t had time and since I am not working on this plugin anymore I’m unlikely to in the near future.
Again I’d like to thank all the developers who provided the original code and modifications for this plugin. I just consolidated their code, they did all the hard work.
Anyone watching my google code profile may have noticed I created a project entitled touchlib-newcalibration. This was intended to be part oh my thesis work but has since been omitted. However I will list the accomplishments and intentions of the project as I believe these ideas could be beneficial in future multi-touch vision systems.
The project so far:
- Performs all the functions of touchlib
- Can stitch together the input from up to 4 flycapture cameras
- Can crop and position the camera feeds before stitching through the config file
This ability to manage multiple inputs was the main requirement of the project. However it is not much use unless your flycapture cameras align in such a way that their fields of view have no overlap or gaps between them as a single touch could not be tracked when travelling from one field of view to another. Two solutions were proposed to resolve this:
- Seemless stitching
- TUIO multiplexing
Solution 1 would use the methods used in panoramic image stitching software to combine the video feeds. By using touches during calibration as reference points the feeds could be stitched. This method has the advantage that the rest of the touchlib framework could be left unaltered.
Solution 2 would treat each feed from a camera separately, applying the filters and blob detection to each feed individually. With each feed ultimately producing a TUIO output a multiplexer could be used. This will combine all the TUIO feeds. Any blobs with the same real world co-ordinates (or co-ordinates within a certain distance of each other) will be consolidated because these blobs are likely to be the same touch, being seen by multiple cameras. A single TUIO feed is finally output. The difficulty with this is that a lot of touchlib would require to be rewritten, specifically parts dealing with calibration.
The project was also ultimately intended to provide:
- An abstraction of the multiple flycapture camera filter to use more than one of any camera that touchlib can currently use on its own
- An improved, single window GUI (for editing config and filters as well)
- Fiducial support
- Quick calibration using OpenCV’s checkboard methods (i.e. placing a board with a checker pattern on the surface of a DI display will allow touchlib to automatically calibrate without relying on the accuracy of user touches.)
There is an additional intended feature, but I won’t mention it here as it relates to the work documented in my thesis, and I don’t want to give the game away yet.
There may be further work on the project from time to time. However CCV does seem to be in the process of having a lot of these features implemented. If anyone could suggest a free-to-use vision system which can use an input from multiple cameras simultaneously (in the meantime before CCV has this feature implemented) I would greatly appreciate it.