Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Blur image
- void blur(int height, int width, RGBTRIPLE image[height][width])
- {
- for (int i = 0; i < height; i++)
- {
- for (int j = 0; j < width; j++)
- {
- float divide = 9.0;
- float avg_sumr = 0.0;
- float avg_sumg = 0.0;
- float avg_sumb = 0.0;
- int c = 0;
- if (i + 1 >= height) //bottom
- c = 1;
- if (j + 1 >= width) //right
- c = 2;
- if (i - 1 < 0) //top
- c = 3;
- if (j - 1 < 0) //left
- c = 4;
- if (j - 1 < 0 && i + 1 >= height) //bottom left
- c = 5;
- if (j - 1 < 0 && i - 1 < 0) //top left
- c = 6;
- if (i - 1 < 0 && j + 1 >= width) //top right
- c = 7;
- if (i + 1 >= height && j + 1 >= width) //bottom right
- c = 8;
- switch(c)
- {
- case 0:
- //fine
- /*
- ###
- ###
- ###*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j - 1].rgbtRed;
- avg_sumg += image[i - 1][j - 1].rgbtGreen;
- avg_sumb += image[i - 1][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j + 1].rgbtRed;
- avg_sumg += image[i + 1][j + 1].rgbtGreen;
- avg_sumb += image[i + 1][j + 1].rgbtBlue;
- avg_sumr += image[i - 1][j + 1].rgbtRed;
- avg_sumg += image[i - 1][j + 1].rgbtGreen;
- avg_sumb += image[i - 1][j + 1].rgbtBlue;
- avg_sumr += image[i + 1][j - 1].rgbtRed;
- avg_sumg += image[i + 1][j - 1].rgbtGreen;
- avg_sumb += image[i + 1][j - 1].rgbtBlue;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 1:
- //cut out bottom
- /*###
- ###*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j + 1].rgbtRed;
- avg_sumg += image[i - 1][j + 1].rgbtGreen;
- avg_sumb += image[i - 1][j + 1].rgbtBlue;
- avg_sumr += image[i - 1][j - 1].rgbtRed;
- avg_sumg += image[i - 1][j - 1].rgbtGreen;
- avg_sumb += image[i - 1][j - 1].rgbtBlue;
- divide = 6.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 2:
- //cut out right side
- /*##
- ##
- ##*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j - 1].rgbtRed;
- avg_sumg += image[i - 1][j - 1].rgbtGreen;
- avg_sumb += image[i - 1][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j - 1].rgbtRed;
- avg_sumg += image[i + 1][j - 1].rgbtGreen;
- avg_sumb += image[i + 1][j - 1].rgbtBlue;
- divide = 6.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 3:
- //top
- /*
- ###
- ###*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i + 1][j + 1].rgbtRed;
- avg_sumg += image[i + 1][j + 1].rgbtGreen;
- avg_sumb += image[i + 1][j + 1].rgbtBlue;
- avg_sumr += image[i + 1][j - 1].rgbtRed;
- avg_sumg += image[i + 1][j - 1].rgbtGreen;
- avg_sumb += image[i + 1][j - 1].rgbtBlue;
- divide = 6.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 4:
- //left
- /*
- ##
- ##
- ##*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i + 1][j + 1].rgbtRed;
- avg_sumg += image[i + 1][j + 1].rgbtGreen;
- avg_sumb += image[i + 1][j + 1].rgbtBlue;
- avg_sumr += image[i - 1][j + 1].rgbtRed;
- avg_sumg += image[i - 1][j + 1].rgbtGreen;
- avg_sumb += image[i - 1][j + 1].rgbtBlue;
- divide = 6.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 5:
- //bottom left
- /*
- ##
- ##
- */
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j + 1].rgbtRed;
- avg_sumg += image[i - 1][j + 1].rgbtGreen;
- avg_sumb += image[i - 1][j + 1].rgbtBlue;
- divide = 4.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 6:
- //top left
- /*
- ##
- ##*/
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j + 1].rgbtRed;
- avg_sumg += image[i][j + 1].rgbtGreen;
- avg_sumb += image[i][j + 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i + 1][j + 1].rgbtRed;
- avg_sumg += image[i + 1][j + 1].rgbtGreen;
- avg_sumb += image[i + 1][j + 1].rgbtBlue;
- divide = 4.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 7:
- //top right
- /*
- ##
- ##
- */
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i + 1][j].rgbtRed;
- avg_sumg += image[i + 1][j].rgbtGreen;
- avg_sumb += image[i + 1][j].rgbtBlue;
- avg_sumr += image[i + 1][j - 1].rgbtRed;
- avg_sumg += image[i + 1][j - 1].rgbtGreen;
- avg_sumb += image[i + 1][j - 1].rgbtBlue;
- divide = 4.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- case 8:
- //bottom right
- /*
- ##
- ##
- */
- avg_sumr += image[i][j].rgbtRed;
- avg_sumg += image[i][j].rgbtGreen;
- avg_sumb += image[i][j].rgbtBlue;
- avg_sumr += image[i][j - 1].rgbtRed;
- avg_sumg += image[i][j - 1].rgbtGreen;
- avg_sumb += image[i][j - 1].rgbtBlue;
- avg_sumr += image[i - 1][j].rgbtRed;
- avg_sumg += image[i - 1][j].rgbtGreen;
- avg_sumb += image[i - 1][j].rgbtBlue;
- avg_sumr += image[i - 1][j - 1].rgbtRed;
- avg_sumg += image[i - 1][j - 1].rgbtGreen;
- avg_sumb += image[i - 1][j - 1].rgbtBlue;
- divide = 4.0;
- avg_sumr = round(avg_sumr / divide);
- avg_sumg = round(avg_sumg / divide);
- avg_sumb = round(avg_sumb / divide);
- image[i][j].rgbtRed = avg_sumr;
- image[i][j].rgbtGreen = avg_sumg;
- image[i][j].rgbtBlue = avg_sumb;
- break;
- default:
- return;
- printf("ERROR!");
- break;
- }
- }
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement