Created
July 15, 2020 09:27
-
-
Save Omi98/23018df62bc9146724da53beb770df01 to your computer and use it in GitHub Desktop.
Edge Detection filter
This file contains 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