Introduction to monadic image processing


In monadic image processing we take an input image and we apply a function to every single pixel in that image.

The result of the function applied to a particular pixel in the input image is assigned to the corresponding pixel in the output image, and we use the same function for every pixel within the image.

Let’s have a look at this low-resolution example to get an idea of how it works in practice.
So we have a function, which we apply to the first pixel input image, and the result is assigned to the first pixel in the output image. And then we do the same thing for the second pixel and the third pixel and so on, until we have processed every single pixel within the image.

Now the demonstration here is sequential; we have applied it to one pixel after another. If the computer has significant parallel processing power then it is possible to apply the function to all of the pixels in parallel.

So what is this function f(x) that we used in the previous example? Well there are lots of really useful functions that we could use.

The first is, perhaps, we could take the square root of the input pixel.

Another thing we could do is change the type of the input pixel. Perhaps we could convert unsigned integer pixels into double pixels or vice versa.

Maybe we could change the brightness or the contrast of the image by operating on each pixel individually.

We could perform a function called histogram normalisation, and we will talk about that in a following section.

We could perform an operation called thresholding, which we will also talk about in upcoming section.

And we could perform an arty kind of transformation called posterization, and again we will talk about that very shortly.

An important class of operations are monadic, which map an input image to an output image of the same size by applying the same function to every pixel.

Professor Peter Corke

Professor of Robotic Vision at QUT and Director of the Australian Centre for Robotic Vision (ACRV). Peter is also a Fellow of the IEEE, a senior Fellow of the Higher Education Academy, and on the editorial board of several robotics research journals.

Skill level

This content assumes an understanding of high school level mathematics; for example, trigonometry, algebra, calculus, physics (optics) and experience with MATLAB command line and programming, for example workspace, variables, arrays, types, functions and classes.

More information...

Rate this lesson


Check your understanding

Leave a comment