max(bbox_heights) + 2 * padding)

    # make it square (apparently avconv doesn't work correctly with arbitrary frame size...)
    win_size = (max(win_size), max(win_size))

    ### centroids
    cell_centers = np.array([regionprops(mask)[0].centroid for mask in masks])
    smooth_cell_centers = smooth_2D_trajectory(cell_centers)

    ### extract windows and put into big array

    windows = np.empty((len(frames), win_size[0], win_size[1]))
    for frame_num, (frame, center,
                    mask) in enumerate(zip(frames, smooth_cell_centers,
                                           masks)):

        # make boundary bright
        boundary = find_boundaries(mask)
        frame += 0.5 * frame.max() * boundary

        # extract window centered on mask centroid
        i, j = int(round(center[0])), int(round(center[1]))
        ista, jsta = i - win_size[0] / 2, j - win_size[1] / 2
        iend, jend = ista + win_size[0], jsta + win_size[1]
        win = frame[ista:iend, jsta:jend]
        windows[frame_num, :, :] = correct_orientation(win)

    # save to file
    print 'Saving movie to %s.' % out_fn
    write_video(windows, out_fn)
Esempio n. 2
0
    for frame_num, (frame,
                    boundary_pts) in enumerate(zip(frames, all_boundary_pts)):

        boundary_x, boundary_y = interpolate_boundary_pts(boundary_pts)
        mask = measure.grid_points_in_poly(frame.shape, boundary_pts)
        center = measure.regionprops(mask)[0].centroid

        implot.set_data(frame)
        boundary_plot.set_data(boundary_y, boundary_x)
        boundary_pts_plot.set_data(boundary_pts[:, 1], boundary_pts[:, 0])
        center_point.set_data(center[1], center[0])
        plt.title('frame %i' % (frame_num + 1))
        fig.canvas.draw()

    plt.ioff()
    plt.show()

    ### save to file
    if out_fn:
        # cell_label = re.findall(r'\d+', boundaries_fn)[0]
        movie_frames = np.empty_like(frames)
        for frame_num, (frame, boundary_pts) in enumerate(
                zip(frames.copy(), all_boundary_pts)):
            mask = measure.grid_points_in_poly(frame.shape, boundary_pts)
            boundary = find_boundaries(mask)
            frame += 0.5 * frame.max() * boundary
            movie_frames[frame_num, :, :] = correct_orientation(frame)
        # fn = 'cell%i_visualization.avi' % cell_label
        # print 'Saving visualization to', fn
        write_video(movie_frames, out_fn)
    win_size = (max(win_size), max(win_size))


    ### centroids
    cell_centers = np.array([regionprops(mask)[0].centroid for mask in masks])
    smooth_cell_centers = smooth_2D_trajectory(cell_centers)


    ### extract windows and put into big array

    windows = np.empty((len(frames), win_size[0], win_size[1]))
    for frame_num, (frame, center, mask) in enumerate(zip(frames, smooth_cell_centers, masks)):

        # make boundary bright
        boundary = find_boundaries(mask)
        frame += 0.5*frame.max()*boundary

        # extract window centered on mask centroid
        i, j = int(round(center[0])), int(round(center[1]))
        ista, jsta = i-win_size[0]/2, j-win_size[1]/2
        iend, jend = ista+win_size[0], jsta+win_size[1]
        win = frame[ista:iend, jsta:jend]
        windows[frame_num,:,:] = correct_orientation(win)


    # save to file
    print 'Saving movie to %s.' % out_fn
    write_video(windows, out_fn)


    for frame_num, (frame, boundary_pts) in enumerate(zip(frames, all_boundary_pts)):

        boundary_x, boundary_y = interpolate_boundary_pts(boundary_pts)
        mask = measure.grid_points_in_poly(frame.shape, boundary_pts)
        center = measure.regionprops(mask)[0].centroid

        implot.set_data(frame)
        boundary_plot.set_data(boundary_y, boundary_x)
        boundary_pts_plot.set_data(boundary_pts[:,1], boundary_pts[:,0])
        center_point.set_data(center[1], center[0])
        plt.title('frame %i' % (frame_num+1))
        fig.canvas.draw()

    plt.ioff()
    plt.show()


    ### save to file
    if out_fn:
        # cell_label = re.findall(r'\d+', boundaries_fn)[0]
        movie_frames = np.empty_like(frames)
        for frame_num, (frame, boundary_pts) in enumerate(zip(frames.copy(), all_boundary_pts)):
            mask = measure.grid_points_in_poly(frame.shape, boundary_pts)
            boundary = find_boundaries(mask)
            frame += 0.5*frame.max()*boundary
            movie_frames[frame_num,:,:] = correct_orientation(frame)
        # fn = 'cell%i_visualization.avi' % cell_label
        # print 'Saving visualization to', fn
        write_video(movie_frames, out_fn)