Note: You can propose changes using the forum below.
It turns out that it's not too difficult to identify the position of a bright LED in a camera with better than pixel-resolution precision. All you have to do is compute the centroid of the illuminated pixels in the region, weighted by pixel intensity.
So this subproject should be to produce two functions -- one that locates a set of LEDs in an image without prior position information, and another faster function that locates them given the previous known positions (for tracking purposes). Both of them should use a common function that computes the super-resolution centroid of the LED given its approximate center.
Since this project has to be in C++, let's require that the "image" be a templated class that has at least the following methods:
- getWidth(), getHeight() - returns the width and height of the image.
- operator()(int x,int y) - returns the "intensity" at the given pixel position. The intensity should also be a templated numeric type.
- begin() - returns a read-only random access pixel iterator which, when "dereferenced", returns an "intensity". It iterates in row-major order.
Note that using an abstract definition of "intensity" should provide us the flexibility to use either infrared LEDs with an infrared camera, or perhaps black dots on white clothing, or who knows what else.
Please, anyone who is more experienced with C++ than I am (or anyone else, for that matter), feel free to propose changes to this spec.
Also, we should not accept any submission to this project until these requirements include a clear specification of the interfaces to the required functions. So if you're interested in working on this, please use the forum below to propose the function interface spec.