Kernel image processing

Static Badge Static Badge

Implement an algorithm that takes an image \(A\) and a matrix \(B\) as input. The algorithm performs the kernel convolution with the image. As a result, the algorithm should produce a new image that contains the result of the convolution. For more info refer to http://en.wikipedia.org/wiki/Kernel_(image_processing). Note that you can use the naive approach detailed in the Wikipedia page. In other words, you do not need to implement the convolution theorem of the Fourier transformation.

Implementation guidelines

  1. Running the program:

    • The program can be ran in different modes (sequential, parallel and distributed) by specifying a parameter.

    • User can specify the input image.

    • The program measures run-time needed to complete.

  2. Problem specific implementation requirements

    • There should be a default kernel supplied

    • The implementation must adapt automatically to the hardware it is being ran on (Physical CPU's, Cores, Memory, etc..);

    • The project must include a few sample images of different sizes.

Testing

All three implementations should be tested. The parameter that influences the run-time is the size of the image. All three implementations should be tasted using the same image. The test should be prepared by supplying different image sizes (not necessarily pretty images). Images can also be randomly generated with a specified size parameter. Each image is a new configuration, there should be at least 10 configurations of different sizes to obtain a representative sample of results.\ Present the results in your report using numeric and graphical representation. Discuss the results and explain them in detail.