OpenCV GUI and Parallelization
MENTOR: Vadim Pisarevsky There are 2 separate projects here: Project 1 aims to improve OpenCV's graphical user interface "HighGUI"; project 2 involves speeding up some important routiens.
- You must know C++ well.
- For the Project 1 very big plus if you also know SSE intrinsics for optimizing the code.
- For the Project 1 very big plus if you have code optimization experience in general and/or studied parallel algorithms.
- For the Project 2 very big plus if you have experience with Qt, possibly other graphical toolkits and OpenGL.
PROJECT: HighGUI Enhancement
Project Description
Improve HighGUI, the graphical interface for OpenCV. HighGUI is the component of OpenCV implementing very simple cross-platform framework for displaying images, simple controls, as well as image and video input/output.
Demo: Using HighGUI to display some vision application
Short term: look at the existing HighGUI backends for GTK+, Cocoa, Win32; implement simple Qt backend
Medium goal: extend Qt backend to have all/most of the features listed below (see "What we want").
Long goal: Prepare some demo with rich visualization capabilities, e.g. 3D object detection & tracking.
Milestones/Timeline
- 2-3 weeks to achieve the short-term goal
- another 2-3 weeks to achieve medium goal
- if there is time remained, spend it on the demo.
What we want
- HighGUI enhancements:
- saving/restoring window positions on every platform,
- advanced image views: zoom, scrolling, displaying position + pixel values
- draw lines, arrows and annotations that stay sharp even as the image zooms
- truetype text rendering, transparency, gradients etc. (via libcairo? or Qt?)
- add button support
- OpenGL support
- cross-platform Qt backend
PROJECT: Parallelization
Project Description
Improve the performance of some important algorithms by adding parallization.
Demo: It can be a demo of high-quality high-resolution background subtraction algorithm running in realtime, where people moving in front of a camera are separated from the background. A fast dual/quad-core machine will contribute to the high processing speed.
Short term:
Medium goal:
Long goal:
Milestones/Timeline
What we want
- Parallelization of various algorithms using Intel TBB (below are possible candidates):
Calonder & One-way descriptors and the related algorithms
- Dense optical flow
- HOG-, Haar-, LBP-based object detectors (already threaded using OpenMP)
- Background/foreground segmentation