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.
Improvements:
- 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.
touchLib project
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.
Glad to see you are back! Is this a Masters thesis or PhD that has been keeping you away for so long? I look forward to hear what interesting project you have been working on all this time 🙂
Regarding the free vision software, you should take a look at Movid, if you have not already. I don’t know if they have implemented stitching function yet, but I remember reading about this a while back on their developer mailing list. But it can use multiple cameras for sure. It is very well written and is modular, so you can easily add on to it. Even with my very rusty C++ skills I was able to write a module to get image from flucapture cameras.
I was very glad to hear about improvements to the compiz plugin, I will try it out as soon as I get a chance. I have not been using it permanently in my setup because of stability issues, but when it works it is just awesome!
I have a technical question for you, perhaps it could be the topic of one of your future posts :). You most likely know all about the Unity project which is adding multi-touch support to Ubuntu. I was wondering, what do you think is the best way to bridge TUIO with Unity. Do you know if this is currently possible?
Hi, thesis was intended as a PHD thesis but due to lack of funding I’ve had to cut it down to a MSc.
Movid looks very useful, I can’t believe I haven’t come across it before.
I was actually thinking about TUIO for uTouch (the unity touch input project) the other day. I think some sort of kernel, similar to the driver kernels that uTouch already uses. This kernel could listen for TUIO, parse it and pass it on in the correct format to uTouch. If I have the time I’ll look into it.
Thanks for taking the time to read this and comment.
Hi i just came across your blog and was wondering if you actually got seemless stitching implemented?
Not yet, as you see its currently under the proposed ideas list. Hopefully I’ll be able to look into it in the new year.