static double[,] gaussianConvolution( double[,] matrix, double deviation )
{
var kernel = calculateNormalized1DSampleKernel( deviation );
var res1 = new double[matrix.GetLength( 0 ), matrix.GetLength( 1 )];
var res2 = new double[matrix.GetLength( 0 ), matrix.GetLength( 1 )];
// x-direction
for( var i = 0; i < matrix.GetLength( 0 ); i++ )
{
for( var j = 0; j < matrix.GetLength( 1 ); j++ )
res1[i, j] = processPoint( matrix, i, j, kernel, 0 );
}
// y-direction
for( var i = 0; i < matrix.GetLength( 0 ); i++ )
{
for( var j = 0; j < matrix.GetLength( 1 ); j++ )
res2[i, j] = processPoint( res1, i, j, kernel, 1 );
}
return res2;
}