A Modern C++ Point of View of Programming in Image Processing

From LRDE

Abstract

C++ is a multi-paradigm language that enables the programmer to set up efficient image processing algorithms easily. This language strength comes from many aspects. C++ is high-level, so this enables developing powerful abstractions and mixing different programming styles to ease the development. At the same time, C++ is low-level and can fully take advantage of the hardware to deliver the best performance. It is also very portable and highly compatible which allows algorithms to be called from high-level, fast-prototyping languages such as Python or Matlab. One fundamental aspects where C++ shines is generic programming. Generic programming makes it possible to develop and reuse bricks of software on objects (images) of different natures (types) without performance loss. Nevertheless, conciliating genericity, efficiency, and simplicity at the same time is not trivial. Modern C++ (post-2011) has brought new features that made it simpler and more powerful. In this paper, we focus on some C++20 aspects of generic programming: ranges, views, and concepts, and see how they extend to images to ease the development of generic image algorithms while lowering the computation time.

Documents

Bibtex (lrde.bib)

@InProceedings{	  roynard.22.gpce,
  title		= {A Modern {C++} Point of \emph{View} of Programming in
		  Image Processing},
  author	= {Micha\"el Roynard and Edwin Carlinet and Thierry G\'eraud},
  booktitle	= {Proceedings of the 21st International Conference on
		  Generative Programming: Concepts \& Experiences (GPCE
		  2022)},
  address	= {Auckland, New Zealand},
  month		= dec,
  year		= {2022},
  doi		= {10.1145/3564719.3568692},
  abstract	= {C++ is a multi-paradigm language that enables the
		  programmer to set up efficient image processing algorithms
		  easily. This language strength comes from many aspects. C++
		  is high-level, so this enables developing powerful
		  abstractions and mixing different programming styles to
		  ease the development. At the same time, C++ is low-level
		  and can fully take advantage of the hardware to deliver the
		  best performance. It is also very portable and highly
		  compatible which allows algorithms to be called from
		  high-level, fast-prototyping languages such as Python or
		  Matlab. One fundamental aspects where C++ shines is generic
		  programming. Generic programming makes it possible to
		  develop and reuse bricks of software on objects (images) of
		  different natures (types) without performance loss.
		  Nevertheless, conciliating genericity, efficiency, and
		  simplicity at the same time is not trivial. Modern C++
		  (post-2011) has brought new features that made it simpler
		  and more powerful. In this paper, we focus on some C++20
		  aspects of generic programming: ranges, views, and
		  concepts, and see how they extend to images to ease the
		  development of generic image algorithms while lowering the
		  computation time.}
}