def adjust_ground_by_mousemask(ground,mousemask,ground_change_max=10):
    adj_ground = []
    gmask = vidtools.mask_from_vector(ground,mousemask.shape)
    pts = vidtools.points_from_mask(mousemask&gmask)
    for i,last_gpt in enumerate(ground):
        above = sorted([y for x,y in pts if x==i and y <= last_gpt])
        if len(above) > 0 and last_gpt-ground_change_max <= above[-1] < last_gpt:
            adj_ground.append(above[-1])
        else:
            adj_ground.append(last_gpt)
    return adj_ground
def adjust_ground_by_mousemask(ground, mousemask, ground_change_max=10):
    adj_ground = []
    gmask = vidtools.mask_from_vector(ground, mousemask.shape)
    pts = vidtools.points_from_mask(mousemask & gmask)
    for i, last_gpt in enumerate(ground):
        above = sorted([y for x, y in pts if x == i and y <= last_gpt])
        if len(above
               ) > 0 and last_gpt - ground_change_max <= above[-1] < last_gpt:
            adj_ground.append(above[-1])
        else:
            adj_ground.append(last_gpt)
    return adj_ground
    retired_objs = {}
    retired_objs_sizes = {}
    retired_objs_fols = {}

    #init object arcs
    ols,ols_offset,frames_offset,objs,splits,objs_sizes,objs_fols,prelast_avg,prelast_mm,to_retire_objs,to_retire_objs_sizes,to_retire_objs_fols = init_objects(stream,frames,currsum,denom,opts.seglen,cutoff,frames_offset,SHAPE,size_h,size_bins,fol_h,fol_bins,transform=opts.transform,outline_engine=opts.outline_engine)

    if opts.antfarm_config:
        prelast_masked = prelast_avg.copy()
        prelast_masked[prelast_mm] = numpy.mean(prelast_avg[:50,:50])

        print >> sys.stderr, 'find initial ground ...',
        g1 = vidtools.find_ground4(prelast_masked,config['ground_anchors'],be=config['burrow_entrance'])
        print >> sys.stderr, 'done'
        
        groundmask = vidtools.mask_from_vector(numpy.array(g1)+opts.ground_suppress,SHAPE)
        
        grounds = [new_ground(g1,prelast_masked,config['hill_bounds'],improvement=opts.ground_improvement,window=10)]
        digdiffs = []
        newactols = []
        prevactmask = numpy.zeros(SHAPE,dtype=bool)
        
    mousemasks = []
    segavgs = []
    segmasked = []

    i=0

    param_str = '%s-%s_seg%s_%s-%s' % (target_frame_start,target_frame_stop,opts.seglen,thresh_str,opts.video_suffix)
    if opts.video_suffix:
        vidout = opts.vid[:-4]+'_%s.avi' % (param_str)
        fol_h,
        fol_bins,
        transform=opts.transform,
        outline_engine=opts.outline_engine)

    if opts.antfarm_config:
        prelast_masked = prelast_avg.copy()
        prelast_masked[prelast_mm] = numpy.mean(prelast_avg[:50, :50])

        print >> sys.stderr, 'find initial ground ...',
        g1 = vidtools.find_ground4(prelast_masked,
                                   config['ground_anchors'],
                                   be=config['burrow_entrance'])
        print >> sys.stderr, 'done'

        groundmask = vidtools.mask_from_vector(
            numpy.array(g1) + opts.ground_suppress, SHAPE)

        grounds = [
            new_ground(g1,
                       prelast_masked,
                       config['hill_bounds'],
                       improvement=opts.ground_improvement,
                       window=10)
        ]
        digdiffs = []
        newactols = []
        prevactmask = numpy.zeros(SHAPE, dtype=bool)

    mousemasks = []
    segavgs = []
    segmasked = []