protected virtual void SetSmoothDeph(double[,] sdeph1, double[,] sdeph2)
{
for (int i = 0; i < pData.Width; i++)
{
for (int j = 0; j < pData.Height; j++)
{
int neighborFound = 0;
double smoothDeph = 0;
sdeph2[i, j] = double.MinValue;
//int k=0;
for (int k = -1; k <= 1; k++)
{
//int l = -1;
for (int l = -1; l <= 1; l++)
{
int posX = i + k;
int posY = j + l;
if (posX >= 0 && posX < pData.Width && posY >= 0 && posY < pData.Height)
{
double newDeph = sdeph1[posX, posY];
// neu: es werden nur die Punkte benutzt, die echt größer sind
if (newDeph != double.MinValue)
{
double valToAdded = sdeph1[i, j];
if (newDeph > valToAdded)
valToAdded = newDeph;
smoothDeph += newDeph;
neighborFound++;
}
}
}
}
if (neighborFound > 0 && sdeph1[i, j] != double.MinValue)
{
smoothDeph /= (double)neighborFound;
sdeph2[i, j] = 1.0 * (0.8 * sdeph1[i, j] + 0.2 * smoothDeph);
}
else
{
sdeph2[i, j] = double.MinValue;
}
}
}
}