My final year team engineering project is computer vision based object tracking system. A camera will follow an object, trying to keep it at the center, as it moves it front of it. Primarily, our objective is to detect the object that is moving and then using a motorized platform, rotate the camera. First, we will do a side-wise panning platform, then up-down panning. If possible we will make a motorized object follower by integrating the whole system in a singular device. For that we are planning to use a Linux based ARM board (viz. BeagleBoard).
For computer vision we are using OpenCV. After testing multiple languages and computer vision libraries, it was apparent that OpenCV is the best library out there. Previously, JMyron and Blob Detection in Processing was used. Then now, it’s fully OpenCV. Primary prototyping will be done by Python. If possible we will migrate it to C for better performance.
The rotation platform and the PC will communicate with a Bluetooth Serial communication module, or cable serial. The motorized platform would have stepper motors, controlled with an AVR (presumably, ATmega8). AVR programming will be done with AVRGCC.
Currently our focus is on Computer Vision. Exploring capabilities of OpenCV. Our current plan is to use contour detection, then using the contour CG as our control point, we will rotate the camera. Assuming we will face problems with the control feedback to the rotor, we will have to explore control schemes. We might use predictive filtering techniques to predict control points and Kalman filtering as primary control point detection.
The camera being used is a Logitech C270 webcam.
Experiments with OpenCV yielded some results…
Canny edge detection
Haar-like object detection as face detection