Changeset View
Changeset View
Standalone View
Standalone View
MicroBenchmarks/ImageProcessing/Dilate/dilateKernel.c
/** | |||||
Source: | |||||
https://github.com/mompes/CUDA-dilation-and-erosion-filters/blob/master/erosionCPU.cpp | |||||
Modified by Pankaj Kukreja (github.com/proton0001) | |||||
Indian Institute of Technology Hyderabad | |||||
*/ | |||||
#include "dilate.h" | |||||
#define MAX(a, b) (a > b) ? a : b; | |||||
void dilateKernel(int height, int width, int inputImage[HEIGHT][WIDTH], | |||||
int outputImage[height][width], int temp[height][width]) { | |||||
for (int i = 0; i < height; i++) { | |||||
for (int j = 0; j < width; j++) { | |||||
int value = 0; | |||||
for (int k = -1; k <= 1; k++) { | |||||
if ((j + k) > 0 && (j + k) < width) { | |||||
value = MAX(inputImage[i][j + k], value); | |||||
} | |||||
} | |||||
temp[i][j] = value; | |||||
} | |||||
} | |||||
for (int i = 0; i < height; i++) { | |||||
for (int j = 0; j < width; j++) { | |||||
int value = 0; | |||||
for (int k = -1; k <= 1; k++) { | |||||
if ((i + k) > 0 && (i + k) < height) { | |||||
value = MAX(temp[i + k][j], value); | |||||
} | |||||
} | |||||
outputImage[i][j] = value; | |||||
} | |||||
} | |||||
} |