Login  Register

Re: Skeleton to line

Posted by Mark Krebs-2 on Oct 09, 2017; 2:12pm
URL: http://imagej.273.s1.nabble.com/Skeleton-to-line-tp5019520p5019522.html

Hi Thomas,

I've tried the script below from a thread that seems to have input from multiple contributors on the ImageJ forum (http://forum.imagej.net/t/getting-line-selection-from-longest-skeleton-path/2963) on a Mac 10.9.5 and it seems to work.  You need to change the path name for the file of interest (line "imp = IJ.openImage("/Users/...").  Is that what you're looking for?

The desire to convert a Skeleton to a polyline comes up often enough that I wonder if someone might be interested in including it as part of Analyze>Skeleton>Analyze Skeleton 2D/3D.

Cheers,
Mark

import ij.IJ
import ij.gui.PolygonRoi
import java.awt.Polygon
import sc.fiji.analyzeSkeleton.AnalyzeSkeleton_

// Load Sample image, skeletonize, and zoom for illustration purposes
imp = IJ.openImage("/Users/mpk/Desktop/Gayle PH3 Images/Mask-1.tif")
IJ.run(imp, "Skeletonize (2D/3D)", "")
imp.show()
//IJ.run("Set... ", "zoom=400 x=60 y=77")
//imp.setSlice(50)

// Initialize AnalyzeSkeleton_
skel = new AnalyzeSkeleton_()
skel.calculateShortestPath = true
skel.setup("", imp)
 
// Perform analysis in silent mode
skelResult = skel.run(AnalyzeSkeleton_.NONE, false, true, null, true, false)

// Read the results
shortestPaths = skelResult.getShortestPathList().toArray()
sppoints = skel.getShortestPathPoints()

poly = new Polygon()
for (p in sppoints[0]) {
    poly.addPoint((int)p.x, (int)p.y)
    imp.setRoi(new PolygonRoi(poly, PolygonRoi.POLYLINE))
    IJ.wait(20)    
}

pRoi = new PolygonRoi(poly, PolygonRoi.POLYLINE)
imp.setRoi(pRoi)

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