def bleb_area(membrane_edge, midpoint_anchor):
    """calculate the area of the drawn bleb, accounting for membrane crossing line joining anchors"""
    poly = membrane_edge.getFloatPolygon()
    xs = [x for x in poly.xpoints]
    ys = [y for y in poly.ypoints]
    rotangle = membrane_edge.getAngle(int(round(xs[0])), int(round(
        ys[0])), int(round(xs[-1])), int(round(ys[-1]))) / 180 * math.pi
    rotY = [(x * math.sin(rotangle) + y * math.cos(rotangle))
            for x, y in zip(xs, ys)]
    rotYmpa = midpoint_anchor[0] * math.sin(
        rotangle) + midpoint_anchor[1] * math.cos(rotangle)
    meanRotY = sum(rotY) / len(rotY)
    seg1 = rotY[:int(round(len(rotY) / 2))]
    seg1.reverse()
    seg2 = rotY[int(round(len(rotY) / 2)):]
    if rotYmpa > rotY[0]:
        idx1 = len(seg1) - seg1.index(min(seg1))
        idx2 = int(round(len(rotY) / 2)) + seg2.index(min(seg2))
    else:
        idx1 = len(seg1) - seg1.index(max(seg1))
        idx2 = int(round(len(rotY) / 2)) + seg2.index(max(seg2))
    area_poly_xs = xs[idx1:idx2 + 1]
    area_poly_ys = ys[idx1:idx2 + 1]
    len_roi = PolygonRoi(area_poly_xs, area_poly_ys, Roi.POLYLINE)
    length = len_roi.getLength()
    area_roi = PolygonRoi(area_poly_xs, area_poly_ys, Roi.POLYGON)
    area = area_roi.getStatistics().area
    #print(area);
    return length, area, area_roi
    membrane_indices_available = [
        membrane['position number'] for membrane in membranes
    ]
    for membrane_index in membrane_indices_available:
        print("Analysing frame " + str(frame_idx) + ", membrane_index = " +
              str(membrane_index))
        membrane_xy_list = membranes[membrane_indices_available.index(
            membrane_index)]['roi']
        roi = PolygonRoi([x for x, y in membrane_xy_list],
                         [y for x, y in membrane_xy_list], Roi.FREELINE)
        imp.setRoi(roi)
        roi.setStrokeWidth(line_width)
        if line_width > 1:
            IJ.run(imp, "Line to Area", "")
            roi = imp.getRoi()
        stats = roi.getStatistics()
        output.append((t, membrane_index, stats.mean, stats.max, stats.min,
                       stats.median, stats.stdDev))
        imp.killRoi()
print(output)

# save output to csv
csv_path = os.path.join(os.path.dirname(edges_file_path),
                        "intensity_stats.csv")
f = open(csv_path, 'wb')
try:
    writer = csv.writer(f)
    writer.writerow([
        "Time, s", "Membrane index", "Mean intensity", "Max intensity",
        "Min intensity", "Median intensity", "Std intensity"
    ])