#include #include void applyGaussianBlur(float src[5][5], float dst[5][5], int h, int w, float kernel[3][3]){ for (int i = 1; i < h - 1; i++) { for (int j = 1; j < w - 1; j++) { float sum = 0.0f; for (int ki = 0; ki < 3; ki++) { for (int kj = 0; kj < 3; kj++) { sum += src[i + ki - 1][j + kj - 1] * kernel[ki][kj]; } } dst[i][j] = sum; } } } int main() { float input[5][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25} }; float kernel[3][3] = { {1.0f / 16, 2.0f / 16, 1.0f / 16}, {2.0f / 16, 4.0f / 16, 2.0f / 16}, {1.0f / 16, 2.0f / 16, 1.0f / 16} }; float dst[5][5]; clock_t start_time = clock(); applyGaussianBlur(input,dst,5,5,kernel); clock_t end_time = clock(); double time_taken = (double)(end_time - start_time) / CLOCKS_PER_SEC; printf("Gaussian Blur applied to the image matrix:\n"); for (int i = 0; i < 5; i++) { for (int j = 0; j <5; j++) { printf("%.2f ", dst[i][j]); } printf("\n"); } printf("Time taken: %f seconds\n", time_taken); return 0; }