public RGBChannels GetColorFromOrientation(RGBChannels f, List <HarrisNode> maximas)
    {
        RGBChannels result = new RGBChannels(f.Width, f.Height);

        for (int x = 0; x < f.Width; x++)
        {
            for (int y = 0; y < f.Height; y++)
            {
                HarrisNode node = maximas.Find(max => max.X == x && max.Y == y);
                if (node != null)
                {
                    result.R[y, x] = node.OrientationColor.R;
                    result.G[y, x] = node.OrientationColor.G;
                    result.B[y, x] = node.OrientationColor.B;
                }
                else
                {
                    result.R[y, x] = image.R[y, x];
                    result.G[y, x] = image.G[y, x];
                    result.B[y, x] = image.B[y, x];
                }
            }
        }

        return(result);
    }
    public List <HarrisNode> ThresholdMaximas(List <HarrisNode> maximas, double threshold)
    {
        List <HarrisNode> realMaxis = new List <HarrisNode>();

        foreach (HarrisNode max in maximas)
        {
            List <HarrisNode> neighbours = maximas.FindAll(m => m.X > max.X - 4 && m.X <max.X + 4 && m.Y> max.Y - 4 && m.Y < max.Y + 4);
            HarrisNode        maximum    = neighbours[0];

            foreach (HarrisNode n in neighbours)
            {
                if (n.Value > maximum.Value)
                {
                    maximum = n;
                }
            }

            if (maximum.Value > threshold)
            {
                realMaxis.Add(maximum);
            }
        }
        return(realMaxis);
    }