# PSET 4 blur function only passing one test case

void blur(int height, int width, RGBTRIPLE image[height][width]) {

``````RGBTRIPLE copy[height][width];

int counter = 0;
int red = 0;
int blue = 0;
int green = 0;

for(int i=0; i<height; i++)
{
for(int j=0; j<width; j++)

{
for(int k=-1; k<2; k++)
{
for(int l=-1; l<2; l++)
{
if(i+k >=0 && i+k < height && j+l >=0 &&  j+l < width)
{
counter++;
red +=  image[i+k][j+l].rgbtRed;
blue += image[i+k][j+l].rgbtBlue;
green += image[i+k][j+l].rgbtGreen;
}
}
}

float red_avg = 0;
float blue_avg = 0;
float green_avg = 0;

red_avg = round(red/(float)counter);
blue_avg = round(blue/(float)counter);
green_avg = round(green/(float)counter);

copy[i][j].rgbtRed = red_avg;
copy[i][j].rgbtBlue = blue_avg;
copy[i][j].rgbtGreen = green_avg;

}
}

for(int i=0; i<height; i++)
{
for(int j=0; j<width; j++)
{

image[i][j].rgbtRed = copy[i][j].rgbtRed;
image[i][j].rgbtBlue = copy[i][j].rgbtBlue;
image[i][j].rgbtGreen = copy[i][j].rgbtGreen;

}
}

return;
``````

}

What I'm trying to do is to see if the adjacent points to the pixel exist and if it does then I increment the counter and the rgbt values of that pixel, then finally I calculate the average and store it to a copy of RGBTRIPLE which the initial RGBTRIPLE is then assigned to.