GSoC/GCI Archive
Google Summer of Code 2013

Open Source Computer Vision Library (OpenCV)

Web Page:

Mailing List:!forum/opencv-gsoc-2013

OpenCV Foundation is the organization behind OpenCV (Open-Source Computer Vision Library),

 The Open Source Computer Vision Library (OpenCV) is a comprehensive computer vision library and machine learning (over 2500 functions) written in C++ and C with additional Python and Java interfaces. It officially supports Linux, Mac OS, Windows, Android and iOS. OpenCV has specific optimizations for SSE instructions, CUDA and especially Tegra. OpenCV is now supported by a non-profit organization: It has an active user group of 55 thousand members and over 6M downloads. OpenCV has uses from gesture recognition, Android and iPhone vision apps on up to medical, robotics, mine safety and Google Streetview.


  • Augmented Reality OpenCV Android Sample I am a final year Computing Student at Imperial College London, UK. I have undertaken a final-year project that makes use of OpenCV and Qt. I have enjoyed using the OpenCV library greatly which has prompted me to apply for the Summer Of Code 2013. I am looking for a way to contribute to the Open Source Community over the Summer before moving into a Start-Up Incubator in the Autumn. I would be most keen to work on the Android "Hello World" example (having some experience with Android already).
  • Generic numerical optimization module I propose to implement a set of generic algorithms for global optimization, that would find the global minima (maxima) of a given function over some region in high-dimensional space. This project suits both my interests and experience, as I enjoy implementing complicated mathematical algorithms (and have experience, see "Experience" section). This project is rare, as it allows me to alleviate my passion. Unfortunately, most numerical libraries would never accept just a student. Furthermore, I believe that having such a package, written from scratch with openCV design guidelines in mind and free of copyright issues, would provide a firm foundation for the stem of potential applications, that now either cannot be implemented, or suffer from inadequacies of presently available algorithms (e.g. calibration uses LM-optimization to minimize reprojection error, but there are issues) Finally, numerical coding is one of the most challenging things, I believe, and I would like to try it seriously. This is not just idle curiosity - I have some experience with both C++ (my biggest projects were written on it), C (I like it more, my latter projects are on it, so I greatly appreciate OpenCV’s idea of “restricted subset of C++”) and numerical programming.
  • Hand Tracking with Kinect The aim of this project is to create a framework for detecting/tracking hand in the data available from kinect (and other RGB-D sensors). The approach is inspired from the Tracking-Learning-Detection (TLD) framework proposed by Kalal and team. The framework contains - a color+depth based tracker and an appearance based detection module. While the tracker is used to track the hand rather cheaply (in terms of computation), the detector is used to find hand in case of tracker failure due to occlusion and high speed movement. The detector module is a random-forest based classifier which is trained on the data available from the video (RGB-D) itself and does not require any proir training. Also this detector module is proposed to be trained on a separate thread. Additionally the framework also contains a module for tracking finger and palm detection for detecting finger tips (if visible) and palm center respectively.
  • High Dynamic Range imaging The goal of the project is to add full HDR support to openCV. This includes loading HDR images from popular formats to floating-point matrices, supporting various tone-mapping techniques and implementing HDR image creation from a set of bracketed images times with different enhancements including camera calibration and single-shot HDR images.
  • Implementation and Validation of the Shape Context Descriptor The Shape Context descriptor was proposed by Serge Belongie and Jitendra Malik in 2000. This feature is a histogram based shape descriptor and includes an approach for point correspondence. This tool is naturally invariant to translation, small perturbations, and can be adapted to be rotation invariant, and more. These characteristics had been shown with a test framework based on known databases benchmarks. This is why I think Shape Context is a valuable contribution to OpenCV. However, this implementation should be done along with optimal histogram distance like EMD, and a classical shape comparison approach as the Hausdorff distance, in order to add a complete and robust shape descriptor/comparison tools to OpenCV. Implementations must be proved to work with the same database bench-marking used in the state of the art.
  • Implementation of "Parallel Tracking and Mapping" Parallel Tracking and Mapping creates a sparse 3D map of hundreds of features of the environment, it gives the camera position and orientation. It is based on the Structure from Motion principle, where the translation and rotation of the camera, given enough distinct points, produces enough information to calculate the location of the points and the camera.
  • Implementation of Neumann & Matas algorithm for scene text detection and recognition This is a proposal for the implementation of a real world Vision Application using OpenCV. Scene text detection and recognition in uncontrolled environments is still an open computer vision problem. Reading text in natural scenes will enable new and exciting applications such as automatic translation, way-finding and navigation aid, support tools for elderly and visually impaired persons, or contextual image indexing and search among many others. More info, my resume, and sample code can be obtained here:
  • Long-term optical tracking api in OpenCV Long-term optical tracking is one of most important issue for many computer vision applications in real world scenario. I’d like to design and develop an API in OpenCV as a common interface for this kind of algorithms. So it will be possible to switch from one algorithm to another algorithm very easily and quickly, as already developed for descriptor and detector. The development in this area is very fragmented and I propose an unique interface useful for plug several algorithms and compare them.
  • Matlab Code Generator for OpenCV A Matlab module for auto-generating Matlab bindings to the OpenCV library.
  • OpenCV-Python Tutorials 1 - Develop a new tutorials for OpenCV-Python API covering a major portion of the API (Similar to the existing C++ tutorials). 2 - Extend Python bindings for the newly added modules and any missing functionalities. 3 - Fix discovered bugs, missing docs etc on the way.
  • SfM integration: PTAM implementation project PTAM (Parallel Tracking and Mapping) is a camera tracking system, which requires no markers, pre-made maps, known templates, or inertial sensors. It has been widely applied in SLAM (Simultaneous localization and mapping) and Augmented Reality.
  • Visualizer for Structure From Motion Qt is a framework which provides an immense amount of functionality to ease programming, and facilitate visualization. It serves to this purpose by offering several generic tools such as widgets and frames, and its infamous signals/slots. Recently, Qt has integrated OpenGL into its system, and, hence, has made it easy to visualize not only in 2D, but also in 3D. OpenCV, at this moment, is lacking 3D visualization tools; however, this can conveniently be overcome by making use of Qt framework. This project aims to visualize SfM by integrating Qt+OpenGL into OpenCV.