'**SUMMARY**
Given a two points returns a list of edge points closet to the line joining the points
Point is a tuple of two numbers
Note : Image must be binary
**Parameters**
* *start* - First Point
* *end* - Second Point
* *step* - Number of points to skip if no edge is found in vicinity
Keep this low to detect sharp curves
**RETURNS**
* List * - A list of tuples , each tuple contains (x,y) values'

def _edgeSnap2(self, start, end, step):

    edgeMap = np.copy(self.getGrayNumpy())
    box = (step * 4)
    xmin = min(start[0], end[0])
    xmax = max(start[0], end[0])
    ymin = min(start[1], end[1])
    ymax = max(start[1], end[1])
    line = self.bresenham_line(start, end)
    finalList = []
    i = 0
    overallMinDist = None
    while (i < len(line)):
        (x, y) = line[i]
        region = edgeMap[(x - box):(x + box), (y - box):(y + box)]
        if ((region.shape[0] == 0) or (region.shape[1] == 0)):
            i += step
            continue
        indexList = np.argwhere((region > 0))
        if (indexList.size > 0):
            indexList -= box
            minDist = None
            for (ix, iy) in indexList:
                dist = math.hypot(((x + ix) - end[0]), ((iy + y) - end[1]))
                if ((minDist == None) or (dist < minDist)):
                    (dx, dy) = (ix, iy)
                    minDist = dist
            if ((overallMinDist != None) and (minDist > (overallMinDist * 1.1))):
                i += step
                continue
            if ((overallMinDist == None) or (minDist < overallMinDist)):
                overallMinDist = minDist
            edgeMap[(x - box):(x + box), (y - box):(y + box)] = 0
            if ((xmin <= (x + dx) <= xmax) and (ymin <= (y + dx) <= ymax)):
                line = ([((x + dx), (y + dy))] + self.bresenham_line(((x + dx), (y + dy)), end))
                finalList += [((x + dx), (y + dy))]
                i = 0
        i += step
    finalList += [end]
    return finalList
