Image and Video Analysis


ivl is a general purpose, full-header template C++98 math library with convenient and powerful syntax. It extends standard C++ syntax towards mathematical notation, while making use of language features like classes, functions, operators and templates. Expressions written in ivl are excessively optimized.

ivl allows writing simpler and more expressive statements like math formulae, while taking care of the underlying representation and implementation. Often resembling a new language, it targets abstract, concise, readable, yet efficient code. It supports the principle that the path from theory through rapid prototyping to production quality software should be as short as possible. In fact, the actual code should not differ much from pseudocode.


ivl features arrays, ranges, tuples, matrices, images and function objects supporting multiple return arguments, left/right overloading, function pipelining and vectorization, automatic lazy evaluation, and dynamic multithreading. Other features include sub-arrays and other views of one- or multi-dimensional arrays, STL-compatible and multidimensional iterators, and extended compound operators.

In a nutshell, ivl

  • is a header-only library, with no need for separate linking
  • is fully template, supporting user-defined types
  • is easy to develop with; most syntax is self explanatory
  • is fully optimized, with most expressions boiling down to a single for loop
  • avoids temporaries and copies, through lazy expression evaluation
  • has minimal overhead, with no more allocated space than absolutely necessary