Inspiration
A problem with vision in robotics is that often the cameras you are working with are moving in a noisy environment, and a lot of common tracking techniques don't work. I wanted to be able to track any arbitrary object in such a situation, even if it turned, was obscured, or changed.
What it does
This program attempts to track an object that is selected on the screen using a box in the center of the image. When specified by the user, it looks at what is inside the box (what is at the center of the image) and tracks the visual pattern as it moves around the screen.
How I built it
This is built using Python 2.7 and OpenCV. Along with that, NumPy was used for efficient array and image operations.
What's next for Optical Frame Tracker
The next step is to increase the reliability. Right now, it only matches fixed visual patterns, but if it were able to use updates from what it currently sees and modify its model of the object it's tracking, it would be able to continue tracking it if the object were to change or rotate.
Why is it so slow?
So many questions! The dot lags behind the object sometimes due to a tradeoff between accuracy and noise reduction. When there is a lot of noise, the found location often jumps around a lot, and so to create smoother tracking, the program makes assumptions about how far the object can move in a given time frame. In cases where the object really does move quickly, it takes some time for the program to realize that this is not just noise and catch up. This is most useful in situations where one doesn't expect things to move too quickly, and would rather have a more stable configuration.
Log in or sign up for Devpost to join the conversation.