コード例 #1
0
def generate_r_image(imp, ring_rois, centres, unwrap_axis, threshold_val):
    """for each point in the projection, calculate the distance to the vessel axis and present as an image"""
    fp = imp.getProcessor()
    fp.setThreshold(threshold_val, fp.maxValue(), FloatProcessor.NO_LUT_UPDATE)
    bp = fp.createMask()
    bp.dilate()
    bp.erode()

    mask_imp = ImagePlus("Mask", bp)
    tile_mask = make_tiled_imp(mask_imp)
    #tile_mask.show();
    #WaitForUserDialog("pasue - generated mask").show();
    mask_imp = do_unwrap(tile_mask, unwrap_axis, imp_title=mask_imp.getTitle())
    #mask_imp.show();
    roi = PolygonRoi([x for (x, y) in unwrap_axis],
                     [y for (x, y) in unwrap_axis], PolygonRoi.POLYLINE)
    mask_imp.setRoi(roi)
    #WaitForUserDialog("pasue - unwrapped").show();
    IJ.run(mask_imp, "Fill Holes", "")
    #WaitForUserDialog("pasue - filled holes").show();
    IJ.run(mask_imp, "Divide...", "value=255")
    #WaitForUserDialog("pasue - scaled to 0-1").show();
    #mask_imp.show();

    r_list = []
    for lidx, (roi, centre) in enumerate(zip(ring_rois, centres)):
        r_sublist = [
            math.sqrt((x - centre[0])**2 + (y - centre[1])**2)
            for x, y in zip(roi.getPolygon().xpoints,
                            roi.getPolygon().ypoints)
        ]
        r_list.append(r_sublist)

    r_imp = ImagePlus("Radii", FloatProcessor([list(x) for x in zip(*r_list)]))
    tile_r_imp = make_tiled_imp(r_imp)
    r_imp = do_unwrap(tile_r_imp, unwrap_axis, imp_title=r_imp.getTitle())
    r_imp = ImageCalculator().run("Multiply create", r_imp, mask_imp)
    IJ.run(r_imp, "Cyan Hot", "")

    return r_imp, mask_imp
コード例 #2
0
 def getPolygon(self):
     xPoints, yPoints = self.getLine()
     newRoi = PolygonRoi(xPoints, yPoints, Roi.POLYLINE)
     return newRoi.getPolygon()