# A Modern C++ Point of View of Programming in Image Processing (Short Paper)

### From LRDE

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

## 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.

## Bibtex (lrde.bib)

@InProceedings{	  roynard.22.gpce,
title		= {A Modern {C++} Point of \emph{View} of Programming in
Image Processing (Short Paper)},
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)},
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.}
}