public static void WholeAmplify(AmplifyType type, double k = 1) { Parallel.For(0, slices.Length, tn => { slices[tn] = Amplify(slices[tn], type, k); }); }
public static float[,] Amplify(float[,] data, AmplifyType type, double k = 1) { var w = data.GetLength(0); var h = data.GetLength(1); var newData = new float[w, h]; for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { switch (type) { case AmplifyType.linear: newData[i, j] = data[i, j] * (1 + j * (float)k); break; case AmplifyType.log: newData[i, j] = data[i, j] * (1 + (float)Math.Log(1 + j, k)); break; case AmplifyType.pow: newData[i, j] = data[i, j] * (1 + (float)Math.Pow(k, j)); break; } } } return(newData); }