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); }