private static void FinalizeFrame(Tomogram tom) { int numberOfBackgroundClasses = tom.DataClasses.Where(n => n != 0).Count(); float[] classKey = new float[numberOfBackgroundClasses]; for (int c = 0; c < classKey.Length; c++) { float v = (float)RandomNormal.Next(tom.Random, 85, 15); classKey[c] = v * tom.MRCScaler; } for (int y = 0, i = 0; y < tom.Height; y++) { for (int x = 0; x < tom.Width; x++, i++) { int classNumber = tom.DataClasses[i]; if (classNumber > 0 && classNumber <= tom.BackgroundDensity) { tom.Data[i] = classKey[classNumber]; } } } GaussianBlur blur = GaussianBlur.BuildBlur(2.0f, 4); tom.Data = blur.BlurData(tom.Data, tom.Width, tom.Height); for (int y = 0, i = 0; y < tom.Height; y++) { for (int x = 0; x < tom.Width; x++, i++) { int classNumber = tom.DataClasses[i]; if (classNumber == -1) { float v = tom.Random.Next(50, 60); tom.Data[i] = v * tom.MRCScaler; } } } tom.Data = blur.BlurData(tom.Data, tom.Width, tom.Height); }