Example #1
0
def find_ellipses_display( dfore , bw ):
    """Fits ellipses to connected components in image.
    Returns an EllipseList, each member representing
    the x,y position and orientation of a single fly."""

    # check number of above-threshold pixels
    rows, cols = num.nonzero( bw )

    # find connected components
    (L,ncc) = meas.label(bw)
    
    # make sure there aren't too many connected components
    if ncc > params.max_n_clusters:
        warn( "too many objects found (>%d); truncating object search"%(params.max_n_clusters) )
        # for now, just throw out the last connected components.
        # in the future, we can sort based on area and keep those
        # with the largest area. hopefully, this never actually
        # happens.
        ncc = params.max_n_clusters
        L[L >= ncc] = 0
        
    # fit ellipses
    ellipses = est.weightedregionprops(L,ncc,dfore)

    # check if any are small, and [try to] fix those
    (issmall,didlowerthresh,didmerge,diddelete) = est.fixsmalldisplay(ellipses,L,dfore)

    # check if any are large, and [try to] fix those
    (islarge,didsplit) = est.fixlargedisplay(ellipses,L,dfore)
    
    return (ellipses,issmall,islarge,didlowerthresh,didmerge,diddelete,didsplit)
Example #2
0
def find_ellipses_display( dfore , L, ncc ):
    """Fits ellipses to connected components in image.
    Returns an EllipseList, each member representing
    the x,y position and orientation of a single fly."""

    # fit ellipses
    if DEBUG_TRACKINGSETTINGS: print 'ncc = ' + str(ncc) + ', max(L) = ' + str(num.max(L)) + ', nnz(L) = ' + str(num.flatnonzero(L).shape) + ', sum(dfore) = ' + str(num.sum(num.sum(dfore)))
    ellipses = est.weightedregionprops(L,ncc,dfore)

    ellipsescopy = []
    for ell in ellipses:
        ellipsescopy.append(ell.copy())

    if DEBUG_TRACKINGSETTINGS: print 'before fixing, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS:
        areasum = 0
        for ell in ellipses:
            areasum += ell.area
        print 'summed area of ellipses = ' + str(areasum)

    # check if any are small, and [try to] fix those
    (ellsmall,didlowerthresh,didmerge,diddelete) = est.fixsmalldisplay(ellipses,L,dfore)

    if DEBUG_TRACKINGSETTINGS: print 'after fixing small ellipses, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS: print 'ellsmall = ' + str(ellsmall)
    if DEBUG_TRACKINGSETTINGS: print 'didlowerthresh = ' + str(didlowerthresh)
    if DEBUG_TRACKINGSETTINGS: print 'didmerge = ' + str(didmerge)
    if DEBUG_TRACKINGSETTINGS: print 'diddelete = ' + str(diddelete)

    # check if any are large, and [try to] fix those
    (elllarge,didsplit) = est.fixlargedisplay(ellipses,L,dfore)

    if DEBUG_TRACKINGSETTINGS: print 'after fixing large ellipses, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS: print 'elllarge = ' + str(elllarge)
    if DEBUG_TRACKINGSETTINGS: print 'didsplit = ' + str(didsplit)
    if DEBUG_TRACKINGSETTINGS: print 'ellsmall = ' + str(ellsmall)
    if DEBUG_TRACKINGSETTINGS: print 'didlowerthresh = ' + str(didlowerthresh)
    if DEBUG_TRACKINGSETTINGS: print 'didmerge = ' + str(didmerge)
    if DEBUG_TRACKINGSETTINGS: print 'diddelete = ' + str(diddelete)    

    if DEBUG_TRACKINGSETTINGS: print 'returning ellipsescopy = ' + str(ellipsescopy) + ', len = ' + str(len(ellipsescopy))
    if DEBUG_TRACKINGSETTINGS:
        areasum = 0
        for ell in ellipsescopy:
            areasum += ell.area
        print 'summed area of ellipses = ' + str(areasum)
    
    return (ellipsescopy,ellsmall,elllarge,didlowerthresh,didmerge,diddelete,didsplit)
Example #3
0
def find_ellipses_display( dfore , L, ncc ):
    """Fits ellipses to connected components in image.
    Returns an EllipseList, each member representing
    the x,y position and orientation of a single fly."""

    # fit ellipses
    if DEBUG_TRACKINGSETTINGS: print 'ncc = ' + str(ncc) + ', max(L) = ' + str(num.max(L)) + ', nnz(L) = ' + str(num.flatnonzero(L).shape) + ', sum(dfore) = ' + str(num.sum(num.sum(dfore)))
    ellipses = est.weightedregionprops(L,ncc,dfore)

    ellipsescopy = []
    for ell in ellipses:
        ellipsescopy.append(ell.copy())

    if DEBUG_TRACKINGSETTINGS: print 'before fixing, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS:
        areasum = 0
        for ell in ellipses:
            areasum += ell.area
        print 'summed area of ellipses = ' + str(areasum)

    # check if any are small, and [try to] fix those
    (ellsmall,didlowerthresh,didmerge,diddelete) = est.fixsmalldisplay(ellipses,L,dfore)

    if DEBUG_TRACKINGSETTINGS: print 'after fixing small ellipses, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS: print 'ellsmall = ' + str(ellsmall)
    if DEBUG_TRACKINGSETTINGS: print 'didlowerthresh = ' + str(didlowerthresh)
    if DEBUG_TRACKINGSETTINGS: print 'didmerge = ' + str(didmerge)
    if DEBUG_TRACKINGSETTINGS: print 'diddelete = ' + str(diddelete)

    # check if any are large, and [try to] fix those
    (elllarge,didsplit) = est.fixlargedisplay(ellipses,L,dfore)

    if DEBUG_TRACKINGSETTINGS: print 'after fixing large ellipses, ellipses = ' + str(ellipses) + ', len = ' + str(len(ellipses))
    if DEBUG_TRACKINGSETTINGS: print 'elllarge = ' + str(elllarge)
    if DEBUG_TRACKINGSETTINGS: print 'didsplit = ' + str(didsplit)
    if DEBUG_TRACKINGSETTINGS: print 'ellsmall = ' + str(ellsmall)
    if DEBUG_TRACKINGSETTINGS: print 'didlowerthresh = ' + str(didlowerthresh)
    if DEBUG_TRACKINGSETTINGS: print 'didmerge = ' + str(didmerge)
    if DEBUG_TRACKINGSETTINGS: print 'diddelete = ' + str(diddelete)    

    if DEBUG_TRACKINGSETTINGS: print 'returning ellipsescopy = ' + str(ellipsescopy) + ', len = ' + str(len(ellipsescopy))
    if DEBUG_TRACKINGSETTINGS:
        areasum = 0
        for ell in ellipsescopy:
            areasum += ell.area
        print 'summed area of ellipses = ' + str(areasum)
    
    return (ellipsescopy,ellsmall,elllarge,didlowerthresh,didmerge,diddelete,didsplit)