## First Programming Sessions

As stated in the main page, this tutorial is with the help of the PinkDev library.

You can download the images, both the original image and the resulting image, by following the link. You can extract the images doing `tar zxvf blobs.tar.gz`.

Here are the questions.

## 1 - Image difference

As a first very basic exercise, write an operator 'diffimage' that takes as input two images and returns a third image that is the absolute difference between the first two images. The command line for this operator is something like

`diffimage image1 image2 imageresult`

How can you test it? Once you have done this operator, you can use it that the result of the following questions are indeed correct.

## 2 -Thresholding

Write an operator `threshold` that makes a combined threshold. The input for the program are an image and two integers which are the low and the high threshold.

An example is the following

`thresold blobs.pgm 10 40 blobsThreshold.pgm`

## 3 - Histogram normalization

Write an operator `normalize` that normalizes the image histogram. The inputs of this operator are an image, and two integers, one for the desired low level value and the other for the high level value. You can test your operator on the image `blobs.pgm`, with 0 and 255, you should obtain `blobsNormalize.pgm`

## 4 - Histogram Equalization

Write an operator `equalize` that makes an hitogram equalization of the input image. On the `blobs.pgm` image, you should obtain the `blobsEqualize.pgm` image. How do you interpret the results?

## 5 - Other operators

Implement gamma corrections, log transform, power law, etc.

## 6 - Weighted averaging

Implement weighted averaging. Thanks to that operator, you can compute a Laplacian. Do some image enhancement filters.