Exemplo n.º 1
0
    public RGBChannels ApplyFeatureDetection(RGBChannels image, HarrisCornerDetection type, double threshold = 0.0000000002)
    {
        if (featureDetector == null)
        {
            featureDetector = FeatureDetector.Instance();
        }
        RGBChannels       output = image;
        List <HarrisNode> maximas;

        switch (type)
        {
        case HarrisCornerDetection.fValues:
            output = featureDetector.HarrisCornerDetection(image);
            break;

        case HarrisCornerDetection.LokalMaxima9x9:
            output  = featureDetector.HarrisCornerDetection(image);
            maximas = featureDetector.GetMaximas(9, 9, output);
            output  = featureDetector.GetColorFromFValue(output, maximas);
            break;

        case HarrisCornerDetection.fValues4bin:
            output  = featureDetector.HarrisCornerDetection(image);
            maximas = featureDetector.GetMaximas(9, 9, output);
            maximas = featureDetector.ThresholdMaximas(maximas, threshold);
            RGBChannels orientation = filterManipulator.GradientOrientation(image);
            maximas = featureDetector.GetOrientationBin(orientation, maximas);
            output  = featureDetector.GetColorFromOrientation(output, maximas);

            break;
        }

        return(output);
    }