Quick Links : Main Page - CxCore - CvReference - CvAux - HighGui - FAQ
Project proposals for the Google Summer of Code
This is a list of ideas that has been collected on the OpenCV developer's mailing list. Some represent very concrete development ideas for the near future of OpenCV, some are just new ideas tha could bring our project forwards. If you intend to apply for the Google Summer of Code 2008, please read this list carefully. Your own project ideas are nevertheless welcome and will be gladly reviewed. Some of the projects below may not be sufficient to fill a Summer of Code. In these cases combinations of projects should be tackled.
Also, feel free to commit yourself regardless of the SoC
Foundation
- Video writer on all platforms -- Nils is looking into this
Implementig a GStreamer interface may solve this problem. The library looks quite nice...
- The video writers are broken on all platforms. Fix them.
- Improve Python bindings -- difficulty: moderate
integrate array interface for seamless integration with numpy, scipy, PyMat
- accept native types in addition to OpenCV-specific,
- e.g.: (x,y) vs of cv.cvPoint(x,y)
- remove double prefixes, such as cv.cv
- Documentation and Testing -- difficulty: moderate to easy
- write scripts to generate pdf from html-help files
- write scripts to synchronise edits from/to the Wiki or replace Wiki documentation
setup Trac on our Sourceforge site and migrate MoinMoin contents
- check whether the test system is appropriate; if not switch to simpler system
setup a system similar to vtk's D.A.R.T.
- Windows support
- Overhauling Video IO
DirectShow camera input via cameraInput or Dom Ankers dscam library. -- difficulty: should be easy
Remove cvcam and DirectShow filters from distribution.
- Replace VfW interface for reading videos
- Implement useable video writer
- Full x86-64 and Vista32/64 compatibility, -- difficulty: medium
- drop Itanium support
- Move completely to VS2005/VS2008 projects/solutions. -- difficulty: easy
- Overhauling Video IO
- Linux/Mac/BSD support
- OpenMP -- difficulty: easy
- check if GCC 4.2.x + openmp produces correct code.
- If yes, add this option to configure
- implement tests
- Video IO -- difficulty: moderate
- create useable video writer with FFMPEG or find an alternative
rewrite QuickTime video writer to create other container formats than MOV
allow intermixing QuickTime with FFMEG
- implement the non-functioning options of cvSetCaptureProperty, especially CV_CAP_PROP_POS_FRAMES to reach any frame in a video
- OpenMP -- difficulty: easy
- Interfaces to GUI toolkits and similar libraries -- difficulty: easy
- add/collect code that allows interfacing with MFC, Carbon, Cocoa, GTK, wxWidgets, Qt, fltk
Image Processing
These might be interesting topics for BSc projects or other project at university. Feel free to contact us if you have a supervisor at your institution and want to integrate your work into OpenCV and/or participate in the Summer of Code.
- Level Set Segmentation -- difficulty: hard
- Level set segmentation algorithms provide high quality segmentation. See Papers by Chan + Vese
http://www.univ-pau.fr/~cgout/viscosite/old/20032004/veseChanIJCV2002.pdf
ftp://ftp-sop.inria.fr/odyssee/Team/Rachid.Deriche/Lectures/MPRI/IEEEIP2001.pdf
- Variational Optical Flow -- Vadim is working on this
- Variational optical flow methods are far superior to the algorithms implemented in OpenCV at this point. The works by Bruhn et al. or Brox et al. are a good starting point to select an appropriate algorithm. Brox et al. provide the highest quality algorithm at the moment AFAIK but Bruhn is faster.
- Texture analysis -- difficulty: medium to hard
- Gabor filters
- Interest point detectors -- difficulty: medium to hard
- Different criteria and mathematical formulations exists that allow to extract 'points of interest' or 'regions of interest' from an image. Two examples that are already available in OpenCV are the Harris corner detector and Good Features to Track. In the literature you will find a couple of more advanced detectors that provide scale and orientation selection for regions of interest.
- SIFT interest point detection on a Difference of Gaussians pyramid - initial code base available
- SURF interest point detection on a Haar wavelet decomposition - code possibly available
- Scale adaptive Harris
- Scale adaptive Hessian
- Affine invariant regions
Maximally Stable Extremal Regions Publication another Publication Wikipedia
Pattern Recognition
- Calibration of 3D-Scanner -- difficulty: infeasible without access to 3D-scanners
- Better Stereo Correspondence Algorithm -- difficulty: medium to hard
- Graph-Cut seems to be a viable alternative
http://benjerry.middlebury.edu/~schar/stereo/old/tr-2001-81.pdf
There is code implementing a few stereo correspondence algorithms here: http://vision.middlebury.edu/MRF/code/
- Local Image Descriptions -- difficulty: medium to hard
- See the 'Interest Point Detectors' above: whenever regions of interest have been identified in an image, they usually have to be compared to other regions from other images. This could be done by comparing the pixel intensities directly, but oftentimes a representation with less dimensionality and with robustness to small detection errors regarding position, scale, orientation or affine and even projective distortions are desirable. A couple of concurrent proposals exist, some of which should be integrated into OpenCV.
SIFT classic but patented Publication
GLOH Wikipedia
SURF Publication
Fast Keypoint Recognition in Ten Lines of Code Publication
- People detection -- difficulty: hard
Machine Learning
- improve Haartraining -- difficulty: medium to hard
allow to create trees for multi-class decisions Publication
Colour Management (Colour Conversion)
- colour management system integration -- difficulty: moderate
improve colour conversion in OpenCV
Currently OpenCV converts between device dependent and device independent colour spaces with no possible influence on the process. Especially when reading images/video sequences from file of devices the colour space cannot be assumed to be e. g. sRGB for all conversions. Giving OpenCV the possibility to perform colour space conversions using a "real" colour management engine with the possibility to control the conversion process would mean a great plus.
implementation of ICC profile based device space characterisation
- Conversions between colour spaces are (as an industry best practise) performed in a two-step-fashion. Colours are first transformed to a device independent profile connection space (PCS) using an input (ICC) profile, and then converted to the destination colour space using an output (ICC) profile. Through vendor availability or characterisation processes these device profiles can be obtained to handle colour in a chromatically correct and sensible fashion.
library to integrate: LittleCMS
- license: MIT Public License
Active Appearance Models
- Active Appearance Models -- difficulty: moderate to hard
