Goal: Implement basic 2D image processing operations with programming.
You can program with any languages while C/C++ is suggested (will be used for our projects).
Your system needs to implement the following tasks:
1. Load images: select and read an image into the system.
2. Average Smoothing: use 2D 3*3 averaging filter to create a new image from the original
3. Median Smoothing: use 2D 3*3 median filter to create a new image from the original image.
4. Gaussian Smoothing: use 2D 5*5 Gaussian filter to create a new image from the original
5. Edge Detection: use 2D 3*3 Sobel kernel to create a new image from the original image for
6. Undo: You should always keep the previous version of the image when you perform an
operation. Then you can fall back onto the previous image if the image processing operation
was not satisfactory. Implement the ‘Undo’ operation such that the previous image is
swapped back into the current image and is displayed.
Hint: you can use two entities of type Image: currentImage and oldImage to perform swapping
operations upon ‘Undo’
Hint: You may start from gray scale images for the following assignments. A color image can be
transformed to a grey scale image. (You may use the average of 3 channels of a color image to
represent the grey scale intensity.) Then, you need to extend your code to color images with the
operations applied to each color channel.