One of the forums I track every day is the OpenCV YahooGroup. It covers Intel’s Open Source Computer Vision library.
What surprises me and inspires me is the level of activity of the group. Many days there are 20 plus posts. It appears that many posters are students wanting to develop apps that track faces or recognize cars or achieve some other challenging goal.
It’s exciting that so many future developers are not limiting their view of the computer to a mouse, keyboard, and display.
As a developer, I particularly enjoy the challenge of developing vision applications–like ink applications–where data is not always what it seems. Authoring programs that can handle the subtle variations of real-world data is tough.
In the case of ink, for instance, is a given handdrawn stroke at 15 degrees or 13? Or is the line actually a curve with an extremely shallow and carefully drawn curvature? The temptation to highly-constrain the recognition result is tempting. However, tightly focusing the recognition parameters inevitably forces other more sloppily drawn strokes–that are obvious lines to the user–to be misrecognized. The “answer” often lies in the context–but not always.
Applications that seek to analyze real-world data, such as computer vision applications and ink-based apps, must handle the inevitability of incorrect answers. Handling this gracefully yet still providing value is an engineering art.