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 |
Free forum by Nabble | Edit this page |