GSoC/GCI Archive
Google Summer of Code 2010

Open Source Computer Vision Library

Web Page:

Mailing List:

The Open Source Computer Vision Library (OpenCV)is an open, free for commercial use, computer vision and machine learning software library. OpenCV contains a comprehensive set of both classic and state of the art computer vision and machine learning algorithms. These algorithms can be used, for example, to detect and recognize faces, identify objects, classify human actions in videos, track camera movements, track moving objects, extract 3D models of objects, produce 3D point clouds from stereo cameras, stitch images together to produce a high resolution image of an entire scene, find similar images from an image database, remove red eye from images taken using flash, follow eye movements, recognize scenes and establish markers to overlay the scenes with augmented reality to name a few. OpenCV has well over 2 million downloads, has an active user group with over 41 thousand registered members. The O'Reilly coding book on OpenCV, "Learning OpenCV" has been the best selling computer vision or machine vision book for a year and a half no. OpenCV is used extensively in companies, research groups and by governmental bodies. Some well known companies that use OpenCV are Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota. Many startups such as Applied Minds, VideoSurf, and Zeitera make extensive use of OpenCV. OpenCV's deployed uses span the range from stitching streetview images together, detecting intrusions in surveillance video in Israel, monitoring mine equipment in China (more notoriously, OpenCV is a key part of China's "Green Dam" internet filtering software ), helping robots navigate and pick up objects at Willowgarage, detection swimming pool drowning events in Europe, running interactive art in Spain and New York, checking run ways for derbies in Turkey, inspecting labels on products in factories around the world on to rapid face detection in Japan. OpenCV leans mostly towards real time vision applications and takes advantage of MMX and SSE instructions when available. A CUDA interface is being developed right now. There are over 500 algorithms and about 10 times as many functions that compose or support those algorithms. OpenCV is written natively in C++ and has a templated interface that works seamlessly with std containers. Its native data type is a general matrix class that reference counts and leverages LAPACK and (in April) EIGEN. OpenCV also has a full custom Python interface and, using SWIG, OpenCV has interfaces to Matlab and Octave. OpenCV was built to provide a common infrastructure for vision applications and to accelerate the use of machine perception in the commercial products. To enable this, OpenCV has a BSD license to make it easy for businesses to use and modify the code.




You may track weekly meetings at:


  • Android Phone Augmented Reality: Image Stitching with Accelerometer Predictions Formulating the computational core of an image-stitching implementation can function on the Android Phone platform is challenging but within reach. A key difference between registration of images on the phone and 'offline' registration is that the phone contains accelerometers that can aid in the registration. I propose to implement a stitching routine that combines Kalman Filtering using the accelerometer sensors as predictors, and feature detection & multi-scale optical flow as measurements.
  • Feature-based Tracker In this project, I will complete the requirements of Dr. Saunier's project: Feature-based Tracker. For the short term goal, I will use the provided KLT tracker in OpenCV to implement Saunier and Sayed's "A feature-based tracking algorithm for vehicles in intersections". This tasks involves creating an interface for feature extraction, matching and tracking in OpenCV. For the medium term goal, I will use the developed interface to implement two more feature-based tracking methods.
  • OpenCV Machine Learning I am currently studying for my Masters Degree in Computer Science at EPFL. I decided to apply for an intern position (in the context of my master thesis) at OpenCV because I am looking for a challenge and I think this is an opportunity for me to consolidate the knowledge and experience gathered so far. Personally, I would like to be involved in research with new technologies but also experience the rigor of developing reliable consumer applications.
  • PROJECT: HighGUI Enhancement Project Description I would like to work on a proposal by Vadim Pisarevsky available on OpenCV website. This project aims at improving HighGUI, the graphical interface for OpenCV. HighGUI is the component of OpenCV implementing very simple a cross-platform framework for displaying images, simple controls, as well as image and video input/output. This project aims at implementing existing GUI functions in QT as well as adding new functionalities.
  • Region Covariance Features How the identifying regions of a particular object are described has a huge impact on the task of successful object recognition. Region Covariance Features have been proposed as an improved region descriptor to current approaches, possessing an invariance to rotation and illumination changes. This project will involve implementing Region Covariance Descriptors in the OpenCV library, enabling a previously specified object to be re-identified in provided images, with reliable accuracy.
  • Robot View - Augmented Reality Panorama Creation on Android for Street View Robot View is an "app" for the Android that allows one to intuitively capture spherical panoramas. It utilises the platform's inertial and magnetic sensors, GPS, OpenGL, OpenCV and Camera. Sensor data is used to estimate camera pose similar to Street View. An Android port of OpenCV's feature detection and 3D reconstruction functions combined with the estimated pose can be used to seamlessly stitch panoramas on the device. The end goal: crowd-sourced Street View creation from any Android device.
  • Trajectory Management and Analysis The goal of this project is to add to OpenCV a tool that offers storage and analysis methods for trajectories. Such a tool should read and write trajectories (using SQLite), visualize trajectories and analyse them. For the analysis process, different distance metrics should be implemented.
  • Visual Descriptors and Object Recognition with OpenCV My interests are in object category recognition and retrieval, and after spending the past eight months working with the OpenCV library in this area I'm now keen to get involved in contributing to its development. By participating in GSoC, I hope to build upon my own experience in recognition, improve my skills as a coder and get to know the OpenCV community, learning more about the open source development methodology and how to become an effective contributer.