اینم الگوریتم sobel (یک بار گذاشتم چون با توابع سیستم کار می کرد کند بود ):
public void SobelAlgorithm()
{
int gx, gy;
int[,] SobelHorizontalArray = new int[3, 3]{
{ 1, 2, 1},
{ 0, 0, 0},
{ -1,-2,-1}
};
int[,] SobelVERTICALArray = new int[3, 3]{
{ 1, 0,-1},
{ 2, 0,-2},
{ 1,0,-1}
};
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
gx = 0;
gy = 0;
//convolve
for (int k = 0; k + i < width && k < 3; k++)
{
for (int n = 0; n + j < height && n < 3; n++)
{
gx += (image[i + k, j + n] * SobelHorizontalArray[k, n]);
gy += (image[i + k, j + n] * SobelVERTICALArray[k, n]);
}
}
int temp = (int)Math.Sqrt(gx * gx + gy * gy);
if (temp > 255)
image[i, j] = 255;
else if (temp < 0)
image[i, j] = 0;
else
image[i, j] = temp;
}
}
}
اگه الگوریتم ها درست پیاده سازی نشده دوستان حتما بگن تا رفع شه.