OpenVL: Developer-Friendly Computer Vision
The OpenVL Project has been active in the Human Communication Technologies Laboratory at the University of British Columbia since 2004, when it was begun by Sidney Fels to provide a high-level abstraction and interface to computer vision. The initial research was undertaken by Steve Oldridge and Changsong Shen in collaboration with Sidney Fels and Jim Little. Gregor Miller joined the project in 2008 and has been developing guidelines, various abstractions and proof-of-concept implementations, and is currently leading research and development of the abstraction, API and framework. We will be openly providing our latest interface on this web site in the near future.
Strategy:
Computer vision has a new and important role on the world technological stage with the advent of cheap cameras and high-performance low-power processors. Examples of its application are available throughout industry from simple face detection on compact cameras to advanced articulated modelling such as that on the Microsoft Kinect. However, implementation of a "simple" face detection system requires advanced knowledge of existing algorithms and their parameters, which is beyond the scope of general developers. Our approach is to develop an abstraction of computer vision, much like OpenGL provides an abstraction of computer graphics, allowing appropriately trained users to develop complex solutions without the need to specify particular algorithms or parameters.
The theme of our research within computer vision is access: we would like computer vision to be open and accessible beyond the confines of academia and computer vision experts. While many algorithms are freely and openly available, we do not consider these to be accessible, due to the knowledge and expertise required to effectively apply these to real-world problems. The direction of research we are pursuing is to create a basis from which access to computer vision techniques can be provided without requiring specialist knowledge. This requires an abstraction layer above the sophisticated techniques in vision: our key concept is an abstraction layer through which a description of the problem may be provided rather than requiring the selection of a particular algorithm i.e. we let developers describe what the problem is and have our system interpret the description to work out how to solve it, an approach we term problem-centric.