static Image ApplyRefinements(int number, Image input, ImageEnhancementAlgorithm algorithm) { var image = input; for (var i = 0; i < number; i++) { image = RefineImage(image, algorithm); } return(image);
static Image RefineImage(Image input, ImageEnhancementAlgorithm algorithm) { var newPoints = ImmutableHashSet.CreateBuilder <Point2d>(); var newArea = input.Area.Pad(1); foreach (var point in newArea.Items) { var number = GetDecimalNumber(input, point); var lit = algorithm[number]; if (lit) { newPoints.Add(point); } } var newDefault = input.DefaultLitValue is false ? algorithm[0] : algorithm[^ 1];