forked from pi7mcrg2k/opcomplex
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.0 KiB
34 lines
1.0 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
#include <string.h>
|
|
#include "render.h"
|
|
|
|
void applyGaussianBlur(float src[][MAT_SIZE], float dst[][MAT_SIZE], float kernel[3][3]);
|
|
int main() {
|
|
float inputImage[MAT_SIZE][MAT_SIZE];
|
|
Render(inputImage);
|
|
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 outputImage[MAT_SIZE][MAT_SIZE]={0};
|
|
clock_t start = clock();
|
|
applyGaussianBlur(inputImage, outputImage, kernel);
|
|
clock_t end = clock();
|
|
printf("Time: %lf s\n", (double)(end-start) / CLOCKS_PER_SEC);
|
|
Print(outputImage);
|
|
}
|
|
|
|
void applyGaussianBlur(float src[][MAT_SIZE], float dst[][MAT_SIZE], float kernel[3][3]) {
|
|
int i, j;
|
|
for(i=1; i<MAT_SIZE-1; i++)
|
|
for(j=1; j<MAT_SIZE-1; j++) {
|
|
dst[i][j] =
|
|
src[i-1][j-1]*kernel[0][0]+src[i-1][j ]*kernel[0][1]+src[i-1][j+1]*kernel[0][2]+
|
|
src[i ][j-1]*kernel[1][0]+src[i ][j ]*kernel[1][1]+src[i ][j+1]*kernel[1][2]+
|
|
src[i+1][j-1]*kernel[2][0]+src[i+1][j ]*kernel[2][1]+src[i+1][j+1]*kernel[2][2];
|
|
}
|
|
}
|