Locating the end points of a bridge-like structure in an image

后端 未结 6 1963
隐瞒了意图╮
隐瞒了意图╮ 2021-02-08 02:14

How do I locate the end points of a bridge-like structure in an image?

Below is a generalized representation.

6条回答
  •  我在风中等你
    2021-02-08 03:09

    Solution using Python, NumPy, Pymorph and Mahotas:

    import pymorph as m
    import mahotas
    from numpy import where, reshape
    
    image = mahotas.imread('input.png') # Load image
    
    b1 = image[:,:,0] < 100 # Make a binary image from the thresholded red channel
    b2 = m.erode(b1, m.sedisk(4)) # Erode to enhance contrast of the bridge
    b3 = m.open(b2,m.sedisk(4)) # Remove the bridge
    b4 = b2-b3 # Bridge plus small noise
    b5 = m.areaopen(b4,1000) # Remove small areas leaving only a thinned bridge
    b6 = m.dilate(b3)*b5 # Extend the non-bridge area slightly and get intersection with the bridge.
    
    #b6 is image of end of bridge, now find single points
    b7 = m.thin(b6, m.endpoints('homotopic')) # Narrow regions to single points.
    labelled = m.label(b7) # Label endpoints.
    
    x1, y1 = reshape(where(labelled == 1),(1,2))[0]
    x2, y2 = reshape(where(labelled == 2),(1,2))[0]
    
    outputimage = m.overlay(b1, m.dilate(b7,m.sedisk(5)))
    mahotas.imsave('output.png', outputimage)
    

    Output

提交回复
热议问题