ImageJ macro to split a spline

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

ImageJ macro to split a spline

NinoP-2
Dear All,
I have written a macro that given a strait line, divides it into equal
length segments and also generates a series of perpendicular lines crossing
the start/end point of each segment. The macro is (sorry if it looks very
basic but I am just learning this stuff…):

getLine(x0,y0,x11,y11,width);
dx = x11 -x0;
dy = y11 -y0;
xstep = dx/11;
ystep = dy/11;

// Interpolate segment points
xs=x0 - 1xstep
x1 = x0 + 1xstep;
x2 = x0 + 2xstep;
x3 = x0 + 3xstep;
x4 = x0 + 4xstep;
x5 = x0 + 5xstep;
x6 = x0 + 6xstep;
x7 = x0 + 7xstep;
x8 = x0 + 8xstep;
x9 = x0 + 9xstep;
x10 = x0 + 10xstep;
x11 = x0 + 11xstep;
x12 = x0 + 12xstep;
x13 = x0 + 13xstep
ys=y0 - 1ystep
y1 = y0 + 1ystep;
y2 = y0 + 2ystep;
y3 = y0 + 3ystep;
y4 = y0 + 4ystep;
y5 = y0 + 5ystep;
y6 = y0 + 6ystep;
y7 = y0 + 7ystep;
y8 = y0 + 8ystep;
y9 = y0 + 9ystep;
y10 = y0 + 10ystep;
y11 = y0 + 11ystep;
y12 = y0 + 12ystep;
y13 = y0 + 13ystep;

// Create sections at regular intervals along the strait line

makeLine(xs, ys, x1, y1);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(xs, ys, x3, y3);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x0, y0, x4, y4);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x1, y1, x5, y5);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x2, y2, x6, y6);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x3, y3, x7, y7);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x4, y4, x8, y8);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x5, y5, x9, y9);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x6, y6, x10, y10);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x7, y7, x11, y11);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x8, y8, x12, y12);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x10, y10, x12, y12);
Roi.setStrokeColor(255,126,0);
run(“Rotate…”, “angle=90”);
roiManager(“Add”);

makeLine(x0, y0, x11, y11);
Roi.setStrokeColor(255,126,0);
roiManager(“Add”);
run(“Measure”);

There are cases though where I need to obtain the same result using a
segmented line/polyline. To better “mimic” the shape of the object I want to
measure, I fit a spline to my polyline. And that’s easily done. How can I
split the spline into equal segment and run a perpendicular line at the
begin/end of each of them? Any help is greatly appreciated. That’s what I
pieced together so far:

makeLine(203,212,449,320,872,427);
run("Properties… ", “stroke=red”);
roiManager(‘add’);
run(“Fit Spline”);
run("Properties… ", “stroke=green”);
roiManager(‘add’);
run(“Measure”);

Nino



--
Sent from: http://imagej.1557.x6.nabble.com/

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html