C++ Video Processing Framework overview
C++ Video Processing Framework was developed by Janez Zaletelj as a tool for image and video processing research within the Laboratory for digital signal, image and video processing (LDOS). The development started in 2000 and is still active. The VP Framework uses OpenCV methods for image processing and presents an object-oriented C++ framework for image manipulation and processing.
Research paper describing the Video Processing Framework was published on conference ERK 2002.
Usage and applications
- Framework was used in research and teaching within LDOS Lab: MSc, PhD research, diploma theses: Janez Zaletelj, Mladen Savić, Tilen Mlakar, Perhavc Jernej..
- Image registration module for the CO Vesolje project
- Face capture system for Hit Casinos
- Facial and appearance recognition of visitors for Hit Casinos
- Vehicle tracking and counting system, Faculty of Civil Engineering
Goals and requirements
From the educational point of view, the programming environment was designed to achieve the following goals:
- to enable problem based learning, i.e. efficiently combine specialized computer language course and basics of image and video processing,
- to enable team work: collaboration of students in a common project,
- to enable source code reuse,
- to enable efficient lecturing material preparation,
- to avoid complexity of programming Windows-based user interfaces by providing an easy-to-use set of IO routines and components,
- to bring together: 1. programming language learning 2. team work, 3. research and development of video processing algorithms.
From the research point of view, additional requirements were set:
- Flexibility and customizability: because all source code is under our control, we are able to easily modify components of UI or extend functionality by inheriting existing classes.
- Real-time performance: because image and video processing algorithms are typically computationally very demanding, it is necessary to take care of code optimization.
- Flexibility of algorithm testing by on-line adjustment of algorithm parameters during execution.
- Communication to other software packages (Excel, Mathematica [2], Matlab) to utilize their functions and data visualization capabilities.
Concepts
- The concept of stack is introduced to enable global data exchange between processing modules.
- Processing modules : each image processing method is written in the form of a standardised module (black box) with known input data, parameters and output data, all inheriting from base class.
- Execution modes: batch processing and interactive processing. Parameters can be set during interactive processing from the standard GUI with sliders for each parameter.
- Real time input/output: Real-time input data stream is supported by the proposed programming environment.
- User interface elements: separation of user interface and processing algorithms.
- Naming convention and code commenting.
Presentation
Presentation held by Janez Zaletelj at Erk Conference in 2002.
Documentation
Documentation of the software classes and methods (C++).