private double[,] sobelPass(PixelMap map, double[,] kernel)
{
double[,] output = new double[map.Width, map.Height];
for (int x = 0; x < map.Width; x++)
{
for (int y = 0; y < map.Height; y++)
{
double sum = 0;
for (int u = 0; u < 3; u++)
{
for (int v = 0; v < 3; v++)
{
Point samplePoint = new Point(x - 1 + u, y - 1 + v);
if (map.Inside(samplePoint))
{
double kVal = kernel[u, v];
double imgVal = map[samplePoint].Lightness;
sum += kVal * imgVal;
}
else
{
sum += 0.5;
}
}
}
output[x, y] = sum;
}
}
return output;
}