Created
July 15, 2020 09:27
-
-
Save Omi98/23018df62bc9146724da53beb770df01 to your computer and use it in GitHub Desktop.
Edge Detection filter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Detect edges | |
| void edges(int height, int width, RGBTRIPLE image[height][width]) | |
| { | |
| RGBTRIPLE temp[height][width]; | |
| /*creating another temp array and | |
| storing all the original pixels in it | |
| so that the original image pixels | |
| are not changed/altered during the | |
| calculations.*/ | |
| for (int h = 0; h < height; h ++) | |
| { | |
| for (int w = 0; w < width; w ++) | |
| { | |
| temp[h][w] = image[h][w]; | |
| } | |
| } | |
| float gx = 0.00; | |
| float gy = 0.00; | |
| float value_red = 0.00; | |
| float value_green = 0.00; | |
| float value_blue = 0.00; | |
| for (int h = 0; h < height; h ++) | |
| { | |
| for (int w = 0; w < width; w ++) | |
| { | |
| if ((h == 0) && (w == 0)) | |
| { | |
| // code (1) | |
| // left top corner | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 2) + | |
| (temp[h + 1][w].rgbtRed * 0) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + | |
| (temp[h + 1][w].rgbtRed * 2) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 2) + | |
| (temp[h + 1][w].rgbtGreen * 0) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + | |
| (temp[h + 1][w].rgbtGreen * 2) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 2) + | |
| (temp[h + 1][w].rgbtBlue * 0) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + | |
| (temp[h + 1][w].rgbtBlue * 2) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| image[h][w].rgbtBlue = round(value_blue); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h != 0) && (h != (height - 1)) && (w == 0)) | |
| { | |
| // code (2) | |
| // left edge | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 2) + (temp[h - 1][w].rgbtRed * 0) + | |
| (temp[h - 1][w + 1].rgbtRed * 1) + (temp[h + 1][w].rgbtRed * 0) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + (temp[h - 1][w].rgbtRed * -2) + | |
| (temp[h - 1][w + 1].rgbtRed * -1) + (temp[h + 1][w].rgbtRed * 2) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 2) + (temp[h - 1][w].rgbtGreen * 0) + | |
| (temp[h - 1][w + 1].rgbtGreen * 1) + (temp[h + 1][w].rgbtGreen * 0) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + (temp[h - 1][w].rgbtGreen * -2) + | |
| (temp[h - 1][w + 1].rgbtGreen * -1) + (temp[h + 1][w].rgbtGreen * 2) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 2) + (temp[h - 1][w].rgbtBlue * 0) + | |
| (temp[h - 1][w + 1].rgbtBlue * 1) + (temp[h + 1][w].rgbtBlue * 0) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + (temp[h - 1][w].rgbtBlue * -2) + | |
| (temp[h - 1][w + 1].rgbtBlue * -1) + (temp[h + 1][w].rgbtBlue * 2) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h != 0) && (h == (height - 1)) && (w == 0)) | |
| { | |
| // code (3) | |
| // left bottom corner | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 2) + | |
| (temp[h - 1][w].rgbtRed * 0) + (temp[h - 1][w + 1].rgbtRed * 1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + | |
| (temp[h - 1][w].rgbtRed * -2) + (temp[h - 1][w + 1].rgbtRed * -1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 2) + | |
| (temp[h - 1][w].rgbtGreen * 0) + (temp[h - 1][w + 1].rgbtGreen * 1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + | |
| (temp[h - 1][w].rgbtGreen * -2) + (temp[h - 1][w + 1].rgbtGreen * -1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 2) + | |
| (temp[h - 1][w].rgbtBlue * 0) + (temp[h - 1][w + 1].rgbtBlue * 1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + | |
| (temp[h - 1][w].rgbtBlue * -2) + (temp[h - 1][w + 1].rgbtBlue * -1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h == (height - 1)) && (w != 0) && (w != (width - 1))) | |
| { | |
| // code (4) | |
| // bottom edge | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 2) + (temp[h][w - 1].rgbtRed * -2) + | |
| (temp[h - 1][w].rgbtRed * 0) + (temp[h - 1][w + 1].rgbtRed * 1) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + | |
| (temp[h - 1][w].rgbtRed * -2) + (temp[h - 1][w + 1].rgbtRed * -1) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 2) + (temp[h][w - 1].rgbtGreen * -2) + | |
| (temp[h - 1][w].rgbtGreen * 0) + (temp[h - 1][w + 1].rgbtGreen * 1) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + | |
| (temp[h - 1][w].rgbtGreen * -2) + (temp[h - 1][w + 1].rgbtGreen * -1) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 2) + (temp[h][w - 1].rgbtBlue * -2) + | |
| (temp[h - 1][w].rgbtBlue * 0) + (temp[h - 1][w + 1].rgbtBlue * 1) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + | |
| (temp[h - 1][w].rgbtBlue * -2) + (temp[h - 1][w + 1].rgbtBlue * -1) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h == (height - 1)) && (w == (width - 1))) | |
| { | |
| // code (5) | |
| // right bottom corner | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * -2) + | |
| (temp[h - 1][w].rgbtRed * 0) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + | |
| (temp[h - 1][w].rgbtRed * -2) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * -2) + | |
| (temp[h - 1][w].rgbtGreen * 0) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + | |
| (temp[h - 1][w].rgbtGreen * -2) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * -2) + | |
| (temp[h - 1][w].rgbtBlue * 0) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + | |
| (temp[h - 1][w].rgbtBlue * -2) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h != 0) && (h != (height - 1)) && (w == (width - 1))) | |
| { | |
| // code (6) | |
| // right edge | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * -2) + (temp[h + 1][w].rgbtRed * 0) + | |
| (temp[h + 1][w - 1].rgbtRed * -1) + (temp[h - 1][w].rgbtRed * 0) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + (temp[h + 1][w].rgbtRed * 2) + | |
| (temp[h + 1][w - 1].rgbtRed * 1) + (temp[h - 1][w].rgbtRed * -2) + (temp[h - 1][w - 1].rgbtRed * -1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * -2) + (temp[h + 1][w].rgbtGreen * 0) + | |
| (temp[h + 1][w - 1].rgbtGreen * -1) + (temp[h - 1][w].rgbtGreen * 0) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + (temp[h + 1][w].rgbtGreen * 2) + | |
| (temp[h + 1][w - 1].rgbtGreen * 1) + (temp[h - 1][w].rgbtGreen * -2) + (temp[h - 1][w - 1].rgbtGreen * -1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * -2) + (temp[h + 1][w].rgbtBlue * 0) + | |
| (temp[h + 1][w - 1].rgbtBlue * -1) + (temp[h - 1][w].rgbtBlue * 0) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + (temp[h + 1][w].rgbtBlue * 2) + | |
| (temp[h + 1][w - 1].rgbtBlue * 1) + (temp[h - 1][w].rgbtBlue * -2) + (temp[h - 1][w - 1].rgbtBlue * -1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h == 0) && (w == (width - 1))) | |
| { | |
| // code (7) | |
| // top right corner | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * -2) + | |
| (temp[h + 1][w].rgbtRed * 0) + (temp[h + 1][w - 1].rgbtRed * -1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + | |
| (temp[h + 1][w].rgbtRed * 2) + (temp[h + 1][w - 1].rgbtRed * 1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * -2) + | |
| (temp[h + 1][w].rgbtGreen * 0) + (temp[h + 1][w - 1].rgbtGreen * -1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + | |
| (temp[h + 1][w].rgbtGreen * 2) + (temp[h + 1][w - 1].rgbtGreen * 1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * -2) + | |
| (temp[h + 1][w].rgbtBlue * 0) + (temp[h + 1][w - 1].rgbtBlue * -1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + | |
| (temp[h + 1][w].rgbtBlue * 2) + (temp[h + 1][w - 1].rgbtBlue * 1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h == 0) && (w != 0) && (w != (width - 1))) | |
| { | |
| // code (8) | |
| // top edge | |
| // for red | |
| gx = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 2) + (temp[h][w - 1].rgbtRed * -2) + | |
| (temp[h + 1][w].rgbtRed * 0) + (temp[h + 1][w + 1].rgbtRed * 1) + (temp[h + 1][w - 1].rgbtRed * -1); | |
| gy = 0 + (temp[h][w].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + | |
| (temp[h + 1][w].rgbtRed * 2) + (temp[h + 1][w + 1].rgbtRed * 1) + (temp[h + 1][w - 1].rgbtRed * 1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 2) + (temp[h][w - 1].rgbtGreen * -2) + | |
| (temp[h + 1][w].rgbtGreen * 0) + (temp[h + 1][w + 1].rgbtGreen * 1) + (temp[h + 1][w - 1].rgbtGreen * -1); | |
| gy = 0 + (temp[h][w].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + | |
| (temp[h + 1][w].rgbtGreen * 2) + (temp[h + 1][w + 1].rgbtGreen * 1) + (temp[h + 1][w - 1].rgbtGreen * 1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 2) + (temp[h][w - 1].rgbtBlue * -2) + | |
| (temp[h + 1][w].rgbtBlue * 0) + (temp[h + 1][w + 1].rgbtBlue * 1) + (temp[h + 1][w - 1].rgbtBlue * -1); | |
| gy = 0 + (temp[h][w].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + | |
| (temp[h + 1][w].rgbtBlue * 2) + (temp[h + 1][w + 1].rgbtBlue * 1) + (temp[h + 1][w - 1].rgbtBlue * 1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else if ((h != 0) && (h != (height - 1)) && (w != 0) && (w != (width - 1))) | |
| { | |
| // code (9) | |
| // middle | |
| // for red | |
| gx = (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * -2) + (temp[h][w + 1].rgbtRed * 2) + | |
| (temp[h - 1][w].rgbtRed * 0) + (temp[h - 1][w - 1].rgbtRed * -1) + (temp[h - 1][w + 1].rgbtRed * 1) + | |
| (temp[h + 1][w].rgbtRed * 0) + (temp[h + 1][w - 1].rgbtRed * -1) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| gy = (temp[h][w].rgbtRed * 0) + (temp[h][w - 1].rgbtRed * 0) + (temp[h][w + 1].rgbtRed * 0) + | |
| (temp[h - 1][w].rgbtRed * -2) + (temp[h - 1][w - 1].rgbtRed * -1) + (temp[h - 1][w + 1].rgbtRed * -1) + | |
| (temp[h + 1][w].rgbtRed * 2) + (temp[h + 1][w - 1].rgbtRed * 1) + (temp[h + 1][w + 1].rgbtRed * 1); | |
| value_red = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_red) > 255) | |
| { | |
| image[h][w].rgbtRed = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtRed = round(value_red); | |
| } | |
| // for green | |
| gx = (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * -2) + (temp[h][w + 1].rgbtGreen * 2) + | |
| (temp[h - 1][w].rgbtGreen * 0) + (temp[h - 1][w - 1].rgbtGreen * -1) + (temp[h - 1][w + 1].rgbtGreen * 1) + | |
| (temp[h + 1][w].rgbtGreen * 0) + (temp[h + 1][w - 1].rgbtGreen * -1) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| gy = (temp[h][w].rgbtGreen * 0) + (temp[h][w - 1].rgbtGreen * 0) + (temp[h][w + 1].rgbtGreen * 0) + | |
| (temp[h - 1][w].rgbtGreen * -2) + (temp[h - 1][w - 1].rgbtGreen * -1) + (temp[h - 1][w + 1].rgbtGreen * -1) + | |
| (temp[h + 1][w].rgbtGreen * 2) + (temp[h + 1][w - 1].rgbtGreen * 1) + (temp[h + 1][w + 1].rgbtGreen * 1); | |
| value_green = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_green) > 255) | |
| { | |
| image[h][w].rgbtGreen = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtGreen = round(value_green); | |
| } | |
| // for blue | |
| gx = (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * -2) + (temp[h][w + 1].rgbtBlue * 2) + | |
| (temp[h - 1][w].rgbtBlue * 0) + (temp[h - 1][w - 1].rgbtBlue * -1) + (temp[h - 1][w + 1].rgbtBlue * 1) + | |
| (temp[h + 1][w].rgbtBlue * 0) + (temp[h + 1][w - 1].rgbtBlue * -1) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| gy = (temp[h][w].rgbtBlue * 0) + (temp[h][w - 1].rgbtBlue * 0) + (temp[h][w + 1].rgbtBlue * 0) + | |
| (temp[h - 1][w].rgbtBlue * -2) + (temp[h - 1][w - 1].rgbtBlue * -1) + (temp[h - 1][w + 1].rgbtBlue * -1) + | |
| (temp[h + 1][w].rgbtBlue * 2) + (temp[h + 1][w - 1].rgbtBlue * 1) + (temp[h + 1][w + 1].rgbtBlue * 1); | |
| value_blue = sqrt(((gx)*(gx)) + ((gy)*(gy))); | |
| if (round(value_blue) > 255) | |
| { | |
| image[h][w].rgbtBlue = 255; | |
| } | |
| else | |
| { | |
| image[h][w].rgbtBlue = round(value_blue); | |
| } | |
| } | |
| else | |
| { | |
| break; | |
| } | |
| } | |
| } | |
| // ./filter -e images/yard.bmp out.bmp | |
| return; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment