public static FilterManipulator Instance()
 {
     if (_instance == null)
     {
         lock (instancelock)
         {
             if (_instance == null)
             {
                 _instance = new FilterManipulator();
             }
         }
     }
     return(_instance);
 }
示例#2
0
    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);
    }