public static FilterManipulator Instance() { if (_instance == null) { lock (instancelock) { if (_instance == null) { _instance = new FilterManipulator(); } } } return(_instance); }
public RGBChannels ApplyFilter(RGBChannels image, FilterType type, int times = 1) { if (filterManipulator == null) { filterManipulator = FilterManipulator.Instance(); } RGBChannels output = image; switch (type) { case FilterType.SobelX: output = filterManipulator.SobelXFilter(image); output.AutoContrastForAllChannels(); break; case FilterType.SobelY: output = filterManipulator.SobelYFilter(image); output.AutoContrastForAllChannels(); break; case FilterType.Gaussian: output = filterManipulator.GaussianFilter(image); output.AutoContrastForAllChannels(); break; case FilterType.Highpass: output = filterManipulator.HighPassFilter(image); output.AutoContrastForAllChannels(); break; case FilterType.GaussianMultipleTimes: output = filterManipulator.GaussianFilterNTimes(image, times); break; case FilterType.Lowpass: output = filterManipulator.LowPassFilter(image); output.AutoContrastForAllChannels(); break; case FilterType.GradientOrientation: output = filterManipulator.GradientOrientation(output); break; case FilterType.GradientMagnitude: output = filterManipulator.GradientMagnitude(image); break; } return(output); }