For a detailed description of the plugin, please visit its Fiji website: http://fiji.sc/AnalyzeSkeleton
This plugin tags all pixel/voxels in a skeleton image and then counts all its junctions, triple points and branches and measures their average and maximum length. The tags are shown in a new window displaying every tag in a different color. See Skeletonize3D for an example of how to produce skeleton images.
The voxels are classified into three different categories depending on their 26 neighbors:
Let's see an example of this classification:
End-point voxels are displayed in blue, slab voxels in orange and junction voxels in purple.
After classification, a “Results” window is displayed showing the number of voxels of every type, branches, junctions and triple points (junctions with exactly 3 branches) and the average and maximum length of branches for every skeleton in the image. AnalyzeSkeleton is able to process up to 2¹⁵-1 (Short.MAX_VALUE) skeletons in one single image.
When calling the plugin, if the “Show detailed information” checkbox is marked, a complementary results table called “Branch information” is shown.
In this table we display all branches information:
The branches are sorted by decreasing length.
Notice here that the number of junction voxels is different from the number of junctions since some junction voxels can be neighbors of each other.
Download AnalyzeSkeleton_-2.0.0-SNAPSHOT.jar in your ImageJ plugins folder and then restart ImageJ or simply apply the command Help>Update Menus. Then, you can call the plugin at Plugins>Skeleton>Analyze Skeleton (2D/3D).
Note that if you download the jar file into a plugins sub-folder, then no Skeleton sub-menu will be created and the Analyze Skeleton (2D/3D) command will appear directly in the corresponding sub-folder menu.
The class files can be downloaded from here:
The source code can be found on GitHub.
If you need to cite the plugin, please do so by citing the following paper:
The shortest path calculation and its applications have been published as:
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation (http://www.gnu.org/licenses/gpl.txt).
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
All changes can be seen in the GitHub source repository.
2010/01/12: Thanks to Peter Marks, fixed bug to visit properly the trees when starting in junctions (they were not being added to the revisit list, what some times made some trees to be split).
2009/12/04: Added quadruple point calculation.
2009/09/13: Removed Log window and created Detailed information option and Branch information table.
2009/09/02: Added capability to detect and prune skeleton cycles.
2009/08/10: Fixed small bug to treat the special case of one single circular skeleton.
2009/08/06: Fixed 2 bugs: calculation of branches between junctions and number of slab voxels in a circular tree.
2009/08/05: Fixed bugs that slowed down the calculation of the number of actual junctions.
2009/06/19: Fixed bugs in some calculations, increased the number of skeletons from 255 to 2¹⁵-1, and added new (previously untreated) cases.
2009/04/07: Added different calculations for every skeleton in the image and some extra information in the log window.
2009/03/05: Added maximum branch length calculation.
2008/11/19: Added triple points calculation and fixed bug to avoid modifying the original image and preserve its calibration in the output image.
2008/11/16: First release.
Since the 2009/09/02 version of the code, the possible cycles or loops in the skeleton can be detected and pruned previous to the analysis. The cycle detection is based on a classical Depth-First Search (DFS) in the skeleton. The only known limitation of this approach is shown in the presence of nested loops. In those cases, a second call to the plugin is usually enough to eliminate all the remaining loops.