Our system is not perfect and still can be improved :
We developped the network system in C in the main functions of our softwares, but that can be improved by considering the network engine as objects. We wanted to minimize the number of threads, but actually this can be more "clean" to put all this part in one thread apart, and using classes and methods to handle that.
As we said previously, the calibration is done with MatLab but openCV provides several methods to facilitate the calibration, such as cvFindChessboardCorners() and cvCalibrateCamera().
With a greater control of the openCV and CvCam threads, we coul have managed to build a single soft which deals with each phase of the motion capture, including the calibration process.
Image Processing :
One improvment on this section is to optimize the algorithms used by, for instance, processing only parts of the images, and not the whole image, to detect the spots. We can also work on the size of the spots given the distance that separate the cameras from the actor.
The greatest amount of improvment can be done in this part. We built our own tracking algorithms but there certainly is better algorithms to do that job, in a different way, for instance the Lucas Kanade method. We chose the 3D tracking, but the 2D tracking may be efficient and lighter.
We can also use the Wiimote to tighten the zone where we search the 3D spots.
One improvment to use our system with extern animation software is the exportation of the data computed, in a format that could be used by Maya for example.
Our software run in console mode and is not user friendly, so a graphical UI could make it more attractive and simpler, using QT for instance.