An Image Processing Library in Modern C++: Getting Simplicity and Efficiency with Generic Programming

From LRDE

Abstract

As there are as many clients as many usages of an Image Processing library, each one may expect different services from it. Some clients may look for efficient and production-quality algorithms, some may look for a large tool set, while others may look for extensibility and genericity to inter-operate with their own code base... but in most cases, they want a simple-to-use and stable product. For a C++ Image Processing library designer, it is difficult to conciliate genericity, efficiency and simplicity at the same time. Modern C++ (post 2011) brings new features for library developers that will help designing a software solution combining those three points. In this paper, we develop a method using these facilities to abstract the library components and augment the genericity of the algorithms. Furthermore, this method is not specific to image processing; it can be applied to any C++ scientific library.

Documents

Bibtex (lrde.bib)

@InProceedings{	  roynard.18.rrpr,
  title		= {An Image Processing Library in Modern {C++}: Getting
		  Simplicity and Efficiency with Generic Programming},
  author	= {Micha\"el Roynard and Edwin Carlinet and Thierry G\'eraud},
  booktitle	= {Proceedings of the 2nd Workshop on Reproducible Research
		  in Pattern Recognition (RRPR 2018)},
  volume	= {11455},
  series	= {Lecture Notes in Computer Science},
  pages		= {121--137},
  year		= {2019},
  doi		= {10.1007/978-3-030-23987-9_12},
  abstract	= {As there are as many clients as many usages of an Image
		  Processing library, each one may expect different services
		  from it. Some clients may look for efficient and
		  production-quality algorithms, some may look for a large
		  tool set, while others may look for extensibility and
		  genericity to inter-operate with their own code base... but
		  in most cases, they want a simple-to-use and stable
		  product. For a C++ Image Processing library designer, it is
		  difficult to conciliate genericity, efficiency and
		  simplicity at the same time. Modern C++ (post 2011) brings
		  new features for library developers that will help
		  designing a software solution combining those three points.
		  In this paper, we develop a method using these facilities
		  to abstract the library components and augment the
		  genericity of the algorithms. Furthermore, this method is
		  not specific to image processing; it can be applied to any
		  C++ scientific library.}
}