Due to the emergence of more powerful, energy-efficient and low-cost processors as well as intelligent algorithms, it has become possible to incorporate practical computer vision capabilities into embedded systems and mobile devices. However, technical progress is impeded by the elaborate development of hardware-optimized algorithms and communication protocols between devices. xpcv is a modular cross-platform framework for rapid prototyping of computer vision systems.
Algorithms are available in xpcv as encapsulated processing modules which can be parameterized at run-time. Each module can provide some predefined interfaces which are used for the communication between different modules. Therefore it is possible to create a complex computer vision application with less coding. Due to the possibility of the dynamic configuration at run-time, the developer is able to see directly how changes in the algorithm influence the behavior of the developed computer vision system. This increases the development speed which results in a shorter time to market (TTM).
Moreover, xpcv allows to develop computer vision applications, which run on on different hardware platforms (x86, ARM®, …) and operating systems (Windows, Linux, OS X, Android,…). This enables to develop cross-platform applications much more efficiently. Furthermore, heterogeneous systems can communicate seamlessly over transparent network interfaces, which provides an easy way to deal with smart device networks.
In computer vision applications, a high amount of data has to be processed in an efficient way. Therefore, xpcv is developed using C++ which allows low-level algorithm optimizations. Many modules are optimized using platform specific hardware units such as SIMD units (SSE, ARM® NEON™) or GPUs (NVIDIA® CUDA™, OpenCL). On multi-core platforms, processing is accelerated using multi-threading. All optimizations lead to a high processing speed and form the basis for real-time computer vision applications on low-cost hardware.
Software Development Kit
Moreover, xpcv enables you to develop your own modules. Therefore, xpcv provides a fully-featured and easy-to-use software development kit (SDK). Using instances of classes such as
property you can code your own module, integrate it into processing chains and share it with friends, colleagues or partners. Depending on your relationship you can decide either to share code or binaries only.
Graphical User Interface
For computers which are enabled to run a graphical user interface, xpcv features a modern easy-to-use graphical user interface (GUI). Developed modules, containing computer vision algorithms can easily be assembled to complex processing chains by using drag and drop. The same graphical environment provides functions to show results of the processing and to debug or to benchmark the designed system. Therefore xpcv GUI enables you to efficiently develop complex computer vision applications.
Remote Configuration and Debugging
For devices which run in headless mode (i.e. no user interface, such as embedded devices, servers, etc.), xpcv provides the possibility to configure the device remotely over a TCP/IP connection. Therefore, the developer is able to add or remove modules running on the remote device and change their parameters. Additionally, it is possible to establish connections between modules running on different devices. This enables a seamless integration of heterogeneous devices into complex computer vision systems.