Implement basic 2D image processing operations with programming.

Job ID: 34797251

Budget: $10 – $50 USD

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 image.
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 image.
5. Edge Detection: use 2D 3*3 Sobel kernel to create a new image from the original image for edge detection.
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.
Submission
1. Please follow the firm deadline and submit your whole project. MAKE SURE your project is executable directly on Windows and/or Mac system.
2. Write a readme file to show how your project can be executed and used.
3. You should also submit a few example images of each operation.